Project

General

Profile

Download (7.41 KB) Statistics
| Branch: | Tag: | Revision:
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
}
(8-8/79)