From 27225cc0aef2d730b6e8bdaa6b6b02ec784a6bb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Mon, 25 Apr 2011 18:38:37 +0200 Subject: [PATCH] Refactor Criterion comparators FEA: ItEr74S04BugFixing --- .../resources/entities/Criterion.java | 68 +++++++++++-------- 1 file changed, 38 insertions(+), 30 deletions(-) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/Criterion.java b/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/Criterion.java index 99ad76b1e..a81d6ef0f 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/Criterion.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/Criterion.java @@ -31,6 +31,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import org.apache.commons.collections.ComparatorUtils; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.Validate; import org.apache.commons.lang.builder.EqualsBuilder; @@ -69,42 +70,49 @@ public class Criterion extends IntegrationEntity implements ICriterion { } - public static List sortByName(Collection criterions) { - List result = new ArrayList(criterions); - Collections.sort(result, new Comparator() { + public static final Comparator byName = new Comparator() { - @Override - public int compare(Criterion o1, Criterion o2) { - if (o1.getName() == null) { - return 1; - } - if (o2.getName() == null) { - return -1; - } - return o1.getName().toLowerCase().compareTo( - o2.getName().toLowerCase()); + @Override + public int compare(Criterion o1, Criterion o2) { + if (o1.getName() == null) { + return 1; } - }); + if (o2.getName() == null) { + return -1; + } + return o1.getName().toLowerCase() + .compareTo(o2.getName().toLowerCase()); + } + }; + + public static final Comparator byType = new Comparator() { + + @Override + public int compare(Criterion o1, Criterion o2) { + if (o1.getType().getName() == null) { + return 1; + } + if (o2.getType().getName() == null) { + return -1; + } + return o1.getType().getName().toLowerCase() + .compareTo(o2.getType().getName().toLowerCase()); + } + }; + + public static List sortByName( + Collection criterions) { + List result = new ArrayList(criterions); + Collections.sort(result, byName); return result; } - public static List sortByTypeAndName(Collection criterions) { + @SuppressWarnings("unchecked") + public static List sortByTypeAndName( + Collection criterions) { List result = new ArrayList(criterions); - Collections.sort(result, new Comparator() { - - @Override - public int compare(Criterion o1, Criterion o2) { - if (o1.getName() == null || o1.getType().getName() == null) { - return 1; - } - if (o2.getName() == null || o2.getType().getName() == null) { - return -1; - } - String name1 = o1.getType().getName() + " " + o1.getName(); - String name2 = o2.getType().getName() + " " + o2.getName(); - return name1.compareTo(name2); - } - }); + Collections.sort(result, + ComparatorUtils.chainedComparator(byType, byName)); return result; }