278a3d3ba53cf2a9758b3044f2a6eec7f5c19e48
[cdmlib.git] / cdmlib-model / src / main / java / eu / etaxonomy / cdm / model / name / RankClass.java
1 /**
2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
8 */
9
10 package eu.etaxonomy.cdm.model.name;
11
12 import java.io.Serializable;
13 import java.util.Set;
14 import java.util.UUID;
15
16 import javax.xml.bind.annotation.XmlEnum;
17 import javax.xml.bind.annotation.XmlEnumValue;
18
19 import org.apache.log4j.Logger;
20
21 import eu.etaxonomy.cdm.model.common.EnumeratedTermVoc;
22 import eu.etaxonomy.cdm.model.common.IEnumTerm;
23 import eu.etaxonomy.cdm.model.common.Language;
24
25 /**
26 * The rank class defines the category of ranks a certain rank belongs to. This information is
27 * usually needed for correct formatting of taxon name text representations by using e.g.
28 * {@link Rank#isSupraGeneric()} . Prior to v3.3 this was computed by comparison of ranks.
29 * The current solution makes such methods less dependend on term loading.<BR>
30 * @see http://dev.e-taxonomy.eu/trac/ticket/3521
31 *
32 * @author a.mueller
33 * @since 11.06.2013
34 */
35 @XmlEnum
36 public enum RankClass implements IEnumTerm<RankClass>, Serializable{
37
38 //0
39 /**
40 * Unknown rank class is to be used if no information is available about the rank class.
41 * In the current model this type should never be used. However, it is a placeholder in case
42 * we find an appropriate usage in future and in case one needs a short term dummy.
43 */
44 @XmlEnumValue("Unknown")
45 @Deprecated Unknown(UUID.fromString("8c99ba63-2904-4dbb-87cb-3d3d7467e95d"), "Unknown rank class","UN", null),
46
47 //1
48 /**
49 * Class of ranks higher than {@link Rank#GENUS()}
50 */
51 @XmlEnumValue("Suprageneric")
52 Suprageneric(UUID.fromString("439a7897-9e0d-4560-b238-459d827f8a70"), "Suprageneric", "SG", null),
53
54 //2
55 /**
56 * Class of ranks equal to {@link Rank#GENUS()}. It is expected that there is only 1 such rank.
57 */
58 @XmlEnumValue("Genus")
59 Genus(UUID.fromString("86de25dc-3594-462f-a716-6d008caf2662"), "Genus", "GE", null),
60
61 //3
62 /**
63 * Class of ranks below {@link Rank#GENUS()} and above {@link Rank#SPECIES()}.
64 * This class includes {@link #SpeciesGroup species groups}
65 */
66 @XmlEnumValue("Infrageneric")
67 Infrageneric(UUID.fromString("37d5b535-3bf9-4749-af66-1a1c089dc0ae"), "Rank", "IG", null),
68
69 //4
70 /**
71 * Class of ranks directly above {@link Rank#SPECIES()} which are used to group certain species
72 * e.g. for better usability.
73 * This class is part of the {@link #Infrageneric} class but different nomenclatural rules are applied.
74 */
75 @XmlEnumValue("SpeciesGroup")
76 SpeciesGroup(UUID.fromString("702edcb7-ee53-45b7-8635-efcbbfd69bca"), "Species group or aggr.", "AG", Infrageneric),
77
78 //5
79 /**
80 * Class of ranks equal to {@link Rank#SPECIES()}. It is expected that there is only 1 such rank.
81 */
82 @XmlEnumValue("Species")
83 Species(UUID.fromString("74cc173b-788e-4b01-9d70-a988498458b7"), "Species", "SP", null),
84
85 //6
86 /**
87 * Class of ranks lower than {@link Rank#SPECIES()}
88 */
89 @XmlEnumValue("Infraspecific")
90 Infraspecific(UUID.fromString("25915b4c-7f07-442f-bdaa-9d0223f6be42"), "Infraspecific", "IS", null),
91
92 ;
93
94
95 @SuppressWarnings("unused")
96 private static final Logger logger = Logger.getLogger(RankClass.class);
97
98
99
100 private RankClass(UUID uuid, String defaultString, String key, RankClass parent){
101 delegateVocTerm = EnumeratedTermVoc.addTerm(getClass(), this, uuid, defaultString, key, parent);
102 }
103
104 // *************************** DELEGATE **************************************/
105
106 private static EnumeratedTermVoc<RankClass> delegateVoc;
107 private IEnumTerm<RankClass> delegateVocTerm;
108
109 static {
110 delegateVoc = EnumeratedTermVoc.getVoc(RankClass.class);
111 }
112
113 @Override
114 public String getKey(){return delegateVocTerm.getKey();}
115
116 @Override
117 public String getMessage(){return delegateVocTerm.getMessage();}
118
119 @Override
120 public String getMessage(Language language){return delegateVocTerm.getMessage(language);}
121
122 @Override
123 public UUID getUuid() {return delegateVocTerm.getUuid();}
124
125 @Override
126 public RankClass getKindOf() {return delegateVocTerm.getKindOf();}
127
128 @Override
129 public Set<RankClass> getGeneralizationOf() {return delegateVocTerm.getGeneralizationOf();}
130
131 @Override
132 public boolean isKindOf(RankClass ancestor) {return delegateVocTerm.isKindOf(ancestor); }
133
134 @Override
135 public Set<RankClass> getGeneralizationOf(boolean recursive) {return delegateVocTerm.getGeneralizationOf(recursive);}
136
137
138
139 public static RankClass getByKey(String key){return delegateVoc.getByKey(key);}
140 public static RankClass getByUuid(UUID uuid) {return delegateVoc.getByUuid(uuid);}
141
142
143 }