Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java =================================================================== diff -u -r54a14306d3b36e6da9aedbaa6700c91048ebc53a -r4d4a196e9072d82925295b1a57210303fc3e1c9f --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision 54a14306d3b36e6da9aedbaa6700c91048ebc53a) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision 4d4a196e9072d82925295b1a57210303fc3e1c9f) @@ -145,7 +145,7 @@ Lesson lesson = lessonService.getLesson(lessonId); User learner = (User) userService.findById(User.class, userId); - List gradebookActivityDTOs = new ArrayList(); + List gradebookActivityDTOs = new ArrayList<>(); List activities = getLessonActivitiesForLearner(lesson, userId); for (ToolActivity activity : activities) { @@ -237,7 +237,7 @@ Activity activity = getActivityById(activityId); Lesson lesson = (Lesson) activity.getLearningDesign().getLessons().iterator().next(); - List gradebookActivityDTOs = new ArrayList(); + List gradebookActivityDTOs = new ArrayList<>(); List lessonArchives = gradebookDAO.getArchivedLessonMarks(lesson.getLessonId(), userId); int attemptOrder = lessonArchives.size(); @@ -276,7 +276,7 @@ Lesson lesson = lessonService.getLesson(lessonId); User learner = (User) userService.findById(User.class, userId); - List gradebookActivityDTOs = new ArrayList(); + List gradebookActivityDTOs = new ArrayList<>(); List activities = getLessonActivitiesForLearner(lesson, userId); for (ToolActivity activity : activities) { @@ -314,7 +314,7 @@ GradebookService.logger.debug("Getting gradebook data for lesson: " + lessonId); Lesson lesson = lessonService.getLesson(lessonId); - List gradebookActivityDTOs = new ArrayList(); + List gradebookActivityDTOs = new ArrayList<>(); List activities = getLessonToolActivitiesForLesson(lesson); @@ -347,7 +347,7 @@ Long lessonId = lesson.getLessonId(); Long activityId = activity.getActivityId(); - List gradebookUserDTOs = new ArrayList(); + List gradebookUserDTOs = new ArrayList<>(); List learners = null; if (groupId != null) { @@ -413,10 +413,10 @@ gUserDTO.setMark(gradebookUserActivity.getMark()); } - + boolean hasArchivedMarks = gradebookDAO.hasArchivedMarks(lesson.getLessonId(), learner.getUserId()); gUserDTO.setHasArchivedMarks(hasArchivedMarks); - + gradebookUserDTOs.add(gUserDTO); } } @@ -434,7 +434,7 @@ public ArrayList getGBUserRowsForLesson(Lesson lesson, int page, int size, String sortBy, String sortOrder, String searchString, TimeZone userTimeZone) { - ArrayList gradebookUserDTOs = new ArrayList(); + ArrayList gradebookUserDTOs = new ArrayList<>(); if (lesson != null) { List learners; @@ -520,7 +520,7 @@ public ArrayList getGBUserRowsForOrganisation(Organisation organisation, int page, int size, String sortOrder, String searchString) { - ArrayList gradebookUserDTOs = new ArrayList(); + ArrayList gradebookUserDTOs = new ArrayList<>(); if (organisation != null) { List learners = gradebookDAO.getUsersFromOrganisation(organisation.getOrganisationId(), page, size, @@ -739,7 +739,7 @@ updateUserActivityGradebookMark(lesson, learner, activity, mark, markedInGradebook, isAuditLogRequired, gradebookUserActivity, gradebookUserLesson); } - + private void updateUserActivityGradebookMark(Lesson lesson, User learner, Activity activity, Double mark, Boolean markedInGradebook, boolean isAuditLogRequired) { @@ -761,7 +761,7 @@ @Override public List getWeights(LearningDesign design) { - List evaluations = new ArrayList(); + List evaluations = new ArrayList<>(); Set activities = design.getActivities(); for (Activity activity : activities) { if (activity.isToolActivity()) { @@ -779,7 +779,7 @@ } return evaluations; } - + private void updateUserActivityGradebookMark(Lesson lesson, Activity activity, User learner) { ToolSession toolSession = toolService.getToolSessionByLearner(learner, activity); @@ -893,7 +893,7 @@ gradebookUserActivity.setUpdateDate(new Date()); gradebookDAO.insertOrUpdate(gradebookUserActivity); } - + private void updateUserActivityGradebookFeedback(Activity activity, User learner, String feedback) { GradebookUserActivity gradebookUserActivity = gradebookDAO @@ -927,7 +927,7 @@ @Override public List getGBLessonRows(Organisation organisation, User user, User viewer, GBGridView view, int page, int size, String sortBy, String sortOrder, String searchString, TimeZone userTimeZone) { - List lessonRows = new ArrayList(); + List lessonRows = new ArrayList<>(); Integer userId = user.getUserId(); Integer orgId = organisation.getOrganisationId(); @@ -1037,7 +1037,7 @@ private Map> getDataForLessonGradebookExport(Lesson lesson) { - Map> activityToUserDTOMap = new LinkedHashMap>(); + Map> activityToUserDTOMap = new LinkedHashMap<>(); Set learners = new TreeSet(new LastNameAlphabeticComparator()); if (lesson.getAllLearners() != null) { @@ -1094,7 +1094,7 @@ Map userToGradebookUserActivityMap = getUserToGradebookUserActivityMap( toolActivity, null); - List userDTOs = new ArrayList(); + List userDTOs = new ArrayList<>(); for (User learner : learners) { GBUserGridRowDTO userDTO = new GBUserGridRowDTO(learner); @@ -1122,12 +1122,12 @@ boolean isWeighted = toolService.isWeightedMarks(lesson.getLearningDesign()); - LinkedHashMap dataToExport = new LinkedHashMap(); + LinkedHashMap dataToExport = new LinkedHashMap<>(); // -------------------- process summary excel page -------------------------------- // The entire data list - List rowList = new LinkedList(); + List rowList = new LinkedList<>(); // Adding the lesson average data to the summary Double lessonAverageMarkValue = getAverageMarkForLesson(lesson.getLessonId()); @@ -1211,7 +1211,7 @@ Map> activityToUserDTOMap = getDataForLessonGradebookExport(lesson); //filter out all activities that doesn't have numeric outputs - Map> filteredActivityToUserDTOMap = new LinkedHashMap>(); + Map> filteredActivityToUserDTOMap = new LinkedHashMap<>(); for (ToolActivity activity : activityToUserDTOMap.keySet()) { String toolSignature = activity.getTool().getToolSignature(); //check whether toolActivity has a NumericToolOutput @@ -1272,7 +1272,7 @@ dataToExport.put(getMessage("gradebook.export.lesson.summary"), summaryData); // -------------------- process activity excel page -------------------------------- - List rowList1 = new LinkedList(); + List rowList1 = new LinkedList<>(); for (Activity activity : activityToUserDTOMap.keySet()) { @@ -1325,7 +1325,7 @@ learners.addAll(lesson.getAllLearners()); } - rowList = new LinkedList(); + rowList = new LinkedList<>(); for (User learner : learners) { userTitleRow = new ExcelCell[4]; @@ -1340,7 +1340,7 @@ titleRow[4] = new ExcelCell(getMessage("gradebook.columntitle.mark"), true); rowList.add(titleRow); - Map activityIdToName = new HashMap(); + Map activityIdToName = new HashMap<>(); for (ToolActivity activity : activityToUserDTOMap.keySet()) { @@ -1407,40 +1407,36 @@ attemptRow[3] = new ExcelCell(lessonArchive.getMark(), false); rowList.add(attemptRow); + Date archiveDate = lessonArchive.getArchiveDate(); + LearnerProgressArchive learnerProgress = learnerProgressDAO + .getLearnerProgressArchive(lesson.getLessonId(), learner.getUserId(), archiveDate); + // go throuch each activity and see if there is an archived mark for it for (ToolActivity activity : activityToUserDTOMap.keySet()) { - ExcelCell[] activityDataRow = null; + GradebookUserActivityArchive activityArchive = null; List activityArchives = gradebookDAO .getArchivedActivityMarks(activity.getActivityId(), learner.getUserId()); - Date archiveDate = lessonArchive.getArchiveDate(); - for (GradebookUserActivityArchive activityArchive : activityArchives) { + for (GradebookUserActivityArchive possibleActivityArchive : activityArchives) { // if it matches, we found an archived mark for this activity and this attempt - if (archiveDate.equals(activityArchive.getArchiveDate())) { - LearnerProgressArchive learnerProgress = learnerProgressDAO.getLearnerProgressArchive( - lesson.getLessonId(), learner.getUserId(), lessonArchive.getArchiveDate()); - activityDataRow = new ExcelCell[5]; - activityDataRow[0] = new ExcelCell(activityIdToName.get(activity.getActivityId()), - false); - Date startDate = getActivityStartDate(learnerProgress, activity, null); - activityDataRow[1] = new ExcelCell( - startDate == null ? "" - : FileUtil.EXPORT_TO_SPREADSHEET_TITLE_DATE_FORMAT.format(startDate), - false); - Date finishDate = getActivityFinishDate(learnerProgress, activity, null); - activityDataRow[2] = new ExcelCell( - finishDate == null ? "" - : FileUtil.EXPORT_TO_SPREADSHEET_TITLE_DATE_FORMAT.format(finishDate), - false); - activityDataRow[3] = new ExcelCell( - getActivityDuration(learnerProgress, activity) / 1000, false); - activityDataRow[4] = new ExcelCell(activityArchive.getMark(), false); + if (archiveDate.equals(possibleActivityArchive.getArchiveDate())) { + activityArchive = possibleActivityArchive; break; } } - if (activityDataRow == null) { - activityDataRow = new ExcelCell[1]; - activityDataRow[0] = new ExcelCell(activityIdToName.get(activity.getActivityId()), false); - } + + ExcelCell[] activityDataRow = new ExcelCell[5]; + activityDataRow[0] = new ExcelCell(activityIdToName.get(activity.getActivityId()), false); + Date startDate = getActivityStartDate(learnerProgress, activity, null); + activityDataRow[1] = new ExcelCell(startDate == null ? "" + : FileUtil.EXPORT_TO_SPREADSHEET_TITLE_DATE_FORMAT.format(startDate), false); + Date finishDate = getActivityFinishDate(learnerProgress, activity, null); + activityDataRow[2] = new ExcelCell(finishDate == null ? "" + : FileUtil.EXPORT_TO_SPREADSHEET_TITLE_DATE_FORMAT.format(finishDate), false); + activityDataRow[3] = new ExcelCell(getActivityDuration(learnerProgress, activity) / 1000, + false); + activityDataRow[4] = new ExcelCell(activityArchive == null ? "" : activityArchive.getMark(), + false); + rowList.add(activityDataRow); } attemptOrder--; @@ -1459,15 +1455,15 @@ @Override @SuppressWarnings("unchecked") public LinkedHashMap exportCourseGradebook(Integer userId, Integer organisationId) { - LinkedHashMap dataToExport = new LinkedHashMap(); + LinkedHashMap dataToExport = new LinkedHashMap<>(); // The entire data list - List rowList = new LinkedList(); + List rowList = new LinkedList<>(); - Set lessons = new TreeSet(new LessonComparator()); + Set lessons = new TreeSet<>(new LessonComparator()); lessons.addAll(lessonService.getLessonsByGroupAndUser(userId, organisationId)); - Map isWeightedLessonMap = new HashMap(); + Map isWeightedLessonMap = new HashMap<>(); if ((lessons != null) && (lessons.size() > 0)) { @@ -1507,8 +1503,8 @@ rowList.add(headerRow); // collect users from all lessons & check if lesson uses weightings - LinkedHashSet allLearners = new LinkedHashSet(); - List lessonIds = new LinkedList(); + LinkedHashSet allLearners = new LinkedHashSet<>(); + List lessonIds = new LinkedList<>(); for (Lesson lesson : lessons) { Set dbLessonUsers = lesson.getAllLearners(); allLearners.addAll(dbLessonUsers); @@ -1518,8 +1514,8 @@ } // Fetching the user data - List learnerProgresses = new LinkedList(); - List gradebookUserLessons = new LinkedList(); + List learnerProgresses = new LinkedList<>(); + List gradebookUserLessons = new LinkedList<>(); if (!allLearners.isEmpty()) { learnerProgresses = learnerProgressDAO.getLearnerProgressForLessons(lessonIds); gradebookUserLessons = gradebookDAO.getGradebookUserLessons(lessonIds); @@ -1622,16 +1618,16 @@ @Override public LinkedHashMap exportSelectedLessonsGradebook(Integer userId, Integer organisationId, String[] lessonIds, boolean simplified) { - LinkedHashMap dataToExport = new LinkedHashMap(); + LinkedHashMap dataToExport = new LinkedHashMap<>(); Organisation organisation = (Organisation) userService.findById(Organisation.class, organisationId); // The entire data list - List rowList = new LinkedList(); + List rowList = new LinkedList<>(); User user = (User) userService.findById(User.class, userId); - Set selectedLessons = new TreeSet(new LessonComparator()); - Map isWeightedLessonMap = new HashMap(); + Set selectedLessons = new TreeSet<>(new LessonComparator()); + Map isWeightedLessonMap = new HashMap<>(); // Don't include lesson in list if the user doesn't have permission Integer organisationToCheckPermission = (organisation.getOrganisationType().getOrganisationTypeId() @@ -1640,9 +1636,9 @@ boolean isGroupManager = userService.isUserInRole(userId, organisationToCheckPermission, Role.GROUP_MANAGER); // collect users from all lessons - Set allLearners = new LinkedHashSet(); - Map> lessonActivitiesMap = new HashMap>(); - List allActivities = new ArrayList(); + Set allLearners = new LinkedHashSet<>(); + Map> lessonActivitiesMap = new HashMap<>(); + List allActivities = new ArrayList<>(); for (String lessonIdStr : lessonIds) { Long lessonId = Long.parseLong(lessonIdStr); @@ -1666,18 +1662,18 @@ if (!selectedLessons.isEmpty()) { // Fetching the user data - List lessonIdLongs = new LinkedList(); + List lessonIdLongs = new LinkedList<>(); for (String lessonId : lessonIds) { lessonIdLongs.add(Long.valueOf(lessonId)); } - List learnerProgresses = new LinkedList(); + List learnerProgresses = new LinkedList<>(); if (!allLearners.isEmpty()) { learnerProgresses = learnerProgressDAO.getLearnerProgressForLessons(lessonIdLongs); } Map activityToTotalMarkMap = getActivityToTotalMarkMap(allActivities); - Map> activityTouserToGradebookUserActivityMap = new HashMap>(); + Map> activityTouserToGradebookUserActivityMap = new HashMap<>(); for (ToolActivity activity : allActivities) { Map userToGradebookUserActivityMap = getUserToGradebookUserActivityMap( activity, null); @@ -1949,7 +1945,7 @@ } } } - + @Override public void updateActivityMark(Double mark, String feedback, Integer userID, Long toolSessionID, Boolean markedInGradebook) { @@ -2054,7 +2050,7 @@ * Returns a completely flat list of lesson activities for the whole lesson. */ private List getLessonToolActivitiesForLesson(Lesson lesson) { - List toolActivities = new ArrayList(); + List toolActivities = new ArrayList<>(); List activityUrls = getLearnerService().getStructuredActivityURLs(lesson.getLessonId()); for (ActivityURL activityUrl : activityUrls) { processLessonToolActivity(activityUrl, toolActivities); @@ -2079,7 +2075,7 @@ * The sequence activities allow the export to tweak the learner out. */ private List getLessonActivitiesForLesson(Lesson lesson) { - List activities = new ArrayList(); + List activities = new ArrayList<>(); List activityUrls = getLearnerService().getStructuredActivityURLs(lesson.getLessonId()); for (ActivityURL activityUrl : activityUrls) { processLessonActivity(activityUrl, activities); @@ -2103,7 +2099,7 @@ */ @SuppressWarnings("unchecked") private List getLessonActivitiesForLearner(Lesson lesson, Integer learnerId) { - List toolActivities = new ArrayList(); + List toolActivities = new ArrayList<>(); Object[] objs = getLearnerService().getStructuredActivityURLs(learnerId, lesson.getLessonId()); // will be null if learner has not started the lesson. if (objs != null) { @@ -2297,9 +2293,9 @@ // this construct looks bad but see LDEV-4609 commit for explanation if (learnerProgress instanceof LearnerProgressArchive) { - startDate = ((LearnerProgressArchive) learnerProgress).getStartDate(); + startDate = ((LearnerProgressArchive) learnerProgress).getAttemptedActivities().get(activity); } else { - startDate = ((LearnerProgress) learnerProgress).getStartDate(); + startDate = ((LearnerProgress) learnerProgress).getAttemptedActivities().get(activity); } if (startDate == null) { if (learnerProgress instanceof LearnerProgressArchive) { @@ -2462,7 +2458,7 @@ */ private Map getUserToLearnerProgressMap(Lesson lesson, List learners) { - Map map = new HashMap(); + Map map = new HashMap<>(); if (lesson == null || learners != null && learners.isEmpty()) { return map; } @@ -2473,7 +2469,7 @@ learnerProgresses = lessonService.getUserProgressForLesson(lesson.getLessonId()); } else { - List userIds = new LinkedList(); + List userIds = new LinkedList<>(); for (User learner : learners) { userIds.add(learner.getUserId()); } @@ -2497,7 +2493,7 @@ private Map getUserToGradebookUserActivityMap(Activity activity, List learners) { - Map map = new HashMap(); + Map map = new HashMap<>(); if (activity == null || learners != null && learners.isEmpty()) { return map; } @@ -2508,7 +2504,7 @@ gradebookUserActivities = gradebookDAO.getAllGradebookUserActivitiesForActivity(activity.getActivityId()); } else { - List userIds = new LinkedList(); + List userIds = new LinkedList<>(); for (User learner : learners) { userIds.add(learner.getUserId()); } @@ -2532,7 +2528,7 @@ */ private Map getActivityToTotalMarkMap(Collection activities) { - Map map = new HashMap(); + Map map = new HashMap<>(); for (ToolActivity activity : activities) { map.put(activity.getActivityId(), toolService.getActivityMaxPossibleMark(activity)); } @@ -2549,7 +2545,7 @@ */ private Map getUserToGradebookUserLessonMap(Lesson lesson, List learners) { - Map map = new HashMap(); + Map map = new HashMap<>(); if (lesson == null || learners != null && learners.isEmpty()) { return map; } @@ -2560,7 +2556,7 @@ gradebookUserLessons = gradebookDAO.getGradebookUserLessons(lesson); } else { - List userIds = new LinkedList(); + List userIds = new LinkedList<>(); for (User learner : learners) { userIds.add(learner.getUserId()); }