/** * 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); } }
@Override public FeatureCollection<FeatureType, Feature> sort(SortBy order) { List<Feature> results = new ArrayList<Feature>(features); Comparator<Feature> comparator = ComplexComparatorFactory.buildComparator(order); Collections.sort(results, comparator); return new MemoryFeatureCollection(getSchema(), results); }
Comparator<Feature> comparator = ComplexComparatorFactory.buildComparator(q.getSortBy()); Arrays.sort(features, comparator);
Feature[] features = (Feature[]) records.toArray(new Feature[records.size()]); Comparator<Feature> comparator = ComplexComparatorFactory.buildComparator(q.getSortBy()); Arrays.sort(features, comparator);