Index: lams_build/lib/lams/lams-gradebook.jar =================================================================== RCS file: /usr/local/cvsroot/lams_build/lib/lams/lams-gradebook.jar,v diff -u -r1.1 -r1.1.2.1 Binary files differ Index: lams_build/lib/lams/lams-learning.jar =================================================================== RCS file: /usr/local/cvsroot/lams_build/lib/lams/lams-learning.jar,v diff -u -r1.45 -r1.45.4.1 Binary files differ Index: lams_build/lib/lams/lams.jar =================================================================== RCS file: /usr/local/cvsroot/lams_build/lib/lams/lams.jar,v diff -u -r1.324 -r1.324.2.1 Binary files differ Index: lams_common/src/java/org/lamsfoundation/lams/beanRefContext.xml =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/beanRefContext.xml,v diff -u -r1.5 -r1.5.2.1 --- lams_common/src/java/org/lamsfoundation/lams/beanRefContext.xml 9 Apr 2009 05:05:39 -0000 1.5 +++ lams_common/src/java/org/lamsfoundation/lams/beanRefContext.xml 22 Apr 2009 06:39:05 -0000 1.5.2.1 @@ -47,6 +47,7 @@ /org/lamsfoundation/lams/web/webApplicationContext.xml /org/lamsfoundation/lams/integrationContext.xml /org/lamsfoundation/lams/usermanagement/ldapContext.xml + /org/lamsfoundation/lams/gradebook/gradebookApplicationContext.xml Index: lams_gradebook/.classpath =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/.classpath,v diff -u -r1.1 -r1.1.2.1 --- lams_gradebook/.classpath 9 Apr 2009 04:55:57 -0000 1.1 +++ lams_gradebook/.classpath 22 Apr 2009 06:39:06 -0000 1.1.2.1 @@ -8,6 +8,6 @@ - + Index: lams_gradebook/build.xml =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/build.xml,v diff -u -r1.1.2.1 -r1.1.2.2 --- lams_gradebook/build.xml 14 Apr 2009 06:18:51 -0000 1.1.2.1 +++ lams_gradebook/build.xml 22 Apr 2009 06:39:06 -0000 1.1.2.2 @@ -217,6 +217,8 @@ + + Index: lams_gradebook/conf/xdoclet/web-settings.xml =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/conf/xdoclet/web-settings.xml,v diff -u -r1.1 -r1.1.2.1 --- lams_gradebook/conf/xdoclet/web-settings.xml 9 Apr 2009 04:55:56 -0000 1.1 +++ lams_gradebook/conf/xdoclet/web-settings.xml 22 Apr 2009 06:39:06 -0000 1.1.2.1 @@ -6,11 +6,6 @@ javax.servlet.jsp.jstl.fmt.localizationContext org.lamsfoundation.lams.gradebook.ApplicationResources - - - contextConfigLocation - classpath:/org/lamsfoundation/lams/gradebook/gradebookApplicationContext.xml - locatorFactorySelector classpath*:/org/lamsfoundation/lams/**/beanRefContext.xml Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/gradebookApplicationContext.xml =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/gradebookApplicationContext.xml,v diff -u -r1.1.2.1 -r1.1.2.2 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/gradebookApplicationContext.xml 14 Apr 2009 06:18:50 -0000 1.1.2.1 +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/gradebookApplicationContext.xml 22 Apr 2009 06:39:06 -0000 1.1.2.2 @@ -6,15 +6,16 @@ org.lamsfoundation.lams.gradebook.ApplicationResources - - + + + - + Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java,v diff -u -r1.1.2.8 -r1.1.2.9 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java 22 Apr 2009 03:30:58 -0000 1.1.2.8 +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java 22 Apr 2009 06:39:06 -0000 1.1.2.9 @@ -26,15 +26,18 @@ import java.text.DateFormat; import java.util.ArrayList; import java.util.Date; +import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Locale; +import java.util.Map; import java.util.Set; import java.util.SortedMap; import java.util.SortedSet; import java.util.TreeSet; import org.apache.log4j.Logger; +import org.lamsfoundation.lams.dao.IBaseDAO; import org.lamsfoundation.lams.gradebook.GradebookUserActivity; import org.lamsfoundation.lams.gradebook.GradebookUserLesson; import org.lamsfoundation.lams.gradebook.dao.IGradebookDAO; @@ -49,11 +52,11 @@ import org.lamsfoundation.lams.learningdesign.Group; import org.lamsfoundation.lams.learningdesign.Grouping; import org.lamsfoundation.lams.learningdesign.ToolActivity; +import org.lamsfoundation.lams.learningdesign.dao.IActivityDAO; import org.lamsfoundation.lams.lesson.CompletedActivityProgress; import org.lamsfoundation.lams.lesson.LearnerProgress; import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.lesson.service.ILessonService; -import org.lamsfoundation.lams.monitoring.service.IMonitoringService; import org.lamsfoundation.lams.tool.OutputType; import org.lamsfoundation.lams.tool.ToolOutput; import org.lamsfoundation.lams.tool.ToolOutputDefinition; @@ -78,11 +81,12 @@ private static Logger logger = Logger.getLogger(GradebookService.class); // Services - private IMonitoringService monitoringService; private ILamsCoreToolService toolService; private IGradebookDAO gradebookDAO; private ILessonService lessonService; private IUserManagementService userService; + private IBaseDAO baseDAO; + private IActivityDAO activityDAO; /** * @see org.lamsfoundation.lams.gradebook.service.IGradebookService#getGBActivityRowsForLearner(org.lamsfoundation.lams.lesson.Lesson, @@ -96,8 +100,10 @@ List gradebookActivityDTOs = new ArrayList(); - LearnerProgress learnerProgress = monitoringService.getLearnerProgress(learner.getUserId(), lesson - .getLessonId()); + Map properties = new HashMap(); + properties.put("lesson", lesson); + properties.put("user", learner); + LearnerProgress learnerProgress = getLearnerProgress(lesson, learner); Set activities = (Set) lesson.getLearningDesign().getActivities(); @@ -110,9 +116,10 @@ * THIS IS A HACK to retrieve the first tool activity * manually so it can be cast as a ToolActivity - if it is one */ - Activity firstActivity = monitoringService.getActivityById(lesson.getLearningDesign().getFirstActivity() - .getActivityId()); + Activity firstActivity = activityDAO.getActivityByActivityId(lesson.getLearningDesign() + .getFirstActivity().getActivityId()); + if (firstActivity != null && firstActivity.isToolActivity() && firstActivity instanceof ToolActivity) { GBActivityGridRowDTO activityDTO = getGradebookActivityDTO((ToolActivity) firstActivity, learner, @@ -155,8 +162,8 @@ * THIS IS A HACK to retrieve the first tool activity * manually so it can be cast as a ToolActivity - if it is one */ - Activity firstActivity = monitoringService.getActivityById(lesson.getLearningDesign().getFirstActivity() - .getActivityId()); + Activity firstActivity = activityDAO.getActivityByActivityId(lesson.getLearningDesign() + .getFirstActivity().getActivityId()); if (firstActivity.isToolActivity() && firstActivity instanceof ToolActivity) { Grouping grouping = firstActivity.getGrouping(); @@ -217,7 +224,7 @@ Set learners = null; if (groupId != null) { - Group group = (Group) userService.findById(Group.class, groupId); + Group group = (Group) baseDAO.find(Group.class, groupId); if (group != null) { learners = (Set) group.getUsers(); } else { @@ -232,15 +239,14 @@ GBUserGridRowDTO gUserDTO = new GBUserGridRowDTO(); gUserDTO.setRowName(learner.getLastName() + " " + learner.getFirstName()); gUserDTO.setId(learner.getUserId().toString()); - + gUserDTO.setMarksAvailable(getTotalMarksAvailable(activity)); GradebookUserActivity gradebookUserActivity = gradebookDAO.getGradebookUserDataForActivity(activity .getActivityId(), learner.getUserId()); // Set the progress - LearnerProgress learnerProgress = monitoringService.getLearnerProgress(learner.getUserId(), lesson - .getLessonId()); + LearnerProgress learnerProgress = getLearnerProgress(lesson, learner); gUserDTO.setStatus(getActivityStatusStr(learnerProgress, activity)); gUserDTO.setTimeTaken(getActivityDuration(learnerProgress, activity)); @@ -292,8 +298,7 @@ gradebookUserDTO.setRowName(learner.getLastName() + " " + learner.getFirstName()); // Setting the status and time taken for the user's lesson - LearnerProgress learnerProgress = monitoringService.getLearnerProgress(learner.getUserId(), lesson - .getLessonId()); + LearnerProgress learnerProgress = getLearnerProgress(lesson, learner); gradebookUserDTO.setStatus(getLessonStatusStr(learnerProgress)); if (learnerProgress != null) { if (learnerProgress.getStartDate() != null && learnerProgress.getFinishDate() != null) { @@ -318,27 +323,28 @@ } /** - * @see org.lamsfoundation.lams.gradebook.service.IGradebookService#getGradebookUserLesson(java.lang.Long, java.lang.Integer) + * @see org.lamsfoundation.lams.gradebook.service.IGradebookService#getGradebookUserLesson(java.lang.Long, + * java.lang.Integer) */ public GradebookUserLesson getGradebookUserLesson(Long lessonID, Integer userID) { return gradebookDAO.getGradebookUserDataForLesson(lessonID, userID); } - - - /** - * @see org.lamsfoundation.lams.gradebook.service.IGradebookService#getGradebookUserActivity(java.lang.Long, java.lang.Integer) + + /** + * @see org.lamsfoundation.lams.gradebook.service.IGradebookService#getGradebookUserActivity(java.lang.Long, + * java.lang.Integer) */ public GradebookUserActivity getGradebookUserActivity(Long activityID, Integer userID) { return gradebookDAO.getGradebookUserDataForActivity(activityID, userID); } - + /** * @see org.lamsfoundation.lams.gradebook.service.IGradebookService#getAverageMarkForActivity(java.lang.Long) */ public Double getAverageMarkForActivity(Long activityID) { return gradebookDAO.getAverageMarkForActivity(activityID); } - + /** * @see org.lamsfoundation.lams.gradebook.service.IGradebookService#getAverageMarkForLesson(java.lang.Long) */ @@ -483,8 +489,7 @@ lessonRow.setFeedback(gbLesson.getFeedback()); } - LearnerProgress learnerProgress = monitoringService.getLearnerProgress(user.getUserId(), lesson - .getLessonId()); + LearnerProgress learnerProgress = getLearnerProgress(lesson, user); lessonRow.setStatus(getLessonStatusStr(learnerProgress)); if (learnerProgress != null) { if (learnerProgress.getStartDate() != null && learnerProgress.getFinishDate() != null) { @@ -838,15 +843,26 @@ return null; } - // Getter and setter methods ----------------------------------------------- - - public IMonitoringService getMonitoringService() { - return monitoringService; + @SuppressWarnings("unchecked") + private LearnerProgress getLearnerProgress(Lesson lesson, User user) { + if (lesson != null && user != null) { + Map properties = new HashMap(); + properties.put("lesson", lesson); + properties.put("user", user); + List learnerProgressList = baseDAO.findByProperties(LearnerProgress.class, + properties); + + if (learnerProgressList != null && learnerProgressList.size() > 0){ + return (LearnerProgress)learnerProgressList.get(0); + } else { + return null; + } + } else { + return null; + } } - public void setMonitoringService(IMonitoringService monitoringService) { - this.monitoringService = monitoringService; - } + // Getter and setter methods ----------------------------------------------- public ILamsCoreToolService getToolService() { return toolService; @@ -880,5 +896,21 @@ this.userService = userService; } + public IBaseDAO getBaseDAO() { + return baseDAO; + } + + public void setBaseDAO(IBaseDAO baseDAO) { + this.baseDAO = baseDAO; + } + + public IActivityDAO getActivityDAO() { + return activityDAO; + } + + public void setActivityDAO(IActivityDAO activityDAO) { + this.activityDAO = activityDAO; + } + // ------------------------------------------------------------------------- } Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookAction.java,v diff -u -r1.1.2.4 -r1.1.2.5 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookAction.java 22 Apr 2009 04:09:29 -0000 1.1.2.4 +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookAction.java 22 Apr 2009 06:39:06 -0000 1.1.2.5 @@ -47,7 +47,6 @@ import org.lamsfoundation.lams.learningdesign.ToolActivity; import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.lesson.service.ILessonService; -import org.lamsfoundation.lams.monitoring.service.IMonitoringService; import org.lamsfoundation.lams.usermanagement.Organisation; import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; @@ -78,7 +77,6 @@ private static IGradebookService gradebookService; private static IUserManagementService userService; private static ILessonService lessonService; - private static IMonitoringService monitoringService; public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { @@ -234,7 +232,7 @@ // Getting the group id if it is there Long groupId = WebUtil.readLongParam(request, GradebookConstants.PARAM_GROUP_ID, true); - Activity activity = monitoringService.getActivityById(activityID); + Activity activity = (Activity)userService.findById(Activity.class, activityID); if (activity != null && activity instanceof ToolActivity) { gradebookUserDTOs = gradebookService.getGBUserRowsForActivity(lesson, (ToolActivity)activity, groupId); } else { @@ -443,7 +441,6 @@ private void initServices() { getUserService(); getLessonService(); - getMonitoringServiceService(); getGradebookService(); } @@ -465,15 +462,6 @@ return lessonService; } - private IMonitoringService getMonitoringServiceService() { - if (monitoringService == null) { - WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet() - .getServletContext()); - monitoringService = (IMonitoringService) ctx.getBean("monitoringService"); - } - return monitoringService; - } - private IGradebookService getGradebookService() { if (gradebookService == null) { WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet() Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookMonitoringAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookMonitoringAction.java,v diff -u -r1.1.2.4 -r1.1.2.5 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookMonitoringAction.java 22 Apr 2009 04:09:29 -0000 1.1.2.4 +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookMonitoringAction.java 22 Apr 2009 06:39:06 -0000 1.1.2.5 @@ -39,7 +39,6 @@ import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.lesson.dto.LessonDetailsDTO; import org.lamsfoundation.lams.lesson.service.ILessonService; -import org.lamsfoundation.lams.monitoring.service.IMonitoringService; import org.lamsfoundation.lams.usermanagement.Organisation; import org.lamsfoundation.lams.usermanagement.Role; import org.lamsfoundation.lams.usermanagement.User; @@ -76,7 +75,6 @@ private static IGradebookService gradebookService; private static IUserManagementService userService; private static ILessonService lessonService; - private static IMonitoringService monitoringService; @SuppressWarnings("unchecked") public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, @@ -242,7 +240,7 @@ String markStr = WebUtil.readStrParam(request, GradebookConstants.PARAM_MARK, true); String feedback = WebUtil.readStrParam(request, GradebookConstants.PARAM_FEEDBACK, true); - Activity activity = monitoringService.getActivityById(activityID); + Activity activity = (Activity)userService.findById(Activity.class, activityID); User learner = (User) userService.findById(User.class, userID); Lesson lesson = lessonService.getLesson(lessonID); @@ -306,7 +304,6 @@ private void initServices() { getUserService(); getLessonService(); - getMonitoringServiceService(); getGradebookService(); } @@ -328,15 +325,6 @@ return lessonService; } - private IMonitoringService getMonitoringServiceService() { - if (monitoringService == null) { - WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet() - .getServletContext()); - monitoringService = (IMonitoringService) ctx.getBean("monitoringService"); - } - return monitoringService; - } - private IGradebookService getGradebookService() { if (gradebookService == null) { WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet() Fisheye: Tag 1.1 refers to a dead (removed) revision in file `lams_gradebook/web/WEB-INF/applicationContext.xml'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_gradebook/web/WEB-INF/web.xml =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/web/WEB-INF/Attic/web.xml,v diff -u -r1.1.2.1 -r1.1.2.2 --- lams_gradebook/web/WEB-INF/web.xml 14 Apr 2009 06:18:51 -0000 1.1.2.1 +++ lams_gradebook/web/WEB-INF/web.xml 22 Apr 2009 06:39:06 -0000 1.1.2.2 @@ -9,11 +9,6 @@ javax.servlet.jsp.jstl.fmt.localizationContext org.lamsfoundation.lams.gradebook.ApplicationResources - - - contextConfigLocation - classpath:/org/lamsfoundation/lams/gradebook/gradebookApplicationContext.xml - locatorFactorySelector classpath*:/org/lamsfoundation/lams/**/beanRefContext.xml Index: lams_learning/src/java/org/lamsfoundation/lams/learning/learningApplicationContext.xml =================================================================== RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/learningApplicationContext.xml,v diff -u -r1.24 -r1.24.2.1 --- lams_learning/src/java/org/lamsfoundation/lams/learning/learningApplicationContext.xml 26 Mar 2009 10:00:35 -0000 1.24 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/learningApplicationContext.xml 22 Apr 2009 06:39:05 -0000 1.24.2.1 @@ -37,6 +37,7 @@ + Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java =================================================================== RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java,v diff -u -r1.96.4.1 -r1.96.4.2 --- lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java 22 Apr 2009 04:28:00 -0000 1.96.4.1 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java 22 Apr 2009 06:39:05 -0000 1.96.4.2 @@ -35,12 +35,15 @@ import java.util.TreeMap; import org.apache.log4j.Logger; +import org.lamsfoundation.lams.gradebook.GradebookUserActivity; +import org.lamsfoundation.lams.gradebook.service.IGradebookService; import org.lamsfoundation.lams.learning.progress.ProgressBuilder; import org.lamsfoundation.lams.learning.progress.ProgressEngine; import org.lamsfoundation.lams.learning.progress.ProgressException; import org.lamsfoundation.lams.learning.web.bean.GateActivityDTO; import org.lamsfoundation.lams.learning.web.util.ActivityMapping; import org.lamsfoundation.lams.learningdesign.Activity; +import org.lamsfoundation.lams.learningdesign.ActivityEvaluation; import org.lamsfoundation.lams.learningdesign.BranchActivityEntry; import org.lamsfoundation.lams.learningdesign.BranchCondition; import org.lamsfoundation.lams.learningdesign.BranchingActivity; @@ -65,6 +68,7 @@ import org.lamsfoundation.lams.lesson.service.ILessonService; import org.lamsfoundation.lams.lesson.service.LessonServiceException; import org.lamsfoundation.lams.tool.ToolOutput; +import org.lamsfoundation.lams.tool.ToolOutputValue; import org.lamsfoundation.lams.tool.ToolSession; import org.lamsfoundation.lams.tool.dao.IToolSessionDAO; import org.lamsfoundation.lams.tool.exception.LamsToolServiceException; @@ -98,6 +102,7 @@ private ILessonService lessonService; private static HashMap syncMap = new HashMap(); protected MessageService messageService; + private IGradebookService gradebookService; // --------------------------------------------------------------------- // Inversion of Control Methods - Constructor injection @@ -599,6 +604,11 @@ } else { nextLearnerProgress = calculateProgress(activity, learnerId, progress); + + ToolSession toolSession = lamsCoreToolService.getToolSessionByLearner(progress.getUser(), activity); + if (activity instanceof ToolActivity && toolSession != null) { + sendDataToGradebook((ToolActivity) activity, toolSession, progress); + } } // } return nextLearnerProgress; @@ -614,6 +624,44 @@ return completeActivity(learnerId, activity, currentProgress); } + private void sendDataToGradebook(ToolActivity toolActivity, ToolSession toolSession, LearnerProgress progress) { + + User learner = progress.getUser(); + Lesson lesson = progress.getLesson(); + if (toolActivity != null && toolSession != null && learner != null && lesson != null) { + if (toolActivity.getActivityEvaluations() != null && toolActivity.getActivityEvaluations().size() > 0) { + + // Getting the first activity evaluation + ActivityEvaluation eval = toolActivity.getActivityEvaluations().iterator().next(); + + try { + ToolOutput toolOutput = lamsCoreToolService.getOutputFromTool(eval.getToolOutputDefinition(), + toolSession, learner.getUserId()); + + if (toolOutput != null) { + ToolOutputValue outputVal = toolOutput.getValue(); + if (outputVal != null) { + Double outputDouble = outputVal.getDouble(); + + GradebookUserActivity gradebookUserActivity = gradebookService.getGradebookUserActivity( + toolActivity.getActivityId(), learner.getUserId()); + + // Only set the mark if it hasnt previously been set by a teacher + if (gradebookUserActivity == null) { + gradebookService.updateUserActivityGradebookMark(lesson, learner, toolActivity, outputDouble); + } + } + } + + } catch (ToolException e) { + log.debug("Runtime exception when attempted to get outputs for activity: " + + toolActivity.getActivityId(), e); + } + } + + } + } + /** * Exit a lesson. * @@ -1319,4 +1367,8 @@ public Grouping getGrouping(Long groupingId) { return groupingDAO.getGroupingById(groupingId); } + + public void setGradebookService(IGradebookService gradebookService) { + this.gradebookService = gradebookService; + } } \ No newline at end of file