- no change (just updated "last edited" for svn)
[cdmlib.git] / cdmlib-model / src / main / java / eu / etaxonomy / cdm / model / common / AnnotationType.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.common;
11
12
13 import java.util.HashMap;
14 import java.util.Map;
15 import java.util.UUID;
16
17 import javax.persistence.Entity;
18 import javax.xml.bind.annotation.XmlAccessType;
19 import javax.xml.bind.annotation.XmlAccessorType;
20 import javax.xml.bind.annotation.XmlRootElement;
21 import javax.xml.bind.annotation.XmlType;
22
23 import org.apache.log4j.Logger;
24 import org.hibernate.envers.Audited;
25 import org.hibernate.search.annotations.Indexed;
26
27 /**
28 * Annotation types ...
29 * @author a.mueller
30 * @created 12-Nov-2008 15:37:33
31 */
32 @XmlAccessorType(XmlAccessType.FIELD)
33 @XmlType(name = "AnnotationType")
34 @XmlRootElement(name = "AnnotationType")
35 @Entity
36 @Indexed(index = "eu.etaxonomy.cdm.model.common.DefinedTermBase")
37 @Audited
38 public class AnnotationType extends DefinedTermBase<AnnotationType> {
39 private static final long serialVersionUID = 49629121282854575L;
40 @SuppressWarnings("unused")
41 private static final Logger logger = Logger.getLogger(AnnotationType.class);
42
43 protected static Map<UUID, AnnotationType> termMap = null;
44
45 private static final UUID uuidTechnical = UUID.fromString("6a5f9ea4-1bdd-4906-89ad-6e669f982d69");
46 private static final UUID uuidEditorial = UUID.fromString("e780d5fd-abfc-4025-938a-46deb751d808");
47
48 public static AnnotationType NewInstance(String term, String label, String labelAbbrev){
49 return new AnnotationType(term, label, labelAbbrev);
50 }
51
52 //********************************** Constructor *******************************************************************/
53
54 //for hibernate use only
55 @Deprecated
56 protected AnnotationType() {
57 super(TermType.AnnotationType);
58 }
59
60 /**
61 * Constructor
62 * @param term
63 * @param label
64 */
65 protected AnnotationType(String term, String label, String labelAbbrev) {
66 super(TermType.AnnotationType , term, label, labelAbbrev);
67 }
68
69
70 //************************** METHODS ********************************
71
72 /* (non-Javadoc)
73 * @see eu.etaxonomy.cdm.model.common.DefinedTermBase#resetTerms()
74 */
75 @Override
76 public void resetTerms(){
77 termMap = null;
78 }
79
80 protected static AnnotationType getTermByUuid(UUID uuid){
81 if (termMap == null){
82 return null; //better return null then initialize the termMap in an unwanted way
83 }
84 return (AnnotationType)termMap.get(uuid);
85 }
86
87
88 public static final AnnotationType TECHNICAL(){
89 return getTermByUuid(uuidTechnical);
90 }
91
92 public static final AnnotationType EDITORIAL(){
93 return getTermByUuid(uuidEditorial);
94 }
95
96 protected void setDefaultTerms(TermVocabulary<AnnotationType> termVocabulary) {
97 termMap = new HashMap<UUID, AnnotationType>();
98 for (AnnotationType term : termVocabulary.getTerms()){
99 termMap.put(term.getUuid(), (AnnotationType)term);
100 }
101 }
102
103 }