Index: lams_gradebook/.classpath =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/.classpath,v diff -u -r1.4.2.6 -r1.4.2.7 --- lams_gradebook/.classpath 18 Nov 2016 07:49:46 -0000 1.4.2.6 +++ lams_gradebook/.classpath 3 Feb 2017 09:40:29 -0000 1.4.2.7 @@ -16,6 +16,6 @@ - + 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.4.2.9 -r1.4.2.10 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/gradebookApplicationContext.xml 15 Jun 2016 08:02:07 -0000 1.4.2.9 +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/gradebookApplicationContext.xml 3 Feb 2017 09:40:29 -0000 1.4.2.10 @@ -37,6 +37,7 @@ PROPAGATION_REQUIRED + PROPAGATION_REQUIRED PROPAGATION_REQUIRED PROPAGATION_REQUIRED,readOnly PROPAGATION_REQUIRED,readOnly 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.36.2.22 -r1.36.2.23 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java 25 Jan 2017 08:57:40 -0000 1.36.2.22 +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java 3 Feb 2017 09:40:29 -0000 1.36.2.23 @@ -469,9 +469,39 @@ } } + @Override + public void recalculateTotalMarksForLesson(Long lessonId) throws Exception { + Lesson lesson = lessonDAO.getLesson(lessonId); + if (lesson == null) { + return; + } + + Map userToGradebookUserLessonMap = getUserToGradebookUserLessonMap(lesson, null); + + //update for all users in activity + Set users = lesson.getAllLearners(); + for (User user : users) { + Integer userId = user.getUserId(); + GradebookUserLesson gradebookUserLesson = userToGradebookUserLessonMap.get(userId); + + Double totalMark = gradebookDAO.getGradebookUserActivityMarkSum(lessonId, userId); + if (totalMark != null) { + + if (totalMark > 0 && gradebookUserLesson == null) { + throw new Exception("An error detected: user (userId:" + userId + ") has total mark that equals to " + + totalMark + " but no assocciated gradebookUserLesson exist "); + } + + if (gradebookUserLesson != null) { + gradebookUserLesson.setMark(totalMark); + gradebookDAO.insertOrUpdate(gradebookUserLesson); + } + } + } + } @Override - public void updateUserMarksForActivity(Activity activity) { + public void recalculateGradebookMarksForActivity(Activity activity) { Long activityId = activity.getActivityId(); Lesson lesson = lessonDAO.getLessonForActivity(activityId); Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java,v diff -u -r1.10.2.9 -r1.10.2.10 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java 25 Jan 2017 08:57:41 -0000 1.10.2.9 +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java 3 Feb 2017 09:40:29 -0000 1.10.2.10 @@ -124,7 +124,17 @@ * * @param activity */ - void updateUserMarksForActivity(Activity activity); + void recalculateGradebookMarksForActivity(Activity activity); + + /** + * Recalculates total marks for all users in a lesson. Then stores that mark in a gradebookUserLesson. Doesn't + * affect anyhow gradebookUserActivity objects. If total mark is positive but there is no gradebookUserLesson + * available - throws exception. + * + * @param lessonId + * @throws Exception + */ + void recalculateTotalMarksForLesson(Long lessonId) throws Exception; /** * Updates a user's lesson mark, this will make it desynchronised with the aggregated marks from the activities Fisheye: Tag 1.1 refers to a dead (removed) revision in file `lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/servlet/RecalculateTotalMarksForLessonServlet.java'. 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.5.2.4 -r1.5.2.5 --- lams_gradebook/web/WEB-INF/web.xml 25 Nov 2014 09:37:33 -0000 1.5.2.4 +++ lams_gradebook/web/WEB-INF/web.xml 3 Feb 2017 09:40:29 -0000 1.5.2.5 @@ -130,6 +130,11 @@ 1 + + + recalculateTotalMarksForLesson + org.lamsfoundation.lams.gradebook.web.servlet.RecalculateTotalMarksForLessonServlet + action @@ -140,6 +145,11 @@ Connector /ckeditor/filemanager/browser/default/connectors/jsp/connector + + + recalculateTotalMarksForLesson + /recalculateTotalMarksForLesson + 500