Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java =================================================================== diff -u -rfe5f82f2ce32c415ae2afe5bdbf05d8fd84f4607 -r93b927e0f6ae45cb6ae27563c108f74da560f5c4 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision fe5f82f2ce32c415ae2afe5bdbf05d8fd84f4607) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision 93b927e0f6ae45cb6ae27563c108f74da560f5c4) @@ -25,7 +25,6 @@ import java.text.DateFormat; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Date; @@ -57,6 +56,7 @@ import org.lamsfoundation.lams.gradebook.util.LessonComparator; import org.lamsfoundation.lams.gradebook.util.UserComparator; import org.lamsfoundation.lams.learningdesign.Activity; +import org.lamsfoundation.lams.learningdesign.ActivityEvaluation; import org.lamsfoundation.lams.learningdesign.Group; import org.lamsfoundation.lams.learningdesign.Grouping; import org.lamsfoundation.lams.learningdesign.ToolActivity; @@ -66,7 +66,10 @@ import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.lesson.dao.ILearnerProgressDAO; import org.lamsfoundation.lams.lesson.service.ILessonService; +import org.lamsfoundation.lams.tool.ToolOutput; +import org.lamsfoundation.lams.tool.ToolOutputValue; import org.lamsfoundation.lams.tool.ToolSession; +import org.lamsfoundation.lams.tool.exception.ToolException; import org.lamsfoundation.lams.tool.service.ILamsCoreToolService; import org.lamsfoundation.lams.usermanagement.Organisation; import org.lamsfoundation.lams.usermanagement.OrganisationType; @@ -432,7 +435,47 @@ auditService.log(monitorUser, GradebookConstants.MODULE_NAME, message); } } + + @Override + public void updateUserActivityGradebookMark(Lesson lesson, Activity activity, User learner) { + ToolSession toolSession = toolService.getToolSessionByLearner(learner, activity); + if ((toolSession == null) || (toolSession == null) || (learner == null) || (lesson == null) + || (activity == null) || !(activity instanceof ToolActivity) + || (((ToolActivity) activity).getActivityEvaluations() == null) + || ((ToolActivity) activity).getActivityEvaluations().isEmpty()) { + return; + } + ToolActivity toolActivity = (ToolActivity) activity; + + // Getting the first activity evaluation + ActivityEvaluation eval = toolActivity.getActivityEvaluations().iterator().next(); + + try { + ToolOutput toolOutput = toolService.getOutputFromTool(eval.getToolOutputDefinition(), toolSession, + learner.getUserId()); + + if (toolOutput != null) { + ToolOutputValue outputVal = toolOutput.getValue(); + if (outputVal != null) { + Double outputDouble = outputVal.getDouble(); + + GradebookUserActivity gradebookUserActivity = getGradebookUserActivity(toolActivity.getActivityId(), + learner.getUserId()); + + // Only set the mark if it hasnt previously been set by a teacher + if ((gradebookUserActivity == null) || !gradebookUserActivity.getMarkedInGradebook()) { + updateUserActivityGradebookMark(lesson, learner, toolActivity, outputDouble, false, false); + } + } + } + + } catch (ToolException e) { + GradebookService.logger.debug( + "Runtime exception when attempted to get outputs for activity: " + toolActivity.getActivityId(), e); + } + } + @Override public void updateUserActivityGradebookMark(Lesson lesson, User learner, Activity activity, Double mark, Boolean markedInGradebook, boolean isAuditLogRequired) { Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java =================================================================== diff -u -r1f6366dd975a5f5079cb57b2ca53e77873f5cb96 -r93b927e0f6ae45cb6ae27563c108f74da560f5c4 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java (.../IGradebookService.java) (revision 1f6366dd975a5f5079cb57b2ca53e77873f5cb96) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java (.../IGradebookService.java) (revision 93b927e0f6ae45cb6ae27563c108f74da560f5c4) @@ -126,6 +126,14 @@ * @param mark */ void updateUserLessonGradebookMark(Lesson lesson, User learner, Double mark); + + /** + * If specified activity is set to produce ToolOutput, calculates and stores mark to gradebook. + * + * @param toolActivity + * @param progress + */ + void updateUserActivityGradebookMark(Lesson lesson, Activity activity, User learner); /** * Updates a user's activity mark, this will automatically add up all the user's activity marks for a lesson and set Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java =================================================================== diff -u -r95574f488cd396cd8e0e246a091a23dca4190e4f -r93b927e0f6ae45cb6ae27563c108f74da560f5c4 --- lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision 95574f488cd396cd8e0e246a091a23dca4190e4f) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision 93b927e0f6ae45cb6ae27563c108f74da560f5c4) @@ -684,43 +684,7 @@ public void updateGradebookMark(Activity activity, LearnerProgress progress) { User learner = progress.getUser(); Lesson lesson = progress.getLesson(); - ToolSession toolSession = lamsCoreToolService.getToolSessionByLearner(learner, activity); - - if ((toolSession == null) || (toolSession == null) || (learner == null) || (lesson == null) - || (activity == null) || !(activity instanceof ToolActivity) - || (((ToolActivity) activity).getActivityEvaluations() == null) - || ((ToolActivity) activity).getActivityEvaluations().isEmpty()) { - return; - } - ToolActivity toolActivity = (ToolActivity) activity; - - // 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) || !gradebookUserActivity.getMarkedInGradebook()) { - gradebookService.updateUserActivityGradebookMark(lesson, learner, toolActivity, outputDouble, - false, false); - } - } - } - - } catch (ToolException e) { - LearnerService.log.debug( - "Runtime exception when attempted to get outputs for activity: " + toolActivity.getActivityId(), e); - } + gradebookService.updateUserActivityGradebookMark(lesson, activity, learner); } /**