refactoring NodeSortMode
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / service / NodeSortMode.java
1 package eu.etaxonomy.cdm.api.service;
2
3 import java.util.Comparator;
4
5 import eu.etaxonomy.cdm.model.taxon.TaxonNaturalComparator;
6 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
7 import eu.etaxonomy.cdm.model.taxon.TaxonNodeByNameComparator;
8 import eu.etaxonomy.cdm.model.taxon.TaxonNodeByRankAndNameComparator;
9
10 public enum NodeSortMode {
11
12 NaturalOrder(TaxonNaturalComparator.class),
13 /**
14 * sorts by TaxonName titleCaches and rank associated with the taxonNodes
15 */
16 RankAndAlphabeticalOrder(TaxonNodeByRankAndNameComparator.class),
17 /**
18 * sorts by TaxonName titleCaches associated with the taxonNodes
19 */
20 AlphabeticalOrder(TaxonNodeByNameComparator.class);
21
22 private Class<? extends Comparator<TaxonNode>> type;
23
24 NodeSortMode(Class<? extends Comparator<TaxonNode>> type){
25 this.type = type;
26 }
27
28 /**
29 * @return
30 */
31 public Comparator<TaxonNode> newComparator() {
32 try {
33 return type.newInstance();
34 } catch (InstantiationException e) {
35 throw new RuntimeException(e);
36 } catch (IllegalAccessException e) {
37 throw new RuntimeException(e);
38 }
39 }
40 }