(no commit message)
[cdmlib.git] / cdmlib-model / src / main / java / eu / etaxonomy / cdm / model / name / Rank.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 eu.etaxonomy.cdm.model.common.OrderedTermBase;
13 import eu.etaxonomy.cdm.strategy.exceptions.UnknownCdmTypeException;
14
15 import org.apache.log4j.Logger;
16
17 import java.util.*;
18 import javax.persistence.*;
19
20 /**
21 * http://rs.tdwg.org/ontology/voc/TaxonRank#TaxonRankTerm
22 * @author m.doering
23 * @version 1.0
24 * @created 08-Nov-2007 13:06:46
25 */
26 @Entity
27 public class Rank extends OrderedTermBase<Rank> {
28 static Logger logger = Logger.getLogger(Rank.class);
29
30 private static final UUID uuidEmpire = UUID.fromString("ac470211-1586-4b24-95ca-1038050b618d");
31 private static final UUID uuidDomain = UUID.fromString("ffca6ec8-8b88-417b-a6a0-f7c992aac19b");
32 private static final UUID uuidSuperkingdom = UUID.fromString("64223610-7625-4cfd-83ad-b797bf7f0edd");
33 private static final UUID uuidKingdom = UUID.fromString("fbe7109d-66b3-498c-a697-c6c49c686162");
34 private static final UUID uuidSubkingdom = UUID.fromString("a71bd9d8-f3ab-4083-afb5-d89315d71655");
35 private static final UUID uuidInfrakingdom = UUID.fromString("1e37930c-86cf-44f6-90fd-7822928df260");
36 private static final UUID uuidSuperphylum = UUID.fromString("0d0cecb1-e254-4607-b210-6801e7ecbb04");
37 private static final UUID uuidPhylum = UUID.fromString("773430d2-76b4-438c-b817-97a543a33287");
38 private static final UUID uuidSubphylum = UUID.fromString("23a9b6ff-9408-49c9-bd9e-7a2ca5ab4725");
39 private static final UUID uuidInfraphylum = UUID.fromString("1701de3a-7693-42a5-a2d3-42697f944190");
40 private static final UUID uuidSuperdivision = UUID.fromString("a735a48f-4fc8-49a7-ae0c-6a984f658131");
41 private static final UUID uuidDivision = UUID.fromString("7e56f5cc-123a-4fd1-8cbb-6fd80358b581");
42 private static final UUID uuidSubdivision = UUID.fromString("931c840f-7a6b-4d76-ad38-bfdd77d7b2e8");
43 private static final UUID uuidInfradivision = UUID.fromString("c0ede273-be52-4dee-b411-66ee08d30c94");
44 private static final UUID uuidSuperclass = UUID.fromString("e65b4e1a-21ec-428d-9b9f-e87721ab967c");
45 private static final UUID uuidClass = UUID.fromString("f23d14c4-1d34-4ee6-8b4e-eee2eb9a3daf");
46 private static final UUID uuidSubclass = UUID.fromString("8cb26733-e2f5-46cb-ab5c-f99254f877aa");
47 private static final UUID uuidInfraclass = UUID.fromString("ad23cfda-879a-4021-8629-c54d27caf717");
48 private static final UUID uuidSuperorder = UUID.fromString("c8c67a22-301a-4219-b882-4a49121232ff");
49 private static final UUID uuidOrder = UUID.fromString("b0785a65-c1c1-4eb4-88c7-dbd3df5aaad1");
50 private static final UUID uuidSuborder = UUID.fromString("768ad378-fa85-42ab-b668-763225832f57");
51 private static final UUID uuidInfraorder = UUID.fromString("84099182-a6f5-47d7-8586-33c9e9955a10");
52 private static final UUID uuidSuperfamily = UUID.fromString("2cfa510a-dcea-4a03-b66a-b1528f9b0796");
53 private static final UUID uuidFamily = UUID.fromString("af5f2481-3192-403f-ae65-7c957a0f02b6");
54 private static final UUID uuidSubfamily = UUID.fromString("862526ee-7592-4760-a23a-4ff3641541c5");
55 private static final UUID uuidInfrafamily = UUID.fromString("c3f2e3bb-6eef-4a26-9fb7-b14f4c8c5e4f");
56 private static final UUID uuidSupertribe = UUID.fromString("11e94828-8c61-499b-87d6-1de35ce2c51c");
57 private static final UUID uuidTribe = UUID.fromString("4aa6890b-0363-4899-8d7c-ee0cb78e6166");
58 private static final UUID uuidSubtribe = UUID.fromString("ae41ecc5-5165-4126-9d24-79939ae5d822");
59 private static final UUID uuidInfratribe = UUID.fromString("1ec02e8f-f2b7-4c65-af9f-b436b34c79a3");
60 private static final UUID uuidSupragenericTaxon = UUID.fromString("1fdc0b93-c354-441a-8406-091e0303ff5c");
61 private static final UUID uuidGenus = UUID.fromString("1b11c34c-48a8-4efa-98d5-84f7f66ef43a");
62 private static final UUID uuidSubgenus = UUID.fromString("78786e16-2a70-48af-a608-494023b91904");
63 private static final UUID uuidInfragenus = UUID.fromString("a9972969-82cd-4d54-b693-a096422f13fa");
64 private static final UUID uuidSection = UUID.fromString("3edff68f-8527-49b5-bf91-7e4398bb975c");
65 private static final UUID uuidSubsection = UUID.fromString("d20f5b61-d463-4448-8f8a-c1ff1f262f59");
66 private static final UUID uuidSeries = UUID.fromString("d7381ecf-48f8-429b-9c54-f461656978cd");
67 private static final UUID uuidSubseries = UUID.fromString("80c9a263-f4db-4a13-b6c2-b7fec1aa1200");
68 private static final UUID uuidSpeciesAggregate = UUID.fromString("1ecae058-4217-4f75-9c27-6d8ba099ac7a");
69 private static final UUID uuidInfragenericTaxon = UUID.fromString("41bcc6ac-37d3-4fd4-bb80-3cc5b04298b9");
70 private static final UUID uuidSpecies = UUID.fromString("b301f787-f319-4ccc-a10f-b4ed3b99a86d");
71 private static final UUID uuidSubspecificAggregate = UUID.fromString("72c248b9-027d-4402-b375-dd4f0850c9ad");
72 private static final UUID uuidSubspecies = UUID.fromString("462a7819-8b00-4190-8313-88b5be81fad5");
73 private static final UUID uuidInfraspecies = UUID.fromString("f28ebc9e-bd50-4194-9af1-42f5cb971a2c");
74 private static final UUID uuidVariety = UUID.fromString("d5feb6a5-af5c-45ef-9878-bb4f36aaf490");
75 private static final UUID uuidBioVariety = UUID.fromString("a3a364cb-1a92-43fc-a717-3c44980a0991");
76 private static final UUID uuidPathoVariety = UUID.fromString("2f4f4303-a099-47e3-9048-d749d735423b");
77 private static final UUID uuidSubvariety = UUID.fromString("9a83862a-7aee-480c-a98d-4bceaf8712ca");
78 private static final UUID uuidSubsubvariety = UUID.fromString("bff22f84-553a-4429-a4e7-c4b3796c3a18");
79 private static final UUID uuidConvar = UUID.fromString("2cc740c9-cebb-43c8-9b06-1bef79e6a56a");
80 private static final UUID uuidForm = UUID.fromString("0461281e-458a-47b9-8d41-19a3d39356d5");
81 private static final UUID uuidSpecialForm = UUID.fromString("bed20aee-2f5a-4635-9c02-eff06246d067");
82 private static final UUID uuidSubform = UUID.fromString("47cfc5b0-0fb7-4ceb-b61d-e1dd8de8b569");
83 private static final UUID uuidSubsubform = UUID.fromString("1c8ac389-4349-4ae0-87be-7239f6635068");
84 private static final UUID uuidInfraspecificTaxon = UUID.fromString("eb75c27d-e154-4570-9d96-227b2df60474");
85 private static final UUID uuidCandidate = UUID.fromString("ead9a1f5-dfd4-4de2-9121-70a47accb10b");
86 private static final UUID uuidDenominationClass = UUID.fromString("49bdf74a-2170-40ed-8be2-887a0db517bf");
87 private static final UUID uuidGrex = UUID.fromString("08dcb4ff-ac58-48a3-93af-efb3d836ac84");
88 private static final UUID uuidGraftChimaera = UUID.fromString("6b4063bc-f934-4796-9bf3-0ef3aea5c1cb");
89 private static final UUID uuidCultivarGroup = UUID.fromString("d763e7d3-e7de-4bb1-9d75-225ca6948659");
90 private static final UUID uuidCultivar = UUID.fromString("5e98415b-dc6e-440b-95d6-ea33dbb39ad0");
91
92
93 public Rank() {
94 super();
95 }
96
97 public Rank(String term, String label) {
98 super(term, label);
99 }
100
101 public static final Rank EMPIRE(){
102 return (Rank)findByUuid(uuidEmpire);
103 }
104 public static final Rank DOMAIN(){
105 return (Rank)findByUuid(uuidDomain);
106 }
107 public static final Rank SUPERKINGDOM(){
108 return (Rank)findByUuid(uuidSuperkingdom);
109 }
110 public static final Rank KINGDOM(){
111 return (Rank)findByUuid(uuidKingdom);
112 }
113 public static final Rank SUBKINGDOM(){
114 return (Rank)findByUuid(uuidSubkingdom);
115 }
116 public static final Rank INFRAKINGDOM(){
117 return (Rank)findByUuid(uuidInfrakingdom);
118 }
119 public static final Rank SUPERPHYLUM(){
120 return (Rank)findByUuid(uuidSuperphylum);
121 }
122 public static final Rank PHYLUM(){
123 return (Rank)findByUuid(uuidPhylum);
124 }
125 public static final Rank SUBPHYLUM(){
126 return (Rank)findByUuid(uuidSubphylum);
127 }
128 public static final Rank INFRAPHYLUM(){
129 return (Rank)findByUuid(uuidInfraphylum);
130 }
131 public static final Rank SUPERDIVISION(){
132 return (Rank)findByUuid(uuidSuperdivision);
133 }
134 public static final Rank DIVISION(){
135 return (Rank)findByUuid(uuidDivision);
136 }
137 public static final Rank SUBDIVISION(){
138 return (Rank)findByUuid(uuidSubdivision);
139 }
140 public static final Rank INFRADIVISION(){
141 return (Rank)findByUuid(uuidInfradivision);
142 }
143 public static final Rank SUPERCLASS(){
144 return (Rank)findByUuid(uuidSuperclass);
145 }
146 public static final Rank CLASS(){
147 return (Rank)findByUuid(uuidClass);
148 }
149 public static final Rank SUBCLASS(){
150 return (Rank)findByUuid(uuidSubclass);
151 }
152 public static final Rank INFRACLASS(){
153 return (Rank)findByUuid(uuidInfraclass);
154 }
155 public static final Rank SUPERORDER(){
156 return (Rank)findByUuid(uuidSuperorder);
157 }
158 public static final Rank ORDER(){
159 return (Rank)findByUuid(uuidOrder);
160 }
161 public static final Rank SUBORDER(){
162 return (Rank)findByUuid(uuidSuborder);
163 }
164 public static final Rank INFRAORDER(){
165 return (Rank)findByUuid(uuidInfraorder);
166 }
167 public static final Rank SUPERFAMILY(){
168 return (Rank)findByUuid(uuidSuperfamily);
169 }
170 public static final Rank FAMILY(){
171 return (Rank)findByUuid(uuidFamily);
172 }
173 public static final Rank SUBFAMILY(){
174 return (Rank)findByUuid(uuidSubfamily);
175 }
176 public static final Rank INFRAFAMILY(){
177 return (Rank)findByUuid(uuidInfrafamily);
178 }
179 public static final Rank SUPERTRIBE(){
180 return (Rank)findByUuid(uuidSupertribe);
181 }
182 public static final Rank TRIBE(){
183 return (Rank)findByUuid(uuidTribe);
184 }
185 public static final Rank SUBTRIBE(){
186 return (Rank)findByUuid(uuidSubtribe);
187 }
188 public static final Rank INFRATRIBE(){
189 return (Rank)findByUuid(uuidInfratribe);
190 }
191 public static final Rank SUPRAGENERICTAXON(){
192 return (Rank)findByUuid(uuidSupragenericTaxon);
193 }
194 public static final Rank GENUS(){
195 return (Rank)findByUuid(uuidGenus);
196 }
197 public static final Rank SUBGENUS(){
198 return (Rank)findByUuid(uuidSubgenus);
199 }
200 public static final Rank INFRAGENUS(){
201 return (Rank)findByUuid(uuidInfragenus);
202 }
203 public static final Rank SECTION(){
204 return (Rank)findByUuid(uuidSection);
205 }
206 public static final Rank SUBSECTION(){
207 return (Rank)findByUuid(uuidSubsection);
208 }
209 public static final Rank SERIES(){
210 return (Rank)findByUuid(uuidSeries);
211 }
212 public static final Rank SUBSERIES(){
213 return (Rank)findByUuid(uuidSubseries);
214 }
215 public static final Rank SPECIESAGGREGATE(){
216 return (Rank)findByUuid(uuidSpeciesAggregate);
217 }
218 public static final Rank INFRAGENERICTAXON(){
219 return (Rank)findByUuid(uuidInfragenericTaxon);
220 }
221 public static final Rank SPECIES(){
222 return (Rank)findByUuid(uuidSpecies);
223 }
224 public static final Rank SUBSPECIFICAGGREGATE(){
225 return (Rank)findByUuid(uuidSubspecificAggregate);
226 }
227 public static final Rank SUBSPECIES(){
228 return (Rank)findByUuid(uuidSubspecies);
229 }
230 public static final Rank INFRASPECIES(){
231 return (Rank)findByUuid(uuidInfraspecies);
232 }
233 public static final Rank VARIETY(){
234 return (Rank)findByUuid(uuidVariety);
235 }
236 public static final Rank BIOVARIETY(){
237 return (Rank)findByUuid(uuidBioVariety);
238 }
239 public static final Rank PATHOVARIETY(){
240 return (Rank)findByUuid(uuidPathoVariety);
241 }
242 public static final Rank SUBVARIETY(){
243 return (Rank)findByUuid(uuidSubvariety);
244 }
245 public static final Rank SUBSUBVARIETY(){
246 return (Rank)findByUuid(uuidSubsubvariety);
247 }
248 public static final Rank CONVAR(){
249 return (Rank)findByUuid(uuidConvar);
250 }
251 public static final Rank FORM(){
252 return (Rank)findByUuid(uuidForm);
253 }
254 public static final Rank SPECIALFORM(){
255 return (Rank)findByUuid(uuidSpecialForm);
256 }
257 public static final Rank SUBFORM(){
258 return (Rank)findByUuid(uuidSubform);
259 }
260 public static final Rank SUBSUBFORM(){
261 return (Rank)findByUuid(uuidSubsubform);
262 }
263 public static final Rank INFRASPECIFICTAXON(){
264 return (Rank)findByUuid(uuidInfraspecificTaxon);
265 }
266 public static final Rank CANDIDATE(){
267 return (Rank)findByUuid(uuidCandidate);
268 }
269 public static final Rank DENOMINATIONCLASS(){
270 return (Rank)findByUuid(uuidDenominationClass);
271 }
272 public static final Rank GREX(){
273 return (Rank)findByUuid(uuidGrex);
274 }
275 public static final Rank GRAFTCHIMAERA(){
276 return (Rank)findByUuid(uuidGraftChimaera);
277 }
278 public static final Rank CULTIVARGROUP(){
279 return (Rank)findByUuid(uuidCultivarGroup);
280 }
281 public static final Rank CULTIVAR(){
282 return (Rank)findByUuid(uuidCultivar);
283 }
284
285
286 /**
287 * True, if this Rank is higher than GENUS, else false.
288 * @return
289 */
290 @Transient
291 public boolean isSupraGeneric(){
292 return (this.isHigher(Rank.GENUS()));
293 }
294
295 /**
296 * True, if this Rank equals GENUS, else false.
297 * @return
298 */
299 @Transient
300 public boolean isGenus(){
301 return (this.equals(Rank.GENUS()));
302 }
303
304 /**
305 * True, if this Rank is lower than GENUS and higher than SPECIES, else false.
306 * @return
307 */
308 @Transient
309 public boolean isInfraGeneric(){
310 return (this.isLower(Rank.GENUS()) && this.isHigher(Rank.SPECIES()));
311 }
312
313 /**
314 * True, if this Rank equals SPECIES, else false.
315 * @return
316 */
317 @Transient
318 public boolean isSpecies(){
319 return (this.equals(Rank.SPECIES()));
320 }
321
322 /**
323 * True, if this Rank is lower than SPECIES, else false.
324 * @return
325 */
326 @Transient
327 public boolean isInfraSpecific(){
328 return (this.isLower(Rank.SPECIES()));
329 }
330
331 /**
332 * NOT YET COMPLETE !!
333 * @param strRank
334 * @return Rank
335 * @throws UnknownCdmTypeException
336 */
337 @Transient
338 public static Rank getRankByNameOrAbbreviation(String strRank)
339 throws UnknownCdmTypeException{
340 try {
341 return getRankByAbbreviation(strRank);
342 } catch (UnknownCdmTypeException e) {
343 return getRankByName(strRank);
344 }
345 }
346
347
348 /** TODO
349 * preliminary implementation for BotanicalNameParser
350 * * not yet complete
351 */
352 @Transient
353 public static Rank getRankByAbbreviation(String abbrev) throws UnknownCdmTypeException{
354 if (abbrev == null){ throw new NullPointerException("abbrev is 'null' in getRankByAbbreviation");
355 }else if (abbrev.equalsIgnoreCase("reg.")){ return Rank.KINGDOM();
356 }else if (abbrev.equalsIgnoreCase("subreg.")){ return Rank.SUBKINGDOM();
357 }else if (abbrev.equalsIgnoreCase("phyl.")){return Rank.PHYLUM();
358 }else if (abbrev.equalsIgnoreCase("subphyl.")) { return Rank.SUBPHYLUM();
359 }else if (abbrev.equalsIgnoreCase("div.")) { return Rank.DIVISION();
360 }else if (abbrev.equalsIgnoreCase("subdiv.")) { return Rank.SUBDIVISION();
361 }else if (abbrev.equalsIgnoreCase("cl.")) { return Rank.CLASS();
362 }else if (abbrev.equalsIgnoreCase("subcl.")) { return Rank.SUBCLASS();
363 }else if (abbrev.equalsIgnoreCase("superor.")) { return Rank.SUPERORDER();
364 }else if (abbrev.equalsIgnoreCase("ordo")) { return Rank.ORDER();
365 }else if (abbrev.equalsIgnoreCase("subor.")) { return Rank.SUBORDER();
366 }else if (abbrev.equalsIgnoreCase("fam.")) { return Rank.FAMILY();
367 }else if (abbrev.equalsIgnoreCase("subfam.")) { return Rank.SUBFAMILY();
368 }else if (abbrev.equalsIgnoreCase("trib.")) { return Rank.TRIBE();
369 }else if (abbrev.equalsIgnoreCase("subtrib.")) { return Rank.SUBTRIBE();
370 }else if (abbrev.equalsIgnoreCase("gen.")) { return Rank.GENUS();
371 }else if (abbrev.equalsIgnoreCase("subg.")) { return Rank.SUBGENUS();
372 }else if (abbrev.equalsIgnoreCase("sect.")) { return Rank.SECTION();
373 }else if (abbrev.equalsIgnoreCase("subsect.")) { return Rank.SUBSECTION();
374 }else if (abbrev.equalsIgnoreCase("ser.")) { return Rank.SERIES();
375 }else if (abbrev.equalsIgnoreCase("subser.")) { return Rank.SUBSERIES();
376 }else if (abbrev.equalsIgnoreCase("aggr.")) { return Rank.SPECIESAGGREGATE();
377 //TODO
378 //}else if (abbrev.equalsIgnoreCase("group")) { return Rank.SPECIESGROUP();
379 }else if (abbrev.equalsIgnoreCase("sp.")) { return Rank.SPECIES();
380 }else if (abbrev.equalsIgnoreCase("subsp.")) { return Rank.SUBSPECIES();
381 }else if (abbrev.equalsIgnoreCase("convar.")) { return Rank.CONVAR();
382 }else if (abbrev.equalsIgnoreCase("var.")) { return Rank.VARIETY();
383 }else if (abbrev.equalsIgnoreCase("subvar.")) { return Rank.SUBVARIETY();
384 }else if (abbrev.equalsIgnoreCase("f.")) { return Rank.FORM();
385 }else if (abbrev.equalsIgnoreCase("subf.")) { return Rank.SUBFORM();
386 //TODO
387 //}else if (abbrev.equalsIgnoreCase("f.spec.")) { return Rank.FORMA_SPEC();
388 }else if (abbrev.equalsIgnoreCase("t.infgen.")) { return Rank.INFRAGENERICTAXON();
389 }else if (abbrev.equalsIgnoreCase("t.infr.")) { return Rank.INFRASPECIFICTAXON();
390 }else {
391 if (abbrev == null){
392 abbrev = "(null)";
393 }
394 throw new UnknownCdmTypeException("Unknown rank abbreviation: " + abbrev);
395 }
396 }
397
398 /** TODO
399 * preliminary implementation for BotanicalNameParser
400 * not yet complete
401 */
402 @Transient
403 public static Rank getRankByName(String rankName)
404 throws UnknownCdmTypeException{
405 if (rankName.equalsIgnoreCase("Regnum")){ return Rank.KINGDOM();
406 }else if (rankName.equalsIgnoreCase("Subregnum")){ return Rank.SUBKINGDOM();
407 }else if (rankName.equalsIgnoreCase("Phylum")){ return Rank.PHYLUM();
408 }else if (rankName.equalsIgnoreCase("subphylum")){ return Rank.SUBPHYLUM();
409 }else if (rankName.equalsIgnoreCase("Divisio")){ return Rank.DIVISION();
410 }else if (rankName.equalsIgnoreCase("Subdivisio")){ return Rank.SUBDIVISION();
411 }else if (rankName.equalsIgnoreCase("Classis")){ return Rank.CLASS();
412 }else if (rankName.equalsIgnoreCase("Subclassis")){ return Rank.SUBCLASS();
413 }else if (rankName.equalsIgnoreCase("Superordo")){ return Rank.SUPERORDER();
414 }else if (rankName.equalsIgnoreCase("Ordo")){ return Rank.ORDER();
415 }else if (rankName.equalsIgnoreCase("Subordo")){ return Rank.SUBORDER();
416 }else if (rankName.equalsIgnoreCase("Familia")){ return Rank.FAMILY();
417 }else if (rankName.equalsIgnoreCase("Subfamilia")){ return Rank.SUBFAMILY();
418 }else if (rankName.equalsIgnoreCase("Tribus")){ return Rank.TRIBE();
419 }else if (rankName.equalsIgnoreCase("Subtribus")){ return Rank.SUBTRIBE();
420 }else if (rankName.equalsIgnoreCase("Genus")){ return Rank.GENUS();
421 }else if (rankName.equalsIgnoreCase("Subgenus")){ return Rank.SUBGENUS();
422 }else if (rankName.equalsIgnoreCase("Sectio")){ return Rank.SECTION();
423 }else if (rankName.equalsIgnoreCase("Subsectio")){ return Rank.SUBSECTION();
424 }else if (rankName.equalsIgnoreCase("Series")){ return Rank.SERIES();
425 }else if (rankName.equalsIgnoreCase("Subseries")){ return Rank.SUBSERIES();
426 }else if (rankName.equalsIgnoreCase("Aggregate")){ return Rank.SPECIESAGGREGATE();
427 //TODO
428 //}else if (rankName.equalsIgnoreCase("Speciesgroup")){ return Rank.SPECIESGROUP();
429 }else if (rankName.equalsIgnoreCase("Species")){ return Rank.SPECIES();
430 }else if (rankName.equalsIgnoreCase("Subspecies")){ return Rank.SUBSPECIES();
431 }else if (rankName.equalsIgnoreCase("Convarietas")){ return Rank.CONVAR();
432 }else if (rankName.equalsIgnoreCase("Varietas")){ return Rank.VARIETY();
433 }else if (rankName.equalsIgnoreCase("Subvarietas")){ return Rank.SUBVARIETY();
434 }else if (rankName.equalsIgnoreCase("Forma")){ return Rank.FORM();
435 }else if (rankName.equalsIgnoreCase("Subforma")){ return Rank.SUBFORM();
436 }else if (rankName.equalsIgnoreCase("Forma spec.")){ return Rank.SPECIALFORM();
437 }else if (rankName.equalsIgnoreCase("tax.infragen.")){ return Rank.INFRAGENERICTAXON();
438 }else if (rankName.equalsIgnoreCase("tax.infrasp.")){ return Rank.INFRASPECIFICTAXON();
439 // old ranks
440 }else if (rankName.equalsIgnoreCase("proles")){ return Rank.INFRASPECIFICTAXON(); //to create the name put prol. and the infraspeciesepi to the field unnamed namephrase
441 }else if (rankName.equalsIgnoreCase("race")){ return Rank.INFRASPECIFICTAXON(); //to create the name put prol. and the infraspeciesepi to the field unnamed namephrase
442 }else if (rankName.equalsIgnoreCase("taxon")){ return Rank.INFRASPECIFICTAXON(); //to create the name put prol. and the infraspeciesepi to the field unnamed namephrase
443 }else if (rankName.equalsIgnoreCase("sublusus")){ return Rank.INFRASPECIFICTAXON(); //to create the name put prol. and the infraspeciesepi to the field unnamed namephrase
444
445 }else{
446 if (rankName == null){
447 rankName = "(null)";
448 }
449 throw new UnknownCdmTypeException("Unknown rank name: " + rankName);
450 }
451 }
452
453 //TODO
454 //dummy implementation for BerlinModelImport
455 @Transient
456 public String getAbbreviation(){
457 if (this.equals(Rank.SPECIES()) ){return "sp.";}
458 else if (this.equals(Rank.SUBSPECIES()) ){return "subsp.";}
459 else if (this.equals(Rank.VARIETY()) ){return "var.";}
460 else if (this.equals(Rank.CONVAR()) ){return "convar.";}
461 else if (this.equals(Rank.SUBVARIETY()) ){return "subvar.";}
462 else if (this.equals(Rank.FORM()) ){return "var.";}
463 else if (this.equals(Rank.SUBFORM()) ){return "f.";}
464 else if (this.equals(Rank.INFRASPECIFICTAXON()) ){return "tax.infrasp.";}
465 else {
466 logger.warn("Abbreviation for this Rank not yet implemented");
467 return "xxx.";
468 }
469
470
471
472 }
473
474
475
476
477 }