Merge branch 'develop' of ssh://dev.e-taxonomy.eu/var/git/cdmlib into develop
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / service / NodeDtoSortMode.java
1 package eu.etaxonomy.cdm.api.service;
2
3 import java.util.Comparator;
4
5 import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
6 import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDtoByNameComparator;
7 import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDtoByRankAndNameComparator;
8 import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDtoNaturalComparator;
9
10 public enum NodeDtoSortMode {
11
12 NaturalOrder(TaxonNodeDtoNaturalComparator.class),
13 /**
14 * sorts by TaxonName titleCaches and rank associated with the taxonNodes
15 */
16 RankAndAlphabeticalOrder(TaxonNodeDtoByRankAndNameComparator.class),
17 /**
18 * sorts by TaxonName titleCaches associated with the taxonNodes
19 */
20 AlphabeticalOrder(TaxonNodeDtoByNameComparator.class);
21
22 private Class<? extends Comparator<TaxonNodeDto>> type;
23
24 NodeDtoSortMode(Class<? extends Comparator<TaxonNodeDto>> type){
25 this.type = type;
26 }
27
28 /**
29 * @return
30 */
31 public Comparator<TaxonNodeDto> 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 }