Index: samigo-app/src/java/org/sakaiproject/tool/assessment/ui/bean/author/SectionBean.java =================================================================== --- samigo-app/src/java/org/sakaiproject/tool/assessment/ui/bean/author/SectionBean.java (revision 104225) +++ samigo-app/src/java/org/sakaiproject/tool/assessment/ui/bean/author/SectionBean.java (working copy) @@ -31,7 +31,8 @@ import java.util.Iterator; import java.util.List; import java.text.Collator; - +import java.text.ParseException; +import java.text.RuleBasedCollator; import javax.faces.context.ExternalContext; import javax.faces.context.FacesContext; import javax.faces.event.ValueChangeEvent; @@ -401,8 +402,12 @@ public int compare(Object o1, Object o2) { SelectItem i1 = (SelectItem)o1; SelectItem i2 = (SelectItem)o2; - return Collator.getInstance().compare(i1.getLabel(),i2.getLabel()); - + try{ + RuleBasedCollator r_collator= new RuleBasedCollator(((RuleBasedCollator)Collator.getInstance()).getRules().replaceAll("<'\u005f'", "<' '<'\u005f'")); + return r_collator.compare(i1.getLabel(), i2.getLabel()); + }catch(ParseException e){ + return Collator.getInstance().compare(i1.getLabel(),i2.getLabel()); + } } } Index: samigo-services/src/java/org/sakaiproject/tool/assessment/integration/helper/integrated/FacadeUtils.java =================================================================== --- samigo-services/src/java/org/sakaiproject/tool/assessment/integration/helper/integrated/FacadeUtils.java (revision 104225) +++ samigo-services/src/java/org/sakaiproject/tool/assessment/integration/helper/integrated/FacadeUtils.java (working copy) @@ -24,7 +24,8 @@ import java.util.*; import java.text.Collator; - +import java.text.ParseException; +import java.text.RuleBasedCollator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.sakaiproject.section.api.coursemanagement.EnrollmentRecord; @@ -44,7 +45,12 @@ */ public static final Comparator ENROLLMENT_NAME_COMPARATOR = new Comparator() { public int compare(Object o1, Object o2) { - return Collator.getInstance().compare(((EnrollmentRecord)o1).getUser().getSortName(),((EnrollmentRecord)o2).getUser().getSortName()); + try{ + RuleBasedCollator r_collator= new RuleBasedCollator(((RuleBasedCollator)Collator.getInstance()).getRules().replaceAll("<'\u005f'", "<' '<'\u005f'")); + return r_collator.compare(((EnrollmentRecord)o1).getUser().getSortName(),((EnrollmentRecord)o2).getUser().getSortName()); + }catch(ParseException e){ + return Collator.getInstance().compare(((EnrollmentRecord)o1).getUser().getSortName(),((EnrollmentRecord)o2).getUser().getSortName()); + } } }; @@ -54,7 +60,12 @@ */ public static final Comparator ENROLLMENT_DISPLAY_UID_COMPARATOR = new Comparator() { public int compare(Object o1, Object o2) { - return Collator.getInstance().compare(((EnrollmentRecord)o1).getUser().getDisplayId(),((EnrollmentRecord)o2).getUser().getDisplayId()); + try{ + RuleBasedCollator r_collator= new RuleBasedCollator(((RuleBasedCollator)Collator.getInstance()).getRules().replaceAll("<'\u005f'", "<' '<'\u005f'")); + return r_collator.compare(((EnrollmentRecord)o1).getUser().getDisplayId(),((EnrollmentRecord)o2).getUser().getDisplayId()); + }catch(ParseException e){ + return Collator.getInstance().compare(((EnrollmentRecord)o1).getUser().getDisplayId(),((EnrollmentRecord)o2).getUser().getDisplayId()); + } } }; Index: samigo-services/src/java/org/sakaiproject/tool/assessment/integration/helper/standalone/FacadeUtils.java =================================================================== --- samigo-services/src/java/org/sakaiproject/tool/assessment/integration/helper/standalone/FacadeUtils.java (revision 104225) +++ samigo-services/src/java/org/sakaiproject/tool/assessment/integration/helper/standalone/FacadeUtils.java (working copy) @@ -24,7 +24,8 @@ import java.util.*; import java.text.Collator; - +import java.text.ParseException; +import java.text.RuleBasedCollator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.sakaiproject.section.api.coursemanagement.EnrollmentRecord; @@ -44,7 +45,12 @@ */ public static final Comparator ENROLLMENT_NAME_COMPARATOR = new Comparator() { public int compare(Object o1, Object o2) { - return Collator.getInstance().compare(((EnrollmentRecord)o1).getUser().getSortName(),((EnrollmentRecord)o2).getUser().getSortName()); + try{ + RuleBasedCollator r_collator= new RuleBasedCollator(((RuleBasedCollator)Collator.getInstance()).getRules().replaceAll("<'\u005f'", "<' '<'\u005f'")); + return r_collator.compare(((EnrollmentRecord)o1).getUser().getSortName(),((EnrollmentRecord)o2).getUser().getSortName()); + }catch(ParseException e){ + return Collator.getInstance().compare(((EnrollmentRecord)o1).getUser().getSortName(),((EnrollmentRecord)o2).getUser().getSortName()); + } } }; @@ -54,7 +60,12 @@ */ public static final Comparator ENROLLMENT_DISPLAY_UID_COMPARATOR = new Comparator() { public int compare(Object o1, Object o2) { - return Collator.getInstance().compare(((EnrollmentRecord)o1).getUser().getDisplayId(),((EnrollmentRecord)o2).getUser().getDisplayId()); + try{ + RuleBasedCollator r_collator= new RuleBasedCollator(((RuleBasedCollator)Collator.getInstance()).getRules().replaceAll("<'\u005f'", "<' '<'\u005f'")); + return r_collator.compare(((EnrollmentRecord)o1).getUser().getDisplayId(),((EnrollmentRecord)o2).getUser().getDisplayId()); + }catch(ParseException e){ + return Collator.getInstance().compare(((EnrollmentRecord)o1).getUser().getDisplayId(),((EnrollmentRecord)o2).getUser().getDisplayId()); + } } };