1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 package fr.ifremer.quadrige3.core.dao.referential;
29
30 import fr.ifremer.quadrige3.core.dao.technical.QuadrigeEnumerationDef;
31 import java.io.Serializable;
32 import java.util.ArrayList;
33 import java.util.Collections;
34 import java.util.LinkedHashMap;
35 import java.util.List;
36 import java.util.Map;
37 import static org.nuiton.i18n.I18n.n;
38
39
40
41
42 public enum UnitId
43 implements Serializable, QuadrigeEnumerationDef<Integer>
44 {
45 NO_UNIT (
46 "quadrige3.enumeration.UnitId.NO_UNIT",
47 n("quadrige3.enumeration.UnitId.NO_UNIT.description"),
48 99),
49 METER (
50 "quadrige3.enumeration.UnitId.METER",
51 n("quadrige3.enumeration.UnitId.METER.description"),
52 6),
53 CENTIMENTER (
54 "quadrige3.enumeration.UnitId.CENTIMENTER",
55 n("quadrige3.enumeration.UnitId.CENTIMENTER.description"),
56 7),
57 MILLIMETER (
58 "quadrige3.enumeration.UnitId.MILLIMETER",
59 n("quadrige3.enumeration.UnitId.MILLIMETER.description"),
60 8),
61 MICROMETER (
62 "quadrige3.enumeration.UnitId.MICROMETER",
63 n("quadrige3.enumeration.UnitId.MICROMETER.description"),
64 9);
65
66
67
68
69 private static final long serialVersionUID = 2126945324956511137L;
70
71 private String key;
72 private String description;
73 private Integer enumValue;
74
75
76
77
78
79 private UnitId(String key, String description, Integer value)
80 {
81 this.key = key;
82 this.description = description;
83 this.enumValue = value;
84 }
85
86 @Override
87
88
89
90 public void setValue(Integer newValue) {
91 if (newValue != null && !this.enumValue.equals(newValue)) {
92
93 values.remove(this.enumValue);
94 literals.remove(this.enumValue);
95 this.enumValue = newValue;
96 values.put(this.enumValue, this);
97 literals.add(this.enumValue);
98 }
99 }
100
101
102 @Override
103 public String getValueAsString()
104 {
105 return String.valueOf(this.enumValue);
106 }
107
108
109
110
111
112
113
114 public static UnitId fromString(String name)
115 {
116 return UnitId.valueOf(name);
117 }
118
119
120
121
122
123
124
125 public Integer value()
126 {
127 return this.enumValue;
128 }
129
130
131
132
133
134
135
136
137 public static UnitId fromValue(Integer value)
138 {
139 for (UnitId enumName: UnitId.values())
140 {
141 if (enumName.getValue().equals(value))
142 {
143 return enumName;
144 }
145 }
146 throw new IllegalArgumentException("UnitId.fromValue(" + value.toString() + ')');
147 }
148
149
150
151
152
153
154 public Integer getValue()
155 {
156 return this.enumValue;
157 }
158
159 @Override
160 public String getDescription() {
161 return description;
162 }
163
164 @Override
165 public String getKey() {
166 return key;
167 }
168
169 @Override
170 public Class<?> getType() {
171 return Integer.class;
172 }
173
174
175
176
177
178
179
180 public static List<Integer> literals()
181 {
182 return UnitId.literals;
183 }
184
185
186
187
188
189
190
191
192 public static List<String> names()
193 {
194 return UnitId.names;
195 }
196
197 private static Map<Integer, UnitId> values = new LinkedHashMap<Integer, UnitId>(5, 1);
198 private static List<Integer> literals = new ArrayList<Integer>(5);
199 private static List<String> names = new ArrayList<String>(5);
200 private static List<UnitId> valueList = new ArrayList<UnitId>(5);
201
202
203
204
205 static
206 {
207 synchronized (UnitId.values)
208 {
209 UnitId.values.put(NO_UNIT.enumValue, NO_UNIT);
210 UnitId.values.put(METER.enumValue, METER);
211 UnitId.values.put(CENTIMENTER.enumValue, CENTIMENTER);
212 UnitId.values.put(MILLIMETER.enumValue, MILLIMETER);
213 UnitId.values.put(MICROMETER.enumValue, MICROMETER);
214 }
215 synchronized (UnitId.valueList)
216 {
217 UnitId.valueList.add(NO_UNIT);
218 UnitId.valueList.add(METER);
219 UnitId.valueList.add(CENTIMENTER);
220 UnitId.valueList.add(MILLIMETER);
221 UnitId.valueList.add(MICROMETER);
222
223
224 }
225 synchronized (UnitId.literals)
226 {
227 UnitId.literals.add(NO_UNIT.enumValue);
228 UnitId.literals.add(METER.enumValue);
229 UnitId.literals.add(CENTIMENTER.enumValue);
230 UnitId.literals.add(MILLIMETER.enumValue);
231 UnitId.literals.add(MICROMETER.enumValue);
232
233
234 }
235 synchronized (UnitId.names)
236 {
237 UnitId.names.add("NO_UNIT");
238 UnitId.names.add("METER");
239 UnitId.names.add("CENTIMENTER");
240 UnitId.names.add("MILLIMETER");
241 UnitId.names.add("MICROMETER");
242 UnitId.names = Collections.unmodifiableList(names);
243 }
244 }
245
246 }