Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java =================================================================== diff -u -rb41a65a8bc95cd6c8b5e3d22ecdf1a352ad6bcc0 -r7ad79c50d0bc5a1021cae22a121c1123f3943db3 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision b41a65a8bc95cd6c8b5e3d22ecdf1a352ad6bcc0) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision 7ad79c50d0bc5a1021cae22a121c1123f3943db3) @@ -26,6 +26,7 @@ import java.text.DateFormat; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.Iterator; @@ -53,6 +54,7 @@ import org.lamsfoundation.lams.gradebook.util.GBGridView; import org.lamsfoundation.lams.gradebook.util.GradebookConstants; 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.Group; import org.lamsfoundation.lams.learningdesign.Grouping; @@ -296,6 +298,8 @@ //size will be 0 in case of excel export if (size == 0) { learners = new LinkedList(lesson.getAllLearners()); + Collections.sort(learners, new UserComparator()); + userToLearnerProgressMap = getUserToLearnerProgressMap(lesson, null); userToGradebookUserLessonMap = getUserToGradebookUserLessonMap(lesson, null); @@ -619,10 +623,11 @@ HashMap> activityToUserDTOMap = new HashMap>(); - Set learners = lesson.getAllLearners(); - if (learners == null) { - learners = new TreeSet(); + Set learners = new TreeSet(new UserComparator()); + if (lesson.getAllLearners() != null) { + learners.addAll(lesson.getAllLearners()); } + Map userToLearnerProgressMap = getUserToLearnerProgressMap(lesson, null); Set activities = getLessonActivities(lesson); @@ -771,9 +776,9 @@ // -------------------- process Learner View page -------------------------------- - Set learners = lesson.getAllLearners(); - if (learners == null) { - learners = new TreeSet(); + Set learners = new TreeSet(new UserComparator()); + if (lesson.getAllLearners() != null) { + learners.addAll(lesson.getAllLearners()); } rowList = new LinkedList(); @@ -872,7 +877,7 @@ rowList.add(headerRow); // collect users from all lessons - Set allLearners = new LinkedHashSet(); + LinkedHashSet allLearners = new LinkedHashSet(); List lessonIds = new LinkedList(); for (Lesson lesson : lessons) { Set dbLessonUsers = lesson.getAllLearners(); @@ -883,16 +888,20 @@ // Fetching the user data List learnerProgresses; List gradebookUserLessons; - if (allLearners == null || allLearners.isEmpty()) { + if (allLearners.isEmpty()) { learnerProgresses = new LinkedList(); gradebookUserLessons = new LinkedList(); } else { learnerProgresses = learnerProgressDAO.getLearnerProgressForLessons(lessonIds); gradebookUserLessons = gradebookDAO.getGradebookUserLessons(lessonIds); } + + //sort users by last name + TreeSet sortedLearners = new TreeSet(new UserComparator()); + sortedLearners.addAll(allLearners); - for (User learner : allLearners) { + for (User learner : sortedLearners) { i = 0; ExcelCell[] userDataRow = new ExcelCell[numberOfCellsInARow]; userDataRow[i++] = new ExcelCell(learner.getLastName(), false); Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/util/UserComparator.java =================================================================== diff -u --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/util/UserComparator.java (revision 0) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/util/UserComparator.java (revision 7ad79c50d0bc5a1021cae22a121c1123f3943db3) @@ -0,0 +1,16 @@ +package org.lamsfoundation.lams.gradebook.util; + +import java.util.Comparator; + +import org.apache.commons.lang.builder.CompareToBuilder; +import org.lamsfoundation.lams.usermanagement.User; + +/** + * Sorts users by last names. + */ +public class UserComparator implements Comparator { + public int compare(User o1, User o2) { + return new CompareToBuilder().append(o1.getLastName(), o2.getLastName()) + .append(o1.getFirstName(), o2.getFirstName()).append(o1.getLogin(), o2.getLogin()).toComparison(); + } +}