Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/ICoreLearnerService.java =================================================================== diff -u -r8033905f61b3c293f92b5c9c468dd22606ab9a42 -r16593058f78a135e25dae055f0fc16c4bed4da42 --- lams_learning/src/java/org/lamsfoundation/lams/learning/service/ICoreLearnerService.java (.../ICoreLearnerService.java) (revision 8033905f61b3c293f92b5c9c468dd22606ab9a42) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/ICoreLearnerService.java (.../ICoreLearnerService.java) (revision 16593058f78a135e25dae055f0fc16c4bed4da42) @@ -156,15 +156,8 @@ * Complete the activity in the progress engine and delegate to the progress engine to calculate the next activity * in the learning design. It is currently triggered by various progress engine related action classes, which then * calculate the url to go to next, based on the ActivityMapping class. - * - * @param learnerId - * the learner who are running this activity in the design. - * @param activity - * the activity is being run. - * @param lessonId - * lesson id */ - void completeActivity(Integer learnerId, Activity activity, LearnerProgress progress); + void completeActivity(Integer learnerId, Activity activity, Long progressID); /** * If specified activity is set to produce ToolOutput, calculates and stores mark to gradebook. @@ -175,22 +168,6 @@ void updateGradebookMark(Activity activity, LearnerProgress progress); /** - * Same as LearnerProgress completeActivity(Integer learnerId,Activity activity,LearnerProgress progress) except - * that the it works out the current learner's progress from the given lesson id. - * - * Use the other method if you already have the learner progress, as this method looks up the learner progress. - * - * @param learnerId - * the learner who are running this activity in the design. - * @param activity - * the activity is being run. - * @param lessonId - * lesson id - * @return the updated learner progress - */ - LearnerProgress completeActivity(Integer learnerId, Activity activity, Long lessonId); - - /** * Retrieve all lessons that has been started, suspended or finished. All finished but archived lesson should not be * loaded. * @@ -337,9 +314,11 @@ */ SequenceActivity selectBranch(Lesson lesson, BranchingActivity branchingActivity, Integer learnerId, Long branchId) throws LearnerServiceException; - + /* Added for RepopulateProgressMarksServlet - can be removed later */ - String[] recalcProgressForLearner(Lesson lesson, ArrayList activityList, LearnerProgress learnerProgress, boolean updateGradebookForAll); + String[] recalcProgressForLearner(Lesson lesson, ArrayList activityList, LearnerProgress learnerProgress, + boolean updateGradebookForAll); + IActivityDAO getActivityDAO(); } Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java =================================================================== diff -u -r5e319c889c9776238ecaf338e3b2d330b2186914 -r16593058f78a135e25dae055f0fc16c4bed4da42 --- lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision 5e319c889c9776238ecaf338e3b2d330b2186914) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision 16593058f78a135e25dae055f0fc16c4bed4da42) @@ -603,18 +603,15 @@ * the learner who are running this activity in the design. * @param activity * the activity is being run. - * @param lessonId - * lesson id * @return the updated learner progress */ @Override - public synchronized void completeActivity(Integer learnerId, Activity activity, LearnerProgress progress) { + public synchronized void completeActivity(Integer learnerId, Activity activity, Long progressID) { if (LearnerService.log.isDebugEnabled()) { LearnerService.log .debug("Completing activity ID " + activity.getActivityId() + " for learner " + learnerId); } - // load the progress again from DB - // progress = learnerProgressDAO.getLearnerProgress(progress.getLearnerProgressId()); + LearnerProgress progress = learnerProgressDAO.getLearnerProgress(progressID); if (progress.getCompletedActivities().keySet().contains(activity)) { // progress was already updated by another thread, so prevent double processing return; @@ -650,19 +647,7 @@ activity.getActivityId()); } - /** - * @throws @see - * org.lamsfoundation.lams.learning.service.ICoreLearnerService#completeActivity(java.lang.Integer, - * org.lamsfoundation.lams.learningdesign.Activity, java.lang.Long ) - */ @Override - public LearnerProgress completeActivity(Integer learnerId, Activity activity, Long lessonId) { - LearnerProgress currentProgress = getProgress(new Integer(learnerId.intValue()), lessonId); - completeActivity(learnerId, activity, currentProgress); - return currentProgress; - } - - @Override public void updateGradebookMark(Activity activity, LearnerProgress progress) { User learner = progress.getUser(); Lesson lesson = progress.getLesson(); @@ -1429,6 +1414,7 @@ private static final String TOOL_SIGNATURE_SCRATCHIE = "lascrt11"; private static final String TOOL_SIGNATURE_MCQ = "lamc11"; + @Override public String[] recalcProgressForLearner(Lesson lesson, ArrayList activityList, LearnerProgress learnerProgress, boolean updateGradebookForAll) { @@ -1469,8 +1455,9 @@ } - if (updated) + if (updated) { learnerProgressDAO.updateLearnerProgress(learnerProgress); + } return new String[] { auditLogBuilder.toString(), errorBuilder.toString() }; } @@ -1493,10 +1480,11 @@ CompletedActivityProgress cap = learnerProgress.getCompletedActivities().get(activity); if (cap != null) { if (cap.getStartDate() == null) { - if (startedDateFromAttempted != null) + if (startedDateFromAttempted != null) { cap.setStartDate(startedDateFromAttempted); - else if (results.getStartDate() != null) + } else if (results.getStartDate() != null) { cap.setStartDate(results.getStartDate()); + } } if (cap.getFinishDate() == null && results.getFinishDate() != null) { cap.setFinishDate(results.getFinishDate()); @@ -1518,12 +1506,12 @@ updated = true; } else if (results.getStatus() == ToolCompletionStatus.ACTIVITY_ATTEMPTED) { - // Attempted - if not already there add with tool's start date, or failing that the tool's value for - // session start date, or the core's value for session start date, or the lesson start date. + // Attempted - if not already there add with tool's start date, or failing that the tool's value for + // session start date, or the core's value for session start date, or the lesson start date. // Must have a date or it can't be saved. - if (results.getStartDate() != null) + if (results.getStartDate() != null) { learnerProgress.getAttemptedActivities().putIfAbsent(activity, results.getStartDate()); - else { + } else { learnerProgress.getAttemptedActivities().putIfAbsent(activity, lessonStartDate); } auditLogBuilder.append("Progress updated for attempted activity ").append(activity.getActivityId()) @@ -1545,8 +1533,9 @@ ToolSession toolSession = lamsCoreToolService.getToolSessionByLearner(learner, activity); if (toolSession != null) { status = lamsCoreToolService.getCompletionStatusFromTool(learner, activity); - if (status.getStartDate() == null) + if (status.getStartDate() == null) { status.setStartDate(toolSession.getCreateDateTime()); + } } } else if (activity.isComplexActivity()) { @@ -1567,21 +1556,25 @@ allComplete = false; } else { attempted = true; - if (childStartDate == null) + if (childStartDate == null) { childStartDate = childCap.getStartDate(); + } childEndDate = childCap.getFinishDate(); } - if (caStartDate == null || (childStartDate != null && childStartDate.before(caStartDate))) + if (caStartDate == null || (childStartDate != null && childStartDate.before(caStartDate))) { caStartDate = childStartDate; - if (caEndDate == null || (childEndDate != null && childEndDate.after(caStartDate))) + } + if (caEndDate == null || (childEndDate != null && childEndDate.after(caStartDate))) { caEndDate = childEndDate; + } } if (attempted) { - if (allComplete) + if (allComplete) { status = new ToolCompletionStatus(ToolCompletionStatus.ACTIVITY_COMPLETED, caStartDate, caEndDate); - else + } else { status = new ToolCompletionStatus(ToolCompletionStatus.ACTIVITY_ATTEMPTED, caStartDate, null); + } } } else if (activity.isGateActivity()) { Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/LearningWebUtil.java =================================================================== diff -u -r2fa2955025b267cdbf5f59c9d5f1d436ed1ae69f -r16593058f78a135e25dae055f0fc16c4bed4da42 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/LearningWebUtil.java (.../LearningWebUtil.java) (revision 2fa2955025b267cdbf5f59c9d5f1d436ed1ae69f) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/LearningWebUtil.java (.../LearningWebUtil.java) (revision 16593058f78a135e25dae055f0fc16c4bed4da42) @@ -158,7 +158,7 @@ return actionMappings.getCloseForward(currentActivity, lesson.getLessonId()); } else { - learnerService.completeActivity(learnerId, currentActivity, progress); + learnerService.completeActivity(learnerId, currentActivity, progress.getLearnerProgressId()); } if (currentActivity != null && (currentActivity.isFloating() || (currentActivity.getParentActivity() != null @@ -182,7 +182,7 @@ ActivityURL activityURL = new ActivityURL(); activityURL.setType(activity.getClass().getSimpleName()); - if ( isFloating && activity.isFloatingActivity() ) { + if (isFloating && activity.isFloatingActivity()) { // special case - progress engine. Do not want the unknown activity warning activityURL.setUrl(null); } else { Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java =================================================================== diff -u -rae5e9eacbfbf13097410637b6e8990dfb909177a -r16593058f78a135e25dae055f0fc16c4bed4da42 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision ae5e9eacbfbf13097410637b6e8990dfb909177a) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision 16593058f78a135e25dae055f0fc16c4bed4da42) @@ -1118,7 +1118,7 @@ MonitoringService.FORCE_COMPLETE_STOP_MESSAGE_GROUPING_ERROR, new Object[] { activity.getTitle() }); } - learnerService.completeActivity(learner.getUserId(), activity, lessonId); + learnerService.completeActivity(learner.getUserId(), activity, progress.getLearnerProgressId()); if (MonitoringService.log.isDebugEnabled()) { MonitoringService.log .debug("Grouping activity [" + activity.getActivityId() + "] is completed.");