X-Git-Url: https://dev.e-taxonomy.eu/gitweb/cdmlib.git/blobdiff_plain/15c13570807fffa7854f7fa5884f4abd4c275520..6b929840715bd88dc66fd3f0cc9abd88530b2487:/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/NodeSortMode.java diff --git a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/NodeSortMode.java b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/NodeSortMode.java index 4aed0d8f0c..ba2cc6c3c4 100644 --- a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/NodeSortMode.java +++ b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/NodeSortMode.java @@ -1,7 +1,40 @@ package eu.etaxonomy.cdm.api.service; +import java.util.Comparator; + +import eu.etaxonomy.cdm.model.taxon.TaxonNaturalComparator; +import eu.etaxonomy.cdm.model.taxon.TaxonNode; +import eu.etaxonomy.cdm.model.taxon.TaxonNodeByNameComparator; +import eu.etaxonomy.cdm.model.taxon.TaxonNodeByRankAndNameComparator; + public enum NodeSortMode { - NaturalOrder, - RankAndAlphabeticalOrder, - AlphabeticalOrder + + NaturalOrder(TaxonNaturalComparator.class), + /** + * sorts by TaxonName titleCaches and rank associated with the taxonNodes + */ + RankAndAlphabeticalOrder(TaxonNodeByRankAndNameComparator.class), + /** + * sorts by TaxonName titleCaches associated with the taxonNodes + */ + AlphabeticalOrder(TaxonNodeByNameComparator.class); + + private Class> type; + + NodeSortMode(Class> type){ + this.type = type; + } + + /** + * @return + */ + public Comparator newComparator() { + try { + return type.newInstance(); + } catch (InstantiationException e) { + throw new RuntimeException(e); + } catch (IllegalAccessException e) { + throw new RuntimeException(e); + } + } }