2c693fc9c7fa079d7e1798e6654661bc294be53f
[cdmlib.git] / cdmlib-model / src / main / java / eu / etaxonomy / cdm / model / description / StatisticalMeasure.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.description;
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
25 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
26 import eu.etaxonomy.cdm.model.common.Language;
27 import eu.etaxonomy.cdm.model.common.TermType;
28 import eu.etaxonomy.cdm.model.common.TermVocabulary;
29
30 /**
31 /**
32 * This class represents terms describing different statistical measures (such
33 * as "sample size", "minimum" or "average") for {@link Feature features} that can be
34 * described with numerical values (like for instance weights or temperature).
35 *
36 * @author m.doering
37 * @since 08-Nov-2007 13:06:54
38 */
39 @XmlAccessorType(XmlAccessType.FIELD)
40 @XmlType(name = "StatisticalMeasure")
41 @XmlRootElement(name = "StatisticalMeasure")
42 @Entity
43 //@Indexed disabled to reduce clutter in indexes, since this type is not used by any search
44 //@Indexed(index = "eu.etaxonomy.cdm.model.common.DefinedTermBase")
45 @Audited
46 public class StatisticalMeasure extends DefinedTermBase<StatisticalMeasure> {
47 private static final long serialVersionUID = 9168097283660941430L;
48 @SuppressWarnings("unused")
49 private static final Logger logger = Logger.getLogger(StatisticalMeasure.class);
50
51 protected static Map<UUID, StatisticalMeasure> termMap = null;
52
53
54 private static final UUID uuidMin = UUID.fromString("2c8b42e5-154c-42bd-a301-03b483275dd6");
55 private static final UUID uuidMax = UUID.fromString("8955815b-7d21-4149-b1b7-d37af3c2046c");
56 private static final UUID uuidAverage = UUID.fromString("264c3979-d551-4795-9e25-24c6b533fbb1");
57 private static final UUID uuidSampleSize = UUID.fromString("571f86ca-a44c-4484-9981-11fd82138a7a");
58 private static final UUID uuidVariance = UUID.fromString("4d22cf5e-89ff-4de3-a9ae-12dbeda3faba");
59 private static final UUID uuidTypicalLowerBoundary = UUID.fromString("8372a89a-35ad-4755-a881-7edae6c37c8f");
60 private static final UUID uuidTypicalUpperBoundary = UUID.fromString("9eff88ba-b8e7-4631-9e55-a50bd16ba79d");
61 private static final UUID uuidStandardDeviation = UUID.fromString("9ee4397e-3496-4fe1-9114-afc7d7bdc652");
62 private static final UUID uuidExactValue = UUID.fromString("29736701-58c4-48b3-a9d7-41c74140cac7");
63 //needed for Xper (later maybe integrated into model)
64 public static final UUID uuidStatisticalMeasureUnknownData = UUID.fromString("4bbd6e78-6d4e-4ec8-ac14-12f53aae049e");
65
66 //********* FACTORY METHODS **************************************/
67 /**
68 * Creates a new empty statistical measure instance.
69 *
70 * @see #NewInstance(String, String, String)
71 */
72 public static StatisticalMeasure NewInstance(){
73 return new StatisticalMeasure();
74 }
75 /**
76 * Creates a new statistical measure instance with a description
77 * (in the {@link Language#DEFAULT() default language}), a label and a label abbreviation.
78 *
79 * @param term the string (in the default language) describing the
80 * new statistical measure to be created
81 * @param label the string identifying the new statistical measure
82 * to be created
83 * @param labelAbbrev the string identifying (in abbreviated form) the
84 * new statistical measure to be created
85 * @see #NewInstance()
86 */
87 public static StatisticalMeasure NewInstance(String term, String label, String labelAbbrev){
88 return new StatisticalMeasure(term, label, labelAbbrev);
89 }
90
91
92 //********************************** Constructor *******************************************************************/
93
94 // ************* CONSTRUCTORS *************/
95 /**
96 * Class constructor: creates a new empty statistical measure instance.
97 *
98 * @see #StatisticalMeasure(String, String, String)
99 */
100 //for hibernate use only
101 @Deprecated
102 protected StatisticalMeasure() {
103 super(TermType.StatisticalMeasure);
104 }
105 private StatisticalMeasure(String term, String label, String labelAbbrev) {
106 super(TermType.StatisticalMeasure, term, label, labelAbbrev);
107 }
108
109
110 //************************** METHODS ********************************
111
112 /* (non-Javadoc)
113 * @see eu.etaxonomy.cdm.model.common.DefinedTermBase#resetTerms()
114 */
115 @Override
116 public void resetTerms(){
117 termMap = null;
118 }
119
120
121
122 protected static StatisticalMeasure getTermByUuid(UUID uuid){
123 if (termMap == null || termMap.isEmpty()){
124 return getTermByClassAndUUID(StatisticalMeasure.class, uuid);
125 } else {
126 return termMap.get(uuid);
127 }
128 }
129
130 public static final StatisticalMeasure MIN(){
131 return getTermByUuid(uuidMin);
132 }
133
134 public static final StatisticalMeasure MAX(){
135 return getTermByUuid(uuidMax);
136 }
137
138 public static final StatisticalMeasure AVERAGE(){
139 return getTermByUuid(uuidAverage);
140 }
141
142 public static final StatisticalMeasure SAMPLE_SIZE(){
143 return getTermByUuid(uuidSampleSize);
144 }
145
146 public static final StatisticalMeasure VARIANCE(){
147 return getTermByUuid(uuidVariance);
148 }
149
150 public static final StatisticalMeasure TYPICAL_LOWER_BOUNDARY(){
151 return getTermByUuid(uuidTypicalLowerBoundary);
152 }
153
154 public static final StatisticalMeasure TYPICAL_UPPER_BOUNDARY(){
155 return getTermByUuid(uuidTypicalUpperBoundary);
156 }
157
158 public static final StatisticalMeasure STANDARD_DEVIATION(){
159 return getTermByUuid(uuidStandardDeviation);
160 }
161
162 public static final StatisticalMeasure EXACT_VALUE(){
163 return getTermByUuid(uuidExactValue);
164 }
165
166 @Override
167 protected void setDefaultTerms(TermVocabulary<StatisticalMeasure> termVocabulary) {
168 termMap = new HashMap<UUID, StatisticalMeasure>();
169 for (StatisticalMeasure term : termVocabulary.getTerms()){
170 termMap.put(term.getUuid(), term);
171 }
172 }
173
174 }