ref #3560 fix includeUnpublished for taxon relationships and correct includePublished...
[cdmlib.git] / cdmlib-model / src / main / java / eu / etaxonomy / cdm / model / common / DefinedTerm.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 package eu.etaxonomy.cdm.model.common;
10
11 import java.util.HashMap;
12 import java.util.Map;
13 import java.util.UUID;
14
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;
20
21 import org.hibernate.envers.Audited;
22
23
24 /**
25 * @author a.mueller
26 * @since 2013-06-19
27 *
28 */
29 @XmlAccessorType(XmlAccessType.FIELD)
30 @XmlType(name = "DefinedTerm")
31 @XmlRootElement(name = "DefinedTerm")
32 @Entity
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")
35 @Audited
36 public class DefinedTerm extends DefinedTermBase<DefinedTerm> implements Comparable<DefinedTerm> {
37 private static final long serialVersionUID = -6965540410672076893L;
38
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");
42
43 //Sex
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");
48
49 //Marker
50 private static final UUID uuidIts1 = UUID.fromString("3f2de4f6-d1a2-4c3a-be70-3c997ef92543");
51
52 //kindOfUnit
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");
55
56
57 //Identifier Type
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");
63
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");
67
68 protected static Map<UUID, DefinedTerm> termMap = null;
69
70
71 protected static DefinedTerm getTermByUuid(UUID uuid){
72 if (termMap == null || termMap.isEmpty()){
73 return getTermByClassAndUUID(DefinedTerm.class, uuid);
74 } else{
75 return termMap.get(uuid);
76 }
77 }
78
79
80 public static DefinedTerm NewInstance(TermType termType, String description, String label, String labelAbbrev){
81 return new DefinedTerm(termType, description, label, labelAbbrev);
82 }
83
84
85 public static DefinedTerm NewModifierInstance(String description, String label, String labelAbbrev){
86 return new DefinedTerm(TermType.Modifier, description, label, labelAbbrev);
87 }
88
89 public static DefinedTerm NewInstitutionTypeInstance(String description, String label, String labelAbbrev){
90 return new DefinedTerm(TermType.InstitutionType, description, label, labelAbbrev);
91 }
92
93 public static DefinedTerm NewStageInstance(String description, String label, String labelAbbrev){
94 return new DefinedTerm(TermType.Stage, description, label, labelAbbrev);
95 }
96
97 public static DefinedTerm NewSexInstance(String description, String label, String labelAbbrev){
98 return new DefinedTerm(TermType.Sex, description, label, labelAbbrev);
99 }
100
101 public static DefinedTerm NewScopeInstance(String description, String label, String labelAbbrev){
102 return new DefinedTerm(TermType.Scope, description, label, labelAbbrev);
103 }
104
105 public static DefinedTerm NewDnaMarkerInstance(String description, String label, String labelAbbrev){
106 return new DefinedTerm(TermType.DnaMarker, description, label, labelAbbrev);
107 }
108
109 public static DefinedTerm NewKindOfUnitInstance(String description, String label, String labelAbbrev){
110 return new DefinedTerm(TermType.KindOfUnit, description, label, labelAbbrev);
111 }
112
113 public static DefinedTerm NewIdentifierTypeInstance(String description, String label, String labelAbbrev){
114 return new DefinedTerm(TermType.IdentifierType, description, label, labelAbbrev);
115 }
116
117 public static DefinedTerm NewTaxonNodeAgentRelationTypeInstance(String description, String label, String labelAbbrev){
118 return new DefinedTerm(TermType.TaxonNodeAgentRelationType, description, label, labelAbbrev);
119 }
120
121 //******************* CONSTRUCTOR ***********************************/
122
123 //for hibernate/javassist use only
124 @Deprecated
125 protected DefinedTerm(){super(TermType.Unknown);}
126
127 public DefinedTerm(TermType type, String description, String label, String labelAbbrev) {
128 super(type, description, label, labelAbbrev);
129 }
130
131 //*************************** TERM MAP *********************/
132
133
134 public static final DefinedTerm DETERMINATION_MODIFIER_AFFINIS(){
135 return getTermByUuid(uuidAffinis);
136 }
137
138 public static final DefinedTerm DETERMINATION_MODIFIER_CONFER(){
139 return getTermByUuid(uuidConfer);
140 }
141
142 public static DefinedTerm SEX_MALE(){
143 return getTermByUuid(uuidMale);
144 }
145
146 public static DefinedTerm SEX_FEMALE(){
147 return getTermByUuid(uuidFemale);
148 }
149
150 public static DefinedTerm SEX_HERMAPHRODITE(){
151 return getTermByUuid(uuidHermaphrodite);
152 }
153
154 public static DefinedTerm SEX_UNKNOWN(){
155 return getTermByUuid(uuidUnknown);
156 }
157
158 public static DefinedTerm ITS1_MARKER(){
159 return getTermByUuid(uuidIts1);
160 }
161
162 public static DefinedTerm IDENTIFIER_NAME_TROPICOS(){
163 return getTermByUuid(uuidTropicosNameIdentifier);
164 }
165 public static DefinedTerm IDENTIFIER_NAME_IPNI(){
166 return getTermByUuid(uuidIpniNameIdentifier);
167 }
168 public static DefinedTerm IDENTIFIER_NAME_WFO(){
169 return getTermByUuid(uuidWfoNameIdentifier);
170 }
171
172 public static DefinedTerm WFO_NAME_IDENTIFIER(){
173 return getTermByUuid(uuidWfoNameIdentifier);
174 }
175
176
177 @Override
178 public void resetTerms() {
179 termMap = null;
180 }
181
182 @Override
183 protected void setDefaultTerms(TermVocabulary<DefinedTerm> termVocabulary) {
184 if (termMap == null){
185 termMap = new HashMap<>();
186 }
187 for (DefinedTerm term : termVocabulary.getTerms()){
188 termMap.put(term.getUuid(), term);
189 }
190 }
191
192 @Override
193 protected int partOfCsvLineIndex(){
194 return 5;
195 }
196
197 // @Override
198 // void readIsPartOf(DefinedTerm newInstance, List<String> csvLine, Map<UUID, DefinedTermBase> terms) {
199 // int index = 7;
200 // String partOfString = csvLine.get(index);
201 //
202 // if(StringUtils.isNotBlank(partOfString)) {
203 // UUID partOfUuid = UUID.fromString(partOfString);
204 // DefinedTerm partOf = (DefinedTerm)terms.get(partOfUuid);
205 // partOf.addIncludes(newInstance);
206 // }
207 //
208 // }
209
210 }