Index: lams_build/lib/lams/lams.jar =================================================================== diff -u -rfd6ade152cf877cecaa63d3cb59d3bc53d60ca45 -r79100cc7efdac107d0a09ccdd77b2721f7654861 Binary files differ Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/GroupDTO.java =================================================================== diff -u -r51fb2a37254f24bb2a805d4ffd54482c779f43fa -r79100cc7efdac107d0a09ccdd77b2721f7654861 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/GroupDTO.java (.../GroupDTO.java) (revision 51fb2a37254f24bb2a805d4ffd54482c779f43fa) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/GroupDTO.java (.../GroupDTO.java) (revision 79100cc7efdac107d0a09ccdd77b2721f7654861) @@ -24,15 +24,32 @@ package org.lamsfoundation.lams.learningdesign.dto; import java.util.ArrayList; +import java.util.Comparator; import java.util.Iterator; import java.util.List; import org.lamsfoundation.lams.learningdesign.Group; import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.util.AlphanumComparator; /** Grouping object, suitable for sending to Authoring */ public class GroupDTO { + public static final Comparator GROUP_NAME_COMPARATOR = new Comparator() { + /** + * Compare the group names + */ + @Override + public int compare(GroupDTO grp1, GroupDTO grp2) { + String grp1Name = grp1 != null ? grp1.getGroupName() : ""; + + String grp2Name = grp2 != null ? grp2.getGroupName() : ""; + + AlphanumComparator comparator = new AlphanumComparator(); + return comparator.compare(grp1Name, grp2Name); + } + }; + private Long groupID; private String groupName; private int orderID; Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dto/UserBasicDTO.java =================================================================== diff -u -r51fb2a37254f24bb2a805d4ffd54482c779f43fa -r79100cc7efdac107d0a09ccdd77b2721f7654861 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/dto/UserBasicDTO.java (.../UserBasicDTO.java) (revision 51fb2a37254f24bb2a805d4ffd54482c779f43fa) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dto/UserBasicDTO.java (.../UserBasicDTO.java) (revision 79100cc7efdac107d0a09ccdd77b2721f7654861) @@ -23,11 +23,79 @@ package org.lamsfoundation.lams.usermanagement.dto; +import java.util.Comparator; + /** * @author Mitchell Seaton */ public class UserBasicDTO { + // Compares first, then last name, then login + public static final Comparator USER_BASIC_DTO_COMPARATOR = new Comparator() { + @Override + public int compare(UserBasicDTO o1, UserBasicDTO o2) { + if ((o1 == null) || (o2 == null)) { + return compareNull(o1, o2); + } else { + int retValue = compareFirstName(o1, o2); + if (retValue == 0) { + retValue = compareLastName(o1, o2); + } + if (retValue == 0) { + retValue = compareLogin(o1, o2); + } + return retValue; + } + } + + private int compareLastName(UserBasicDTO o1, UserBasicDTO o2) { + String surname1 = o1.getLastName(); + String surname2 = o2.getLastName(); + + int retValue = -1; + if ((surname1 == null) || (surname2 == null)) { + retValue = compareNull(surname1, surname2); + } else { + retValue = surname1.compareTo(surname2); + } + return retValue; + } + + private int compareFirstName(UserBasicDTO o1, UserBasicDTO o2) { + String name1 = o1.getFirstName(); + String name2 = o2.getFirstName(); + + int retValue = -1; + if ((name1 == null) || (name2 == null)) { + retValue = compareNull(name1, name2); + } else { + retValue = name1.compareTo(name2); + } + return retValue; + } + + private int compareLogin(UserBasicDTO o1, UserBasicDTO o2) { + String name1 = o1.getLogin(); + String name2 = o2.getLogin(); + + int retValue = -1; + if ((name1 == null) || (name2 == null)) { + retValue = compareNull(name1, name2); + } else { + retValue = name1.compareTo(name2); + } + return retValue; + } + + private int compareNull(Object o1, Object o2) { + if (o1 == null) { + return (o2 != null ? -1 : 0); + } else { + return 1; + } + } + }; + private Integer userID; private String firstName; private String lastName; Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/GroupingAction.java =================================================================== diff -u -r36a3c1beea2e7fbd8109512d89e6bfa39d965c51 -r79100cc7efdac107d0a09ccdd77b2721f7654861 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/GroupingAction.java (.../GroupingAction.java) (revision 36a3c1beea2e7fbd8109512d89e6bfa39d965c51) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/GroupingAction.java (.../GroupingAction.java) (revision 79100cc7efdac107d0a09ccdd77b2721f7654861) @@ -24,8 +24,6 @@ package org.lamsfoundation.lams.learning.web.action; import java.io.IOException; -import java.util.Comparator; -import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; @@ -45,14 +43,13 @@ import org.lamsfoundation.lams.learning.web.util.LearningWebUtil; import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.learningdesign.Group; -import org.lamsfoundation.lams.learningdesign.GroupComparator; import org.lamsfoundation.lams.learningdesign.Grouping; import org.lamsfoundation.lams.learningdesign.GroupingActivity; import org.lamsfoundation.lams.learningdesign.LearnerChoiceGrouping; +import org.lamsfoundation.lams.learningdesign.dto.GroupDTO; import org.lamsfoundation.lams.lesson.LearnerProgress; import org.lamsfoundation.lams.tool.ToolAccessMode; -import org.lamsfoundation.lams.usermanagement.User; -import org.lamsfoundation.lams.usermanagement.util.FirstNameAlphabeticComparator; +import org.lamsfoundation.lams.usermanagement.dto.UserBasicDTO; import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.web.action.LamsDispatchAction; import org.lamsfoundation.lams.web.util.AttributeNames; @@ -226,26 +223,23 @@ * * @param request */ + @SuppressWarnings("unchecked") private void prepareGroupData(HttpServletRequest request) { ICoreLearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); - SortedSet groups = new TreeSet(new GroupComparator()); + SortedSet groups = new TreeSet(GroupDTO.GROUP_NAME_COMPARATOR); Activity activity = LearningWebUtil.getActivityFromRequest(request, learnerService); Grouping grouping = ((GroupingActivity) activity).getCreateGrouping(); if (grouping != null) { - groups.addAll(grouping.getGroups()); + for (Group group : grouping.getGroups()) { + GroupDTO groupDTO = new GroupDTO(group, true); + groupDTO.getUserList().sort(UserBasicDTO.USER_BASIC_DTO_COMPARATOR); + groups.add(groupDTO); + } } - // sort users with first, then last name, then login - Comparator userComparator = new FirstNameAlphabeticComparator(); - for (Group group : groups) { - Set sortedUsers = new TreeSet(userComparator); - sortedUsers.addAll(group.getUsers()); - group.setUsers(sortedUsers); - } - request.setAttribute(GroupingAction.GROUPS, groups); request.setAttribute(GroupingAction.TITLE, activity.getTitle()); request.setAttribute(AttributeNames.PARAM_ACTIVITY_ID, activity.getActivityId()); Index: lams_learning/web/grouping/choose.jsp =================================================================== diff -u -r9893792dddc1c272c07323ef878ceca129292446 -r79100cc7efdac107d0a09ccdd77b2721f7654861 --- lams_learning/web/grouping/choose.jsp (.../choose.jsp) (revision 9893792dddc1c272c07323ef878ceca129292446) +++ lams_learning/web/grouping/choose.jsp (.../choose.jsp) (revision 79100cc7efdac107d0a09ccdd77b2721f7654861) @@ -72,24 +72,24 @@ - -
-    + +
+   
- + + action="/grouping.do?method=learnerChooseGroup&userId=${user.userID}&activityID=${activityID}&groupId=${group.groupID}" + styleId="form${user.userID}${activityID}${group.groupID}" target="_self"> Index: lams_learning/web/grouping/show.jsp =================================================================== diff -u -re132908a4a4554bf6b7620722ee8d03f917557be -r79100cc7efdac107d0a09ccdd77b2721f7654861 --- lams_learning/web/grouping/show.jsp (.../show.jsp) (revision e132908a4a4554bf6b7620722ee8d03f917557be) +++ lams_learning/web/grouping/show.jsp (.../show.jsp) (revision 79100cc7efdac107d0a09ccdd77b2721f7654861) @@ -54,9 +54,9 @@ - -
-    + +
+