2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
9 package eu
.etaxonomy
.cdm
.model
.common
;
11 import java
.util
.HashMap
;
13 import java
.util
.UUID
;
15 import javax
.persistence
.Entity
;
16 import javax
.xml
.bind
.annotation
.XmlAccessType
;
17 import javax
.xml
.bind
.annotation
.XmlAccessorType
;
18 import javax
.xml
.bind
.annotation
.XmlRootElement
;
19 import javax
.xml
.bind
.annotation
.XmlType
;
21 import org
.hibernate
.envers
.Audited
;
29 @XmlAccessorType(XmlAccessType
.FIELD
)
30 @XmlType(name
= "DefinedTerm")
31 @XmlRootElement(name
= "DefinedTerm")
33 //@Indexed disabled to reduce clutter in indexes, since this type is not used by any search
34 //@Indexed(index = "eu.etaxonomy.cdm.model.common.DefinedTermBase")
36 public class DefinedTerm
extends DefinedTermBase
<DefinedTerm
> implements Comparable
<DefinedTerm
> {
37 private static final long serialVersionUID
= -6965540410672076893L;
39 //Determination modifier
40 public static final UUID uuidConfer
= UUID
.fromString("20db670a-2db2-49cc-bbdd-eace33694b7f");
41 public static final UUID uuidAffinis
= UUID
.fromString("128f0b54-73e2-4efb-bfda-a6243185a562");
44 private static final UUID uuidMale
= UUID
.fromString("600a5212-cc02-431d-8a80-2bf595bd1eab");
45 private static final UUID uuidFemale
= UUID
.fromString("b4cfe0cb-b35c-4f97-9b6b-2b3c096ea2c0");
46 private static final UUID uuidHermaphrodite
= UUID
.fromString("0deddc65-2505-4c77-91a7-17d0de24afcc");
47 private static final UUID uuidUnknown
= UUID
.fromString("4f5e4c51-a664-48ad-8238-2e9f49eaf8dd");
50 private static final UUID uuidIts1
= UUID
.fromString("3f2de4f6-d1a2-4c3a-be70-3c997ef92543");
53 public static final UUID uuidSpecimenScan
= UUID
.fromString("acda15be-c0e2-4ea8-8783-b9b0c4ad7f03");
54 public static final UUID uuidDetailImage
= UUID
.fromString("31eb8d02-bf5d-437c-bcc6-87a626445f34");
58 public static final UUID uuidLsid
= UUID
.fromString("26729412-9df6-4cc3-9e5d-501531ca21f0");
59 public static final UUID uuidAlternativeFieldNumber
= UUID
.fromString("054fd3d1-1961-42f8-b024-b91184ac9e0c");
60 public static final UUID uuidTropicosNameIdentifier
= UUID
.fromString("6205e531-75b0-4f2a-9a9c-b1247fb080ab");
61 public static final UUID uuidIpniNameIdentifier
= UUID
.fromString("009a602f-0ff6-4231-93db-f458e8229aca");
62 public static final UUID uuidWfoNameIdentifier
= UUID
.fromString("048e0cf9-f59c-42dd-bfeb-3a5cba0191c7");
64 //TaxonNode Agent Relation Type
65 public static final UUID uuidLastScrutiny
= UUID
.fromString("b4495910-28e9-4a49-86cf-a0476c78f460");
66 public static final UUID uuidAuthorOfSubtree
= UUID
.fromString("c2c7e9b7-d6a7-48a0-b13f-a7a2e2a9b8c9");
68 protected static Map
<UUID
, DefinedTerm
> termMap
= null;
71 protected static DefinedTerm
getTermByUuid(UUID uuid
){
72 if (termMap
== null || termMap
.isEmpty()){
73 return getTermByClassAndUUID(DefinedTerm
.class, uuid
);
75 return termMap
.get(uuid
);
80 public static DefinedTerm
NewInstance(TermType termType
, String description
, String label
, String labelAbbrev
){
81 return new DefinedTerm(termType
, description
, label
, labelAbbrev
);
85 public static DefinedTerm
NewModifierInstance(String description
, String label
, String labelAbbrev
){
86 return new DefinedTerm(TermType
.Modifier
, description
, label
, labelAbbrev
);
89 public static DefinedTerm
NewInstitutionTypeInstance(String description
, String label
, String labelAbbrev
){
90 return new DefinedTerm(TermType
.InstitutionType
, description
, label
, labelAbbrev
);
93 public static DefinedTerm
NewStageInstance(String description
, String label
, String labelAbbrev
){
94 return new DefinedTerm(TermType
.Stage
, description
, label
, labelAbbrev
);
97 public static DefinedTerm
NewSexInstance(String description
, String label
, String labelAbbrev
){
98 return new DefinedTerm(TermType
.Sex
, description
, label
, labelAbbrev
);
101 public static DefinedTerm
NewScopeInstance(String description
, String label
, String labelAbbrev
){
102 return new DefinedTerm(TermType
.Scope
, description
, label
, labelAbbrev
);
105 public static DefinedTerm
NewDnaMarkerInstance(String description
, String label
, String labelAbbrev
){
106 return new DefinedTerm(TermType
.DnaMarker
, description
, label
, labelAbbrev
);
109 public static DefinedTerm
NewKindOfUnitInstance(String description
, String label
, String labelAbbrev
){
110 return new DefinedTerm(TermType
.KindOfUnit
, description
, label
, labelAbbrev
);
113 public static DefinedTerm
NewIdentifierTypeInstance(String description
, String label
, String labelAbbrev
){
114 return new DefinedTerm(TermType
.IdentifierType
, description
, label
, labelAbbrev
);
117 public static DefinedTerm
NewTaxonNodeAgentRelationTypeInstance(String description
, String label
, String labelAbbrev
){
118 return new DefinedTerm(TermType
.TaxonNodeAgentRelationType
, description
, label
, labelAbbrev
);
121 //******************* CONSTRUCTOR ***********************************/
123 //for hibernate/javassist use only
125 protected DefinedTerm(){super(TermType
.Unknown
);}
127 public DefinedTerm(TermType type
, String description
, String label
, String labelAbbrev
) {
128 super(type
, description
, label
, labelAbbrev
);
131 //*************************** TERM MAP *********************/
134 public static final DefinedTerm
DETERMINATION_MODIFIER_AFFINIS(){
135 return getTermByUuid(uuidAffinis
);
138 public static final DefinedTerm
DETERMINATION_MODIFIER_CONFER(){
139 return getTermByUuid(uuidConfer
);
142 public static DefinedTerm
SEX_MALE(){
143 return getTermByUuid(uuidMale
);
146 public static DefinedTerm
SEX_FEMALE(){
147 return getTermByUuid(uuidFemale
);
150 public static DefinedTerm
SEX_HERMAPHRODITE(){
151 return getTermByUuid(uuidHermaphrodite
);
154 public static DefinedTerm
SEX_UNKNOWN(){
155 return getTermByUuid(uuidUnknown
);
158 public static DefinedTerm
ITS1_MARKER(){
159 return getTermByUuid(uuidIts1
);
162 public static DefinedTerm
IDENTIFIER_NAME_TROPICOS(){
163 return getTermByUuid(uuidTropicosNameIdentifier
);
165 public static DefinedTerm
IDENTIFIER_NAME_IPNI(){
166 return getTermByUuid(uuidIpniNameIdentifier
);
168 public static DefinedTerm
IDENTIFIER_NAME_WFO(){
169 return getTermByUuid(uuidWfoNameIdentifier
);
172 public static DefinedTerm
WFO_NAME_IDENTIFIER(){
173 return getTermByUuid(uuidWfoNameIdentifier
);
178 public void resetTerms() {
183 protected void setDefaultTerms(TermVocabulary
<DefinedTerm
> termVocabulary
) {
184 if (termMap
== null){
185 termMap
= new HashMap
<>();
187 for (DefinedTerm term
: termVocabulary
.getTerms()){
188 termMap
.put(term
.getUuid(), term
);
193 protected int partOfCsvLineIndex(){
198 // void readIsPartOf(DefinedTerm newInstance, List<String> csvLine, Map<UUID, DefinedTermBase> terms) {
200 // String partOfString = csvLine.get(index);
202 // if(StringUtils.isNotBlank(partOfString)) {
203 // UUID partOfUuid = UUID.fromString(partOfString);
204 // DefinedTerm partOf = (DefinedTerm)terms.get(partOfUuid);
205 // partOf.addIncludes(newInstance);