Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java =================================================================== diff -u -rdabbd69e717a9fa6ea189cd88e66540772bae9fe -rda1be8146d2ef06173298f684230e39a691d707a --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision dabbd69e717a9fa6ea189cd88e66540772bae9fe) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision da1be8146d2ef06173298f684230e39a691d707a) @@ -25,6 +25,7 @@ import java.text.DateFormat; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Date; import java.util.HashMap; @@ -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; @@ -610,10 +612,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); @@ -764,9 +767,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(); @@ -869,7 +872,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(); @@ -880,16 +883,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 da1be8146d2ef06173298f684230e39a691d707a) @@ -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(); + } +}