/** Builds a composite comparator matching the specified sortBy array */ public static Comparator<Info> buildComparator(SortBy... sortBy) { if (sortBy.length == 0) { throw new IllegalArgumentException( "No way to build comparators out of an empty comparator set"); } if (sortBy.length == 1) { return buildComparator(sortBy[0]); } else { List<Comparator<Info>> comparators = new ArrayList<Comparator<Info>>(); for (SortBy curr : sortBy) { Comparator<Info> comparator = buildComparator(curr); comparators.add(comparator); } return new CompositeComparator<Info>(comparators); } }
/** * Builds a composite comparator matching the specified sortBy array * * <ul> * <li>{@link SortBy#NATURAL_ORDER}: sort by feature id (acceding) * <li>{@link SortBy#REVERSE_ORDER}: sort by feature id (descending) * <li>sort by supplied property name, and sort order * </ul> * * @param sortBy sort order (defined in order of precidence) */ public static Comparator<Feature> buildComparator(SortBy... sortBy) { if (sortBy.length == 0) { throw new IllegalArgumentException( "No way to build comparators out of an empty comparator set"); } if (sortBy.length == 1) { return buildComparator(sortBy[0]); } else { List<Comparator<Feature>> comparators = new ArrayList<Comparator<Feature>>(); for (SortBy curr : sortBy) { Comparator<Feature> comparator = buildComparator(curr); comparators.add(comparator); } return new CompositeComparator<Feature>(comparators); } }