Merge branch 'release/5.45.0'
[cdmlib.git] / cdmlib-model / src / main / java / eu / etaxonomy / cdm / model / taxon / TaxonType.java
1 /**
2 * Copyright (C) 2021 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 package eu.etaxonomy.cdm.model.taxon;
10
11 import java.util.EnumSet;
12 import java.util.Set;
13 import java.util.UUID;
14
15 import javax.xml.bind.annotation.XmlEnum;
16
17 import eu.etaxonomy.cdm.model.common.Language;
18 import eu.etaxonomy.cdm.model.term.EnumeratedTermVoc;
19 import eu.etaxonomy.cdm.model.term.IEnumTerm;
20
21 /**
22 * @author a.mueller
23 * @since 10.05.2021
24 */
25 @XmlEnum
26 public enum TaxonType
27 implements IEnumTerm<TaxonType>{
28
29 CONCEPT(UUID.fromString("d6e65c50-729a-4c80-8ec0-d30627c8b2f0"), "Concept","CO"),
30 NAME_USAGE(UUID.fromString("a3ffccb8-8408-4fb4-8e38-9ffe84ca804f"), "Name Usage","NU"),
31 ;
32
33 @SuppressWarnings("unchecked")
34 private TaxonType(UUID uuid, String defaultString, String key){
35 delegateVocTerm = EnumeratedTermVoc.addTerm(getClass(), this, uuid, defaultString, key, null);
36 }
37
38 // *************************** DELEGATE **************************************/
39
40 private static EnumeratedTermVoc<TaxonType> delegateVoc;
41 private IEnumTerm<TaxonType> delegateVocTerm;
42
43 static {
44 delegateVoc = EnumeratedTermVoc.getVoc(TaxonType.class);
45 }
46
47 @Override
48 public String getKey(){return delegateVocTerm.getKey();}
49
50 @Override
51 public String getLabel(){return delegateVocTerm.getLabel();}
52
53 @Override
54 public String getLabel(Language language){return delegateVocTerm.getLabel(language);}
55
56 @Override
57 public UUID getUuid() {return delegateVocTerm.getUuid();}
58
59 @Override
60 public TaxonType getKindOf() {return delegateVocTerm.getKindOf();}
61
62 @Override
63 public Set<TaxonType> getGeneralizationOf() {return delegateVocTerm.getGeneralizationOf();}
64
65 @Override
66 public boolean isKindOf(TaxonType ancestor) {return delegateVocTerm.isKindOf(ancestor); }
67
68 @Override
69 public Set<TaxonType> getGeneralizationOf(boolean recursive) {return delegateVocTerm.getGeneralizationOf(recursive);}
70
71 public static TaxonType getByKey(String key){return delegateVoc.getByKey(key);}
72 public static TaxonType getByUuid(UUID uuid) {return delegateVoc.getByUuid(uuid);}
73
74 //*************************** END DELEGATE *********************************************/
75
76 protected static boolean includesType(EnumSet<TaxonType> set, TaxonType type) {
77 EnumSet<TaxonType> all;
78 if (type.getGeneralizationOf(true).isEmpty()){
79 all = EnumSet.noneOf(TaxonType.class);
80 }else{
81 all = EnumSet.copyOf(type.getGeneralizationOf(true));
82 }
83 all.add(type);
84 for (TaxonType st : all){
85 if (set.contains(st)){
86 return true;
87 }
88 }
89 return false;
90 }
91 }