#3596
[cdmlib.git] / cdmlib-model / src / main / java / eu / etaxonomy / cdm / model / location / NamedAreaLevel.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
10 package eu.etaxonomy.cdm.model.location;
11
12 import java.util.HashMap;
13 import java.util.Map;
14 import java.util.UUID;
15
16 import javax.persistence.Entity;
17 import javax.xml.bind.annotation.XmlAccessType;
18 import javax.xml.bind.annotation.XmlAccessorType;
19 import javax.xml.bind.annotation.XmlRootElement;
20 import javax.xml.bind.annotation.XmlType;
21
22 import org.apache.log4j.Logger;
23 import org.hibernate.envers.Audited;
24 import org.hibernate.search.annotations.Indexed;
25
26 import eu.etaxonomy.cdm.model.common.OrderedTermBase;
27 import eu.etaxonomy.cdm.model.common.TermType;
28 import eu.etaxonomy.cdm.model.common.TermVocabulary;
29
30 /**
31 * Controlled vocabulary to differentiate levels of areas such as province, state,
32 * etc.
33 * @author m.doering
34 * @created 08-Nov-2007 13:06:36
35 */
36 @XmlAccessorType(XmlAccessType.FIELD)
37 @XmlType(name = "NamedAreaLevel")
38 @XmlRootElement(name = "NamedAreaLevel")
39 @Entity
40 @Indexed(index = "eu.etaxonomy.cdm.model.common.DefinedTermBase")
41 @Audited
42 public class NamedAreaLevel extends OrderedTermBase<NamedAreaLevel> {
43 private static final long serialVersionUID = -7977901140330659208L;
44 @SuppressWarnings("unused")
45 private static final Logger logger = Logger.getLogger(NamedAreaLevel.class);
46
47 protected static Map<UUID, NamedAreaLevel> termMap = null;
48
49 private static final UUID uuidTdwgLevel1 = UUID.fromString("cd7771b2-7427-4a01-9057-7d7a897dddaf");
50 private static final UUID uuidTdwgLevel2 = UUID.fromString("38efa5fd-d7f0-451c-9de9-e6cce41e2225");
51 private static final UUID uuidTdwgLevel3 = UUID.fromString("25b563b6-6a6c-401b-b090-c9498886c50b");
52 private static final UUID uuidTdwgLevel4 = UUID.fromString("160ff2c8-9bfc-49c2-9afd-049c21a91695");
53 private static final UUID uuidNatureReserve = UUID.fromString("340b9050-a65d-4dd4-9523-bc10f977bc68");
54 private static final UUID uuidState = UUID.fromString("08aa6127-8ebc-4120-8411-a468a7257e02");
55 private static final UUID uuidProvince = UUID.fromString("401d48b4-9f09-4354-be0f-c2138444f72d");
56 private static final UUID uuidTown = UUID.fromString("f127b4d2-f6bc-4019-9c87-ee3f4de1f094");
57 private static final UUID uuidCountry = UUID.fromString("79db63a4-1563-461e-8e41-48f5722feca4");
58
59 //************************** FACTORY METHODS ********************************
60
61 /**
62 * Factory method
63 * @return
64 */
65 public static NamedAreaLevel NewInstance(){
66 return new NamedAreaLevel();
67 }
68
69 /**
70 * Factory method
71 * @return
72 */
73 public static NamedAreaLevel NewInstance(String term, String label, String labelAbbrev){
74 return new NamedAreaLevel(term, label, labelAbbrev);
75 }
76
77 //************************** CONSTRUCTOR ********************************
78
79 //for hibernate use only
80 @Deprecated
81 protected NamedAreaLevel() {
82 super(TermType.NamedAreaLevel);
83 }
84
85 private NamedAreaLevel(String term, String label, String labelAbbrev) {
86 super(TermType.NamedAreaLevel, term, label, labelAbbrev);
87 }
88
89
90
91 //************************** METHODS ********************************
92
93 protected static NamedAreaLevel getTermByUuid(UUID uuid){
94 if (termMap == null){
95 return null; //better return null then initialize the termMap in an unwanted way
96 }
97 return (NamedAreaLevel)termMap.get(uuid);
98 }
99
100 /**
101 * Continents
102 */
103 public static final NamedAreaLevel TDWG_LEVEL1(){
104 return getTermByUuid(uuidTdwgLevel1);
105 }
106
107 /**
108 * larger regions
109 */
110 public static final NamedAreaLevel TDWG_LEVEL2(){
111 return getTermByUuid(uuidTdwgLevel2);
112 }
113
114 /**
115 * mostly countries
116 */
117 public static final NamedAreaLevel TDWG_LEVEL3(){
118 return getTermByUuid(uuidTdwgLevel3);
119 }
120
121 public static final NamedAreaLevel TDWG_LEVEL4(){
122 return getTermByUuid(uuidTdwgLevel4);
123 }
124
125 public static final NamedAreaLevel NATURE_RESERVE(){
126 return getTermByUuid(uuidNatureReserve);
127 }
128
129 public static final NamedAreaLevel STATE(){
130 return getTermByUuid(uuidState);
131 }
132
133 public static final NamedAreaLevel PROVINCE(){
134 return getTermByUuid(uuidProvince);
135 }
136
137 public static final NamedAreaLevel TOWN(){
138 return getTermByUuid(uuidTown);
139 }
140
141 public static final NamedAreaLevel COUNTRY(){
142 return getTermByUuid(uuidCountry);
143 }
144
145 public static final boolean isTDWG_LEVEL1(String str){
146 boolean result = false;
147 if (uuidTdwgLevel1.compareTo(UUID.fromString(str)) == 0){
148 result = true;
149 }
150 return result;
151 }
152
153 public static final boolean isTDWG_LEVEL2(String str){
154 boolean result = false;
155 if (uuidTdwgLevel2.compareTo(UUID.fromString(str)) == 0){
156 result = true;
157 }
158 return result;
159 }
160
161 public static final boolean isTDWG_LEVEL3(String str){
162 boolean result = false;
163 if (uuidTdwgLevel3.compareTo(UUID.fromString(str)) == 0){
164 result = true;
165 }
166 return result;
167 }
168
169 public static final boolean isTDWG_LEVEL4(String str){
170 boolean result = false;
171 if (uuidTdwgLevel4.compareTo(UUID.fromString(str)) == 0){
172 result = true;
173 }
174 return result;
175 }
176
177
178 /* (non-Javadoc)
179 * @see eu.etaxonomy.cdm.model.common.DefinedTermBase#resetTerms()
180 */
181 @Override
182 public void resetTerms(){
183 termMap = null;
184 }
185
186
187
188 @Override
189 protected void setDefaultTerms(TermVocabulary<NamedAreaLevel> termVocabulary) {
190 termMap = new HashMap<UUID, NamedAreaLevel>();
191 for (NamedAreaLevel term : termVocabulary.getTerms()){
192 termMap.put(term.getUuid(), (NamedAreaLevel)term);
193 }
194 }
195 }