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.
10 package eu
.etaxonomy
.cdm
.model
.common
;
13 import java
.util
.HashMap
;
14 import java
.util
.List
;
16 import java
.util
.UUID
;
18 import javax
.persistence
.Entity
;
19 import javax
.xml
.bind
.annotation
.XmlAccessType
;
20 import javax
.xml
.bind
.annotation
.XmlAccessorType
;
21 import javax
.xml
.bind
.annotation
.XmlType
;
23 import org
.apache
.log4j
.Logger
;
24 import org
.hibernate
.envers
.Audited
;
25 import org
.hibernate
.search
.annotations
.Indexed
;
28 * Extension types similar to dynamically defined attributes. These are not data
29 * types, but rather content types like "DOI", "2nd nomenclatural reference", "3rd
30 * hybrid parent" or specific local identifiers.
33 * @created 08-Nov-2007 13:06:23
35 @XmlAccessorType(XmlAccessType
.FIELD
)
36 @XmlType(name
= "ExtensionType")
38 @Indexed(index
= "eu.etaxonomy.cdm.model.common.DefinedTermBase")
40 public class ExtensionType
extends DefinedTermBase
<ExtensionType
> {
41 private static final long serialVersionUID
= -7761963794004133427L;
42 @SuppressWarnings("unused")
43 private static final Logger logger
= Logger
.getLogger(ExtensionType
.class);
45 private static final UUID uuidXmlFragment
= UUID
.fromString("ea109c1c-e69b-4e6d-9079-1941b9ee2991");
46 private static final UUID uuidRdfFragment
= UUID
.fromString("f3684e25-dcad-4c1e-a5d8-16cddf1c4f5b");
47 private static final UUID uuidDoi
= UUID
.fromString("f079aacc-ab08-4cc4-90a0-6d3958fb0dbf");
48 // private static final UUID uuid2ndNomRef = UUID.fromString("46a98bfa-f11a-47fe-a6c5-50c7e8289b3d");
49 private static final UUID uuid3rdHybridParent
= UUID
.fromString("5e552b24-5a2d-498d-a4f4-ccd8e5bc2bae");
50 private static final UUID uuidAreaOfInterest
= UUID
.fromString("cefa478e-604f-4db4-8afc-25e06c28ec69");
51 private static final UUID uuidNomStandard
= UUID
.fromString("4a6cbbe9-8d79-4d15-b316-2ff1adeff526");
52 private static final UUID uuidAbbreviation
= UUID
.fromString("5837e34e-b0f5-4736-8083-ff5eaecd8c43");
53 private static final UUID uuidOrder
= UUID
.fromString("ecb7770d-a295-49ee-a88f-e9e137a7cabb");
54 private static final UUID uuidInformalCategory
= UUID
.fromString("11bbc52f-a085-43d3-9f9b-cbe0d1eb9a91");
55 private static final UUID uuidUrl
= UUID
.fromString("d769fa9f-51ee-4e11-8152-b5ce72b7f413");
57 protected static Map
<UUID
, ExtensionType
> termMap
= null;
60 * Creates a new empty extension type instance.
62 * @see #NewInstance(String, String, String)
64 public static ExtensionType
NewInstance() {
65 return new ExtensionType();
69 * Creates a new extension type instance with a description (in the {@link Language#DEFAULT() default language}),
70 * a label and a label abbreviation.
72 * @param term the string (in the default language) describing the
73 * new extension type to be created
74 * @param label the string identifying the new extension type to be created
75 * @param labelAbbrev the string identifying (in abbreviated form) the
76 * new extension type to be created
77 * @see #readCsvLine(List, Language)
80 public static ExtensionType
NewInstance(String term
, String label
, String labelAbbrev
){
81 return new ExtensionType(term
, label
, labelAbbrev
);
84 //********************************** Constructor *******************************************************************/
86 //public only for Term Loader
88 public ExtensionType() {
92 * Class constructor: creates a new extension type instance with a description (in the {@link Language#DEFAULT() default language}),
93 * a label and a label abbreviation.
95 * @param term the string (in the default language) describing the
96 * new extension type to be created
97 * @param label the string identifying the new extension type to be created
98 * @param labelAbbrev the string identifying (in abbreviated form) the
99 * new extension type to be created
100 * @see #ExtensionType()
102 protected ExtensionType(String term
, String label
, String labelAbbrev
) {
103 super(term
, label
, labelAbbrev
);
106 //************************** METHODS *******************************************************/
110 * @see eu.etaxonomy.cdm.model.common.DefinedTermBase#resetTerms()
113 public void resetTerms(){
118 protected static ExtensionType
getTermByUuid(UUID uuid
){
119 if (termMap
== null){
120 DefaultTermInitializer vocabularyStore
= new DefaultTermInitializer();
121 vocabularyStore
.initialize();
123 return (ExtensionType
)termMap
.get(uuid
);
127 public static final ExtensionType
XML_FRAGMENT(){
128 return getTermByUuid(uuidXmlFragment
);
131 public static final ExtensionType
RDF_FRAGMENT(){
132 return getTermByUuid(uuidRdfFragment
);
135 public static final ExtensionType
DOI(){
136 return getTermByUuid(uuidDoi
);
140 // public static final ExtensionType SECOND_NOM_REF(){
141 // return getTermByUuid(uuid2ndNomRef);
145 public static final ExtensionType
THIRD_HYBRID_PARENT(){
146 return getTermByUuid(uuid3rdHybridParent
);
149 public static final ExtensionType
AREA_OF_INTREREST(){
150 return getTermByUuid(uuidAreaOfInterest
);
153 public static final ExtensionType
NOMENCLATURAL_STANDARD(){
154 return getTermByUuid(uuidNomStandard
);
157 public static final ExtensionType
ABBREVIATION(){
158 return getTermByUuid(uuidAbbreviation
);
161 public static final ExtensionType
ORDER(){
162 return getTermByUuid(uuidOrder
);
165 public static final ExtensionType
INFORMAL_CATEGORY(){
166 return getTermByUuid(uuidInformalCategory
);
169 public static final ExtensionType
URL(){
170 return getTermByUuid(uuidUrl
);
175 protected void setDefaultTerms(TermVocabulary
<ExtensionType
> termVocabulary
) {
176 termMap
= new HashMap
<UUID
, ExtensionType
>();
177 for (ExtensionType term
: termVocabulary
.getTerms()){
178 termMap
.put(term
.getUuid(), term
);