Index: lams_build/lib/lams/lams-gradebook.jar
===================================================================
diff -u -rf9b23e848885c277bcc9de377b94ae3884ce7a6d -r61c706419c438d5ef52d93bda3de1f7c415380ae
Binary files differ
Index: lams_build/lib/lams/lams.jar
===================================================================
diff -u -r4ec3dc2b1fbb913b43418958d45d5eb34842e933 -r61c706419c438d5ef52d93bda3de1f7c415380ae
Binary files differ
Index: lams_central/.classpath
===================================================================
diff -u -r588fe01186ff8c7c5b215e15f5ac4763137e0284 -r61c706419c438d5ef52d93bda3de1f7c415380ae
--- lams_central/.classpath (.../.classpath) (revision 588fe01186ff8c7c5b215e15f5ac4763137e0284)
+++ lams_central/.classpath (.../.classpath) (revision 61c706419c438d5ef52d93bda3de1f7c415380ae)
@@ -33,6 +33,7 @@
+
Index: lams_central/src/java/org/lamsfoundation/lams/webservice/xml/LessonManagerServlet.java
===================================================================
diff -u -r343c20371619a350afb5e1e8a03c752af2fb3127 -r61c706419c438d5ef52d93bda3de1f7c415380ae
--- lams_central/src/java/org/lamsfoundation/lams/webservice/xml/LessonManagerServlet.java (.../LessonManagerServlet.java) (revision 343c20371619a350afb5e1e8a03c752af2fb3127)
+++ lams_central/src/java/org/lamsfoundation/lams/webservice/xml/LessonManagerServlet.java (.../LessonManagerServlet.java) (revision 61c706419c438d5ef52d93bda3de1f7c415380ae)
@@ -30,6 +30,8 @@
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
+import org.lamsfoundation.lams.gradebook.GradebookUserLesson;
+import org.lamsfoundation.lams.gradebook.service.IGradebookService;
import org.lamsfoundation.lams.integration.ExtCourseClassMap;
import org.lamsfoundation.lams.integration.ExtServerOrgMap;
import org.lamsfoundation.lams.integration.ExtUserUseridMap;
@@ -83,6 +85,8 @@
private static IExportToolContentService exportService = null;
private static ILamsCoreToolService toolService = null;
+
+ private static IGradebookService gradebookService = null;
private static IUserManagementService userManagementService = null;
@@ -120,7 +124,6 @@
String lang = request.getParameter(CentralConstants.PARAM_LANG);
String method = request.getParameter(CentralConstants.PARAM_METHOD);
String filePath = request.getParameter(CentralConstants.PARAM_FILEPATH);
- String progressUser = request.getParameter(CentralConstants.PARAM_PROGRESS_USER);
String outputsUser = request.getParameter("outputsUser");
String learnerIds = request.getParameter(CentralConstants.PARAM_LEARNER_IDS);
String monitorIds = request.getParameter(CentralConstants.PARAM_MONITOR_IDS);
@@ -193,9 +196,13 @@
element = getAllStudentProgress(document, serverId, datetime, hashValue, username, lsId, courseId);
} else if (method.equals(CentralConstants.METHOD_SINGLE_STUDENT_PROGRESS)) {
+ String firstName = request.getParameter(LoginRequestDispatcher.PARAM_FIRST_NAME);
+ String lastName = request.getParameter(LoginRequestDispatcher.PARAM_LAST_NAME);
+ String email = request.getParameter(LoginRequestDispatcher.PARAM_EMAIL);
+
lsId = new Long(lsIdStr);
- element = getSingleStudentProgress(document, serverId, datetime, hashValue, username, lsId, courseId,
- progressUser);
+ element = getSingleStudentProgress(document, serverId, datetime, hashValue, username, firstName,
+ lastName, lang, country, email, lsId, courseId);
} else if (method.equals(CentralConstants.METHOD_IMPORT)) {
@@ -212,6 +219,17 @@
element = document.createElement(CentralConstants.ELEM_LESSON);
element.setAttribute(CentralConstants.ATTR_LESSON_ID, lsIdStr);
+
+ } else if (method.equals("gradebookMarksUser")) {
+ lsId = new Long(lsIdStr);
+ element = getGradebookMarks(document, serverId, datetime, hashValue, username, lsId, null, outputsUser);
+
+ } else if (method.equals("gradebookMarksLesson")) {
+ lsId = new Long(lsIdStr);
+ element = getGradebookMarks(document, serverId, datetime, hashValue, username, lsId, null, null);
+
+ } else if (method.equals("gradebookMarksCourse")) {
+ element = getGradebookMarks(document, serverId, datetime, hashValue, username, null, courseId, null);
} else if (method.equals("toolOutputsAllUsers")) {
lsId = new Long(lsIdStr);
@@ -420,11 +438,11 @@
}
public Element getSingleStudentProgress(Document document, String serverId, String datetime, String hashValue,
- String username, long lsId, String courseID, String progressUser) throws RemoteException {
+ String username, String firstName, String lastName, String language, String country, String email,
+ long lsId, String courseID) throws RemoteException {
try {
ExtServerOrgMap serverMap = LessonManagerServlet.integrationService.getExtServerOrgMap(serverId);
Authenticator.authenticate(serverMap, datetime, username, hashValue);
- ExtUserUseridMap userMap = LessonManagerServlet.integrationService.getExtUserUseridMap(serverMap, username);
Lesson lesson = LessonManagerServlet.lessonService.getLesson(lsId);
Element element = document.createElement(CentralConstants.ELEM_LESSON_PROGRESS);
@@ -433,10 +451,14 @@
if (lesson != null) {
int activitiesTotal = lesson.getLearningDesign().getActivities().size();
- ExtUserUseridMap progressUserMap = LessonManagerServlet.integrationService.getExistingExtUserUseridMap(
- serverMap, progressUser);
+ // create new user if required
+ final boolean usePrefix = true;
+ final boolean isUpdateUserDetails = false;
+ ExtUserUseridMap userMap = LessonManagerServlet.integrationService.getImplicitExtUserUseridMap(
+ serverMap, username, firstName, lastName, language, country, email, usePrefix,
+ isUpdateUserDetails);
- LearnerProgress learnProg = LessonManagerServlet.lessonService.getUserProgressForLesson(progressUserMap
+ LearnerProgress learnProg = LessonManagerServlet.lessonService.getUserProgressForLesson(userMap
.getUser().getUserId(), lsId);
Element learnerProgElem = document.createElement(CentralConstants.ELEM_LEARNER_PROGRESS);
@@ -457,9 +479,9 @@
learnerProgElem.setAttribute(CentralConstants.ATTR_ACTIVITIES_ATTEMPTED, ""
+ attemptedActivities);
// learnerProgElem.setAttribute(CentralConstants.ATTR_CURRENT_ACTIVITY , currActivity);
- learnerProgElem.setAttribute(CentralConstants.ATTR_STUDENT_ID, "" + progressUserMap.getSid());
+ learnerProgElem.setAttribute(CentralConstants.ATTR_STUDENT_ID, "" + userMap.getSid());
learnerProgElem.setAttribute(CentralConstants.ATTR_COURSE_ID, courseID);
- learnerProgElem.setAttribute(CentralConstants.ATTR_USERNAME, progressUser);
+ learnerProgElem.setAttribute(CentralConstants.ATTR_USERNAME, username);
learnerProgElem.setAttribute(CentralConstants.ATTR_LESSON_ID, "" + lsId);
}
} else {
@@ -469,9 +491,9 @@
learnerProgElem.setAttribute(CentralConstants.ATTR_ACTIVITIES_COMPLETED, "0");
learnerProgElem.setAttribute(CentralConstants.ATTR_ACTIVITIES_ATTEMPTED, "0");
// learnerProgElem.setAttribute(CentralConstants.ATTR_CURRENT_ACTIVITY , currActivity);
- learnerProgElem.setAttribute(CentralConstants.ATTR_STUDENT_ID, "" + progressUserMap.getSid());
+ learnerProgElem.setAttribute(CentralConstants.ATTR_STUDENT_ID, "" + userMap.getSid());
learnerProgElem.setAttribute(CentralConstants.ATTR_COURSE_ID, courseID);
- learnerProgElem.setAttribute(CentralConstants.ATTR_USERNAME, progressUser);
+ learnerProgElem.setAttribute(CentralConstants.ATTR_USERNAME, username);
learnerProgElem.setAttribute(CentralConstants.ATTR_LESSON_ID, "" + lsId);
}
}
@@ -613,6 +635,9 @@
LessonManagerServlet.toolService = (ILamsCoreToolService) WebApplicationContextUtils
.getRequiredWebApplicationContext(getServletContext()).getBean("lamsCoreToolService");
+
+ LessonManagerServlet.gradebookService = (IGradebookService) WebApplicationContextUtils
+ .getRequiredWebApplicationContext(getServletContext()).getBean("gradebookService");
LessonManagerServlet.userManagementService = (IUserManagementService) WebApplicationContextUtils
.getRequiredWebApplicationContext(getServletContext()).getBean("userManagementService");
@@ -792,7 +817,132 @@
}
}
+
+ /**
+ * This method gets the tool outputs for a lesson or a specific user and returns them in XML format.
+ *
+ * @param document
+ * @param serverId
+ * @param datetime
+ * @param hashValue
+ * @param username
+ * @param lessonId
+ * @param courseID
+ * @param outputsUser
+ * if outputsUser is null return results for the whole lesson, otherwise - for the specified learner
+ * @return
+ * @throws Exception
+ */
+ @SuppressWarnings("unchecked")
+ public Element getGradebookMarks(Document document, String serverId, String datetime, String hashValue,
+ String username, Long lessonIdParam, String courseId, String outputsUser)
+ throws Exception {
+ ExtServerOrgMap serverMap = LessonManagerServlet.integrationService.getExtServerOrgMap(serverId);
+ Authenticator.authenticate(serverMap, datetime, username, hashValue);
+
+ List lessons = new LinkedList();
+ if (courseId != null) {
+
+ ExtCourseClassMap orgMap = LessonManagerServlet.integrationService.getExtCourseClassMap(serverMap.getSid(),
+ courseId);
+ if (orgMap == null) {
+ LessonManagerServlet.log.debug("No course exists for: " + courseId
+ + ". Cannot get tool outputs report.");
+ throw new Exception("Course with courseId: " + courseId + " could not be found");
+ }
+ Integer organisationId = orgMap.getOrganisation().getOrganisationId();
+
+ lessons.addAll(lessonService.getLessonsByGroup(organisationId));
+
+ } else {
+ Lesson lesson = LessonManagerServlet.lessonService.getLesson(lessonIdParam);
+ if (lesson == null) {
+ LessonManagerServlet.log.debug("No lesson exists for: " + lessonIdParam
+ + ". Cannot get tool outputs report.");
+ throw new Exception("Lesson with lessonID: " + lessonIdParam + " could not be found for learner progresses");
+ }
+ lessons.add(lesson);
+ }
+
+ // Create the root node of the xml document
+ Element gradebookMarksElement = document.createElement("GradebookMarks");
+
+ for (Lesson lesson : lessons) {
+ Long lessonId = lesson.getLessonId();
+ Element lessonElement = document.createElement(CentralConstants.ELEM_LESSON);
+ lessonElement.setAttribute(CentralConstants.ATTR_LESSON_ID, "" + lessonId);
+ lessonElement.setAttribute("lessonName", lesson.getLessonName());
+
+ // calculate lesson's MaxPossibleMark
+ Set activities = getLessonActivities(lesson);
+ Long lessonMaxPossibleMark = 0L;
+ for (ToolActivity activity : activities) {
+ Long activityMaxPossibleMark = LessonManagerServlet.toolService.getActivityMaxPossibleMark(activity);
+ if (activityMaxPossibleMark != null) {
+ lessonMaxPossibleMark += activityMaxPossibleMark;
+ }
+ }
+ lessonElement.setAttribute("lessonMaxPossibleMark", lessonMaxPossibleMark.toString());
+
+ //get gradebook marks from DB
+ List gradebookUserLessons = new LinkedList();
+ // if outputsUser is null we build results for the whole lesson, otherwise - for the specified learner
+ if (outputsUser != null) {
+
+ ExtUserUseridMap userMap = LessonManagerServlet.integrationService.getExistingExtUserUseridMap(
+ serverMap, outputsUser);
+ if (userMap == null) {
+ throw new Exception("No user exists for: " + outputsUser + ". Cannot get tool outputs report.");
+ }
+ User user = userMap.getUser();
+ Integer userId = user.getUserId();
+
+ GradebookUserLesson gradebookUserLesson = gradebookService.getGradebookUserLesson(lessonId, userId);
+ if (gradebookUserLesson == null) {
+ gradebookUserLesson = new GradebookUserLesson(lesson, user);
+ }
+ gradebookUserLessons.add(gradebookUserLesson);
+
+ } else {
+ gradebookUserLessons.addAll(gradebookService.getGradebookUserLesson(lessonId));
+ LessonManagerServlet.log.debug("Getting tool ouputs report for: " + lessonId
+ + ". With learning design: " + lesson.getLearningDesign().getLearningDesignId());
+ }
+
+ List allUsers = integrationService.getExtUserUseridMapByServerMap(serverMap);
+
+ for (GradebookUserLesson gradebookUserLesson : gradebookUserLessons) {
+ Integer userId = gradebookUserLesson.getLearner().getUserId();
+
+ //find user
+ ExtUserUseridMap extUser = null;
+ for (ExtUserUseridMap extUserIter : allUsers) {
+ if (extUserIter.getUser().getUserId().equals(userId)) {
+ extUser = extUserIter;
+ break;
+ }
+ }
+
+ if (extUser == null) {
+ throw new Exception("User with userId: " + userId + " doesn't belong to extServer: "
+ + serverMap.getSid());
+ }
+
+ Element learnerElement = document.createElement("Learner");
+ learnerElement.setAttribute("extUsername", extUser.getExtUsername());
+ String userTotalMark = gradebookUserLesson.getMark() == null ? "" : gradebookUserLesson.getMark().toString();
+ learnerElement.setAttribute("userTotalMark", userTotalMark);
+
+ lessonElement.appendChild(learnerElement);
+ }
+
+ gradebookMarksElement.appendChild(lessonElement);
+ }
+
+ return gradebookMarksElement;
+ }
+
/**
* This method gets the tool outputs for a lesson or a specific user and returns them in XML format.
*
Index: lams_common/src/java/org/lamsfoundation/lams/gradebook/dao/IGradebookDAO.java
===================================================================
diff -u -r72e01661ffe932634adbe4b229d9ee44d6928a45 -r61c706419c438d5ef52d93bda3de1f7c415380ae
--- lams_common/src/java/org/lamsfoundation/lams/gradebook/dao/IGradebookDAO.java (.../IGradebookDAO.java) (revision 72e01661ffe932634adbe4b229d9ee44d6928a45)
+++ lams_common/src/java/org/lamsfoundation/lams/gradebook/dao/IGradebookDAO.java (.../IGradebookDAO.java) (revision 61c706419c438d5ef52d93bda3de1f7c415380ae)
@@ -18,38 +18,39 @@
*
* http://www.gnu.org/licenses/gpl.txt
* ****************************************************************
- */
-
-/* $Id$ */
-package org.lamsfoundation.lams.gradebook.dao;
+ */
+/* $Id$ */
+package org.lamsfoundation.lams.gradebook.dao;
+
import java.util.List;
import org.lamsfoundation.lams.dao.IBaseDAO;
import org.lamsfoundation.lams.gradebook.GradebookUserActivity;
import org.lamsfoundation.lams.gradebook.GradebookUserLesson;
-
-public interface IGradebookDAO extends IBaseDAO{
-
- public GradebookUserLesson getGradebookUserDataForLesson(Long lessonID, Integer userID);
-
- public GradebookUserActivity getGradebookUserDataForActivity(Long activityID, Integer userID);
-
- public Double getGradebookUserActivityMarkSum(Long lessonID, Integer userID);
-
- public List getAllGradebookUserActivitiesForActivity(Long activityID);
-
- public Double getAverageMarkForLesson(Long lessonID);
-
- public long getAverageDurationLesson(Long lessonID);
-
- public long getAverageDurationForActivity(Long activityID);
-
- public Double getAverageMarkForActivity(Long activityID);
-
- public Double getAverageMarkForGroupedActivity(Long activityID, Long groupID);
-
- public long getAverageDurationForGroupedActivity(Long activityID, Long groupID);
+public interface IGradebookDAO extends IBaseDAO {
+
+ GradebookUserLesson getGradebookUserDataForLesson(Long lessonID, Integer userID);
+
+ List getGradebookUserDataForLesson(Long lessonID);
+
+ GradebookUserActivity getGradebookUserDataForActivity(Long activityID, Integer userID);
+
+ Double getGradebookUserActivityMarkSum(Long lessonID, Integer userID);
+
+ List getAllGradebookUserActivitiesForActivity(Long activityID);
+
+ Double getAverageMarkForLesson(Long lessonID);
+
+ long getAverageDurationLesson(Long lessonID);
+
+ long getAverageDurationForActivity(Long activityID);
+
+ Double getAverageMarkForActivity(Long activityID);
+
+ Double getAverageMarkForGroupedActivity(Long activityID, Long groupID);
+
+ long getAverageDurationForGroupedActivity(Long activityID, Long groupID);
+
}
-
Index: lams_common/src/java/org/lamsfoundation/lams/gradebook/dao/hibernate/GradebookDAO.java
===================================================================
diff -u -ra8bfd24410deb4e2837ce3c966adaac7ea869186 -r61c706419c438d5ef52d93bda3de1f7c415380ae
--- lams_common/src/java/org/lamsfoundation/lams/gradebook/dao/hibernate/GradebookDAO.java (.../GradebookDAO.java) (revision a8bfd24410deb4e2837ce3c966adaac7ea869186)
+++ lams_common/src/java/org/lamsfoundation/lams/gradebook/dao/hibernate/GradebookDAO.java (.../GradebookDAO.java) (revision 61c706419c438d5ef52d93bda3de1f7c415380ae)
@@ -40,6 +40,9 @@
private static final String GET_GRADEBOOK_USER_LESSON = "from GradebookUserLesson gles where "
+ "gles.learner.userId=:userID and gles.lesson.lessonId=:lessonID";
+
+ private static final String GET_GRADEBOOK_USER_LESSONS = "from GradebookUserLesson gles where "
+ + "gles.lesson.lessonId=:lessonID";
private static final String GET_GRADEBOOK_ACTIVITIES_FROM_LESSON_SUM = "select sum(gact.mark) from GradebookUserActivity gact where " +
"gact.learner=:userID and gact.activity in (select distinct tses.toolActivity from ToolSession tses where tses.lesson=:lessonID)";
@@ -89,8 +92,15 @@
}
return null;
-
}
+
+ @SuppressWarnings("unchecked")
+ public List getGradebookUserDataForLesson(Long lessonID) {
+ List result = getSession().createQuery(GET_GRADEBOOK_USER_LESSONS).setLong("lessonID", lessonID.longValue())
+ .list();
+
+ return result;
+ }
@SuppressWarnings("unchecked")
public Double getGradebookUserActivityMarkSum(Long lessonID, Integer userID) {
Index: lams_common/src/java/org/lamsfoundation/lams/integration/service/IIntegrationService.java
===================================================================
diff -u -ra4102d6aaf60f794f067e12b10bfafdadf26a703 -r61c706419c438d5ef52d93bda3de1f7c415380ae
--- lams_common/src/java/org/lamsfoundation/lams/integration/service/IIntegrationService.java (.../IIntegrationService.java) (revision a4102d6aaf60f794f067e12b10bfafdadf26a703)
+++ lams_common/src/java/org/lamsfoundation/lams/integration/service/IIntegrationService.java (.../IIntegrationService.java) (revision 61c706419c438d5ef52d93bda3de1f7c415380ae)
@@ -69,6 +69,17 @@
*/
ExtUserUseridMap getExtUserUseridMap(ExtServerOrgMap serverMap, String extUsername)
throws UserInfoFetchException, UserInfoValidationException;
+
+ /**
+ * Returns ExtUserUseridMap from DB, and null if it doesn't exist
+ *
+ * @param serverMap
+ * @param userId
+ * @return
+ */
+ // ExtUserUseridMap getExtUserUseridMapByUserId(ExtServerOrgMap serverMap, Integer userId);
+
+ List getExtUserUseridMapByServerMap(ExtServerOrgMap serverMap);
/**
* Returns ExtUserUseridMap from DB, and null if it doesn't exist
@@ -83,6 +94,15 @@
ExtServerOrgMap getExtServerOrgMap(Integer sid);
ExtServerOrgMap getExtServerOrgMap(String serverId);
+
+ /**
+ * Returns ExtCourseClassMap. If ExtCourseClassMap doesn't existent - returns null and does not create a new ExtCourseClassMap.
+ *
+ * @param extServerOrgMapId
+ * @param extCourseId
+ * @return ExtCourseClassMap if it exists, null otherwise
+ */
+ ExtCourseClassMap getExtCourseClassMap(Integer extServerOrgMapId, String extCourseId);
/**
* @param serverMap
Index: lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java
===================================================================
diff -u -ra4102d6aaf60f794f067e12b10bfafdadf26a703 -r61c706419c438d5ef52d93bda3de1f7c415380ae
--- lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java (.../IntegrationService.java) (revision a4102d6aaf60f794f067e12b10bfafdadf26a703)
+++ lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java (.../IntegrationService.java) (revision 61c706419c438d5ef52d93bda3de1f7c415380ae)
@@ -89,6 +89,7 @@
this.service = service;
}
+ @Override
public ExtServerOrgMap getExtServerOrgMap(String serverId) {
List list = service.findByProperty(ExtServerOrgMap.class, "serverid", serverId);
if (list == null || list.size() == 0) {
@@ -97,7 +98,21 @@
return (ExtServerOrgMap) list.get(0);
}
}
+
+ @Override
+ public ExtCourseClassMap getExtCourseClassMap(Integer extServerOrgMapId, String extCourseId) {
+ Map properties = new HashMap();
+ properties.put("courseid", extCourseId);
+ properties.put("extServerOrgMap.sid", extServerOrgMapId);
+ List list = service.findByProperties(ExtCourseClassMap.class, properties);
+ if (list == null || list.size() == 0) {
+ return null;
+ } else {
+ return (ExtCourseClassMap) list.get(0);
+ }
+ }
+
// wrapper method for compatibility with original integration modules
public ExtCourseClassMap getExtCourseClassMap(ExtServerOrgMap serverMap, ExtUserUseridMap userMap,
String extCourseId, String countryIsoCode, String langIsoCode, String prettyCourseName, String method,
@@ -132,50 +147,45 @@
public ExtCourseClassMap getExtCourseClassMap(ExtServerOrgMap serverMap, ExtUserUseridMap userMap,
String extCourseId, String extCourseName, String countryIsoCode, String langIsoCode, String parentOrgId,
Boolean isTeacher, Boolean prefix) throws UserInfoValidationException {
- ExtCourseClassMap map;
Organisation org;
User user = userMap.getUser();
- Map properties = new HashMap();
- properties.put("courseid", extCourseId);
- properties.put("extServerOrgMap.sid", serverMap.getSid());
- List mapList = service.findByProperties(ExtCourseClassMap.class, properties);
- if (mapList == null || mapList.size() == 0) {
+ ExtCourseClassMap extCourseClassMap = getExtCourseClassMap(serverMap.getSid(), extCourseId);
+ if (extCourseClassMap == null) {
//create new ExtCourseClassMap
org = createOrganisation(serverMap, user, extCourseId, extCourseName, countryIsoCode,
langIsoCode, parentOrgId, prefix);
- map = new ExtCourseClassMap();
- map.setCourseid(extCourseId);
- map.setExtServerOrgMap(serverMap);
- map.setOrganisation(org);
- service.save(map);
+ extCourseClassMap = new ExtCourseClassMap();
+ extCourseClassMap.setCourseid(extCourseId);
+ extCourseClassMap.setExtServerOrgMap(serverMap);
+ extCourseClassMap.setOrganisation(org);
+ service.save(extCourseClassMap);
} else {
- map = mapList.get(0);
- org = map.getOrganisation();
+ org = extCourseClassMap.getOrganisation();
// update external course name if if has changed
String requestedCourseName = prefix ? buildName(serverMap.getPrefix(), extCourseName) : extCourseName;
if (extCourseName != null && !org.getName().equals(requestedCourseName)) {
-
- //validate org name
+
+ // validate org name
if (!ValidationUtil.isOrgNameValid(requestedCourseName)) {
throw new UserInfoValidationException(
"Can't create organisation due to validation error: "
+ "organisation name cannot contain any of these characters < > ^ * @ % $. External server:"
+ serverMap.getServerid() + ", orgId:" + extCourseId + ", orgName:"
+ requestedCourseName);
}
-
+
org.setName(requestedCourseName);
service.updateOrganisationandWorkspaceNames(org);
}
}
updateUserRoles(user, org, isTeacher);
- return map;
+ return extCourseClassMap;
}
private void updateUserRoles(User user, Organisation org, Boolean isTeacher) {
@@ -204,6 +214,13 @@
}
}
}
+
+ public List getExtUserUseridMapByServerMap(ExtServerOrgMap serverMap) {
+ Map properties = new HashMap();
+ properties.put("extServerOrgMap.sid", serverMap.getSid());
+ List list = service.findByProperties(ExtUserUseridMap.class, properties);
+ return list;
+ }
@Override
public ExtUserUseridMap getExtUserUseridMap(ExtServerOrgMap serverMap, String extUsername, boolean prefix)
@@ -540,7 +557,7 @@
if (extServerLesson != null && StringUtils.isNotBlank(extServerLesson.getExtServer().getLessonFinishUrl())) {
ExtServerOrgMap serverMap = extServerLesson.getExtServer();
- ExtUserUseridMap extUserUseridMap = getExistingExtUserUseridMap(serverMap, user);
+ ExtUserUseridMap extUserUseridMap = getExtUserUseridMapByUserId(serverMap, user.getUserId());
if (extUserUseridMap != null) {
String extUsername = extUserUseridMap.getExtUsername();
@@ -571,10 +588,10 @@
}
}
- private ExtUserUseridMap getExistingExtUserUseridMap(ExtServerOrgMap serverMap, User user) {
+ private ExtUserUseridMap getExtUserUseridMapByUserId(ExtServerOrgMap serverMap, Integer userId) {
Map properties = new HashMap();
properties.put("extServerOrgMap.sid", serverMap.getSid());
- properties.put("user.userId", user.getUserId());
+ properties.put("user.userId", userId);
List list = service.findByProperties(ExtUserUseridMap.class, properties);
if (list == null || list.size() == 0) {
return null;
Index: lams_common/src/java/org/lamsfoundation/lams/tool/service/ILamsCoreToolService.java
===================================================================
diff -u -r093df66baaeb89432c9e5a0351c8fb91cc4a13ac -r61c706419c438d5ef52d93bda3de1f7c415380ae
--- lams_common/src/java/org/lamsfoundation/lams/tool/service/ILamsCoreToolService.java (.../ILamsCoreToolService.java) (revision 093df66baaeb89432c9e5a0351c8fb91cc4a13ac)
+++ lams_common/src/java/org/lamsfoundation/lams/tool/service/ILamsCoreToolService.java (.../ILamsCoreToolService.java) (revision 61c706419c438d5ef52d93bda3de1f7c415380ae)
@@ -255,6 +255,14 @@
*/
SortedMap getOutputFromTool(List names, ToolSession toolSession,
Integer learnerId) throws ToolException;
+
+ /**
+ * Get activity's max possible mark.
+ *
+ * @param activity
+ * @return activity's max possible mark if available, null otherwise
+ */
+ Long getActivityMaxPossibleMark(ToolActivity activity);
/**
* Update the tool session data.
Index: lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsCoreToolService.java
===================================================================
diff -u -r093df66baaeb89432c9e5a0351c8fb91cc4a13ac -r61c706419c438d5ef52d93bda3de1f7c415380ae
--- lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsCoreToolService.java (.../LamsCoreToolService.java) (revision 093df66baaeb89432c9e5a0351c8fb91cc4a13ac)
+++ lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsCoreToolService.java (.../LamsCoreToolService.java) (revision 61c706419c438d5ef52d93bda3de1f7c415380ae)
@@ -32,6 +32,7 @@
import org.apache.log4j.Logger;
import org.lamsfoundation.lams.learningdesign.Activity;
+import org.lamsfoundation.lams.learningdesign.ActivityEvaluation;
import org.lamsfoundation.lams.learningdesign.ToolActivity;
import org.lamsfoundation.lams.lesson.Lesson;
import org.lamsfoundation.lams.tool.SystemTool;
@@ -462,7 +463,44 @@
throw new ToolException(message, e);
}
}
+
+ @Override
+ public Long getActivityMaxPossibleMark(ToolActivity activity) {
+ SortedMap map = getOutputDefinitionsFromTool(activity.getToolContentId(),
+ ToolOutputDefinition.DATA_OUTPUT_DEFINITION_TYPE_CONDITION);
+ Set actEvals = activity.getActivityEvaluations();
+
+ if (map != null) {
+ for (String key : map.keySet()) {
+ ToolOutputDefinition definition = map.get(key);
+ if (actEvals != null && actEvals.size() > 0) {
+
+ // get first evaluation
+ ActivityEvaluation actEval = actEvals.iterator().next();
+
+ if (actEval.getToolOutputDefinition().equals(key)) {
+
+ Object upperLimit = definition.getEndValue();
+ if (upperLimit != null && upperLimit instanceof Long) {
+ return (Long) upperLimit;
+ }
+ break;
+ }
+ } else {
+ if (definition.isDefaultGradebookMark() != null && definition.isDefaultGradebookMark()) {
+ Object upperLimit = definition.getEndValue();
+ if (upperLimit != null && upperLimit instanceof Long) {
+ return (Long) upperLimit;
+ }
+ break;
+ }
+ }
+ }
+ }
+ return null;
+ }
+
@Override
public void updateToolSession(ToolSession toolSession) {
toolSessionDAO.updateToolSession(toolSession);
Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java
===================================================================
diff -u -r350e490840216cd99021791b2c6de5be0f2a13a3 -r61c706419c438d5ef52d93bda3de1f7c415380ae
--- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision 350e490840216cd99021791b2c6de5be0f2a13a3)
+++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision 61c706419c438d5ef52d93bda3de1f7c415380ae)
@@ -115,6 +115,7 @@
private MessageService messageService;
private IAuditService auditService;
+ @Override
@SuppressWarnings("unchecked")
public List getGBActivityRowsForLearner(Lesson lesson, User learner) {
@@ -138,7 +139,7 @@
GBActivityGridRowDTO activityDTO = new GBActivityGridRowDTO(activity, groupName, groupId);
// Set the possible marks if applicable
- activityDTO.setMarksAvailable(this.getTotalMarksAvailable(activity));
+ activityDTO.setMarksAvailable(toolService.getActivityMaxPossibleMark(activity));
GradebookUserActivity gradebookActivity = gradebookDAO.getGradebookUserDataForActivity(
activity.getActivityId(), learner.getUserId());
@@ -178,6 +179,7 @@
return gradebookActivityDTOs;
}
+ @Override
@SuppressWarnings("unchecked")
public List getGBActivityRowsForLesson(Lesson lesson) {
@@ -210,6 +212,7 @@
return gradebookActivityDTOs;
}
+ @Override
@SuppressWarnings("unchecked")
public List getGBUserRowsForActivity(Lesson lesson, ToolActivity activity, Long groupId) {
@@ -230,12 +233,12 @@
if (learners != null) {
Map userToLearnerProgressMap = getUserToLearnerProgressMap(lesson);
Map userToGradebookUserLessonMap = getUserToGradebookUserActivityMap(activity);
- Long totalMarksAvailable = getTotalMarksAvailable(activity);
+ Long maxPossibleMark = toolService.getActivityMaxPossibleMark(activity);
for (User learner : learners) {
GBUserGridRowDTO gUserDTO = new GBUserGridRowDTO(learner);
- gUserDTO.setMarksAvailable(totalMarksAvailable);
+ gUserDTO.setMarksAvailable(maxPossibleMark);
// Set the progress
LearnerProgress learnerProgress = userToLearnerProgressMap.get(learner.getUserId());
@@ -272,6 +275,7 @@
return gradebookUserDTOs;
}
+ @Override
@SuppressWarnings("unchecked")
public ArrayList getGBUserRowsForLesson(Lesson lesson) {
@@ -320,6 +324,7 @@
return gradebookUserDTOs;
}
+ @Override
public ArrayList getGBUserRowsForOrganisation(Organisation organisation) {
ArrayList gradebookUserDTOs = new ArrayList();
@@ -341,14 +346,22 @@
}
+ @Override
public GradebookUserLesson getGradebookUserLesson(Long lessonID, Integer userID) {
return gradebookDAO.getGradebookUserDataForLesson(lessonID, userID);
}
+
+ @Override
+ public List getGradebookUserLesson(Long lessonID) {
+ return gradebookDAO.getGradebookUserDataForLesson(lessonID);
+ }
+ @Override
public GradebookUserActivity getGradebookUserActivity(Long activityID, Integer userID) {
return gradebookDAO.getGradebookUserDataForActivity(activityID, userID);
}
+ @Override
public Double getAverageMarkForActivity(Long activityID, Long groupID) {
// return AverageMarkForActivity if groupId is null and AverageMarkForGroupedActivity if groupId is specified
Double averageMark;
@@ -360,10 +373,12 @@
return averageMark;
}
+ @Override
public Double getAverageMarkForLesson(Long lessonID) {
return gradebookDAO.getAverageMarkForLesson(lessonID);
}
+ @Override
public void updateUserLessonGradebookMark(Lesson lesson, User learner, Double mark) {
if (lesson != null && learner != null) {
GradebookUserLesson gradebookUserLesson = gradebookDAO.getGradebookUserDataForLesson(lesson.getLessonId(),
@@ -386,6 +401,7 @@
}
}
+ @Override
public void updateUserActivityGradebookMark(Lesson lesson, User learner, Activity activity, Double mark,
Boolean markedInGradebook, boolean isAuditLogRequired) {
if (lesson != null && activity != null && learner != null && activity.isToolActivity()) {
@@ -429,6 +445,7 @@
}
}
+ @Override
public void updateUserLessonGradebookFeedback(Lesson lesson, User learner, String feedback) {
GradebookUserLesson gradebookUserLesson = gradebookDAO.getGradebookUserDataForLesson(lesson.getLessonId(),
@@ -442,6 +459,7 @@
gradebookDAO.insertOrUpdate(gradebookUserLesson);
}
+ @Override
public void updateUserActivityGradebookFeedback(Activity activity, User learner, String feedback) {
GradebookUserActivity gradebookUserActivity = gradebookDAO.getGradebookUserDataForActivity(
@@ -472,6 +490,7 @@
auditService.log(monitor, GradebookConstants.MODULE_NAME, message);
}
+ @Override
@SuppressWarnings("unchecked")
public List getGBLessonRows(Organisation organisation, User user, User viewer, GBGridView view) {
List lessonRows = new ArrayList();
@@ -627,6 +646,7 @@
return activityToUserDTOMap;
}
+ @Override
@SuppressWarnings("unchecked")
public LinkedHashMap exportLessonGradebook(Lesson lesson) {
@@ -817,6 +837,7 @@
return dataToExport;
}
+ @Override
@SuppressWarnings("unchecked")
public LinkedHashMap exportCourseGradebook(Integer userId, Integer organisationId) {
LinkedHashMap dataToExport = new LinkedHashMap();
@@ -1085,6 +1106,7 @@
return dataToExport;
}
+ @Override
public void updateActivityMark(Double mark, String feedback, Integer userID, Long toolSessionID,
Boolean markedInGradebook) {
ToolSession toolSession = toolService.getToolSessionById(toolSessionID);
@@ -1102,6 +1124,7 @@
}
}
+ @Override
public Activity getActivityById(Long activityID) {
return activityDAO.getActivityByActivityId(activityID);
}
@@ -1264,7 +1287,7 @@
}
// Set the possible marks if applicable
- activityDTO.setMarksAvailable(this.getTotalMarksAvailable(activity));
+ activityDTO.setMarksAvailable(toolService.getActivityMaxPossibleMark(activity));
String monitorUrl = Configuration.get(ConfigurationKeys.SERVER_URL) + activity.getTool().getMonitorUrl() + "?"
+ AttributeNames.PARAM_CONTENT_FOLDER_ID + "=" + lesson.getLearningDesign().getContentFolderID() + "&"
@@ -1427,48 +1450,6 @@
}
/**
- * Gets the
- *
- * @param activity
- * @return
- */
- private Long getTotalMarksAvailable(ToolActivity activity) {
- SortedMap map = toolService.getOutputDefinitionsFromTool(
- activity.getToolContentId(), ToolOutputDefinition.DATA_OUTPUT_DEFINITION_TYPE_CONDITION);
-
- Set actEvals = activity.getActivityEvaluations();
-
- if (map != null) {
- for (String key : map.keySet()) {
- ToolOutputDefinition definition = map.get(key);
- if (actEvals != null && actEvals.size() > 0) {
-
- // get first evaluation
- ActivityEvaluation actEval = actEvals.iterator().next();
-
- if (actEval.getToolOutputDefinition().equals(key)) {
-
- Object upperLimit = definition.getEndValue();
- if (upperLimit != null && upperLimit instanceof Long) {
- return (Long) upperLimit;
- }
- break;
- }
- } else {
- if (definition.isDefaultGradebookMark() != null && definition.isDefaultGradebookMark()) {
- Object upperLimit = definition.getEndValue();
- if (upperLimit != null && upperLimit instanceof Long) {
- return (Long) upperLimit;
- }
- break;
- }
- }
- }
- }
- return null;
- }
-
- /**
* Returns map containing (userId -> LearnerProgressMap) pairs. It serves merely for optimizing amount of db
* queries.
*/
@@ -1520,7 +1501,7 @@
Map map = new HashMap();
for (ToolActivity activity : activities) {
- map.put(activity.getActivityId(), getTotalMarksAvailable(activity));
+ map.put(activity.getActivityId(), toolService.getActivityMaxPossibleMark(activity));
}
return map;
@@ -1593,11 +1574,12 @@
return new HashMap();
}
+ @Override
public String getMessage(String key) {
return messageService.getMessage(key);
}
- public String getMessage(String key, Object[] args) {
+ private String getMessage(String key, Object[] args) {
return messageService.getMessage(key, args);
}