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.system.rule;
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 FunctionId
43 implements Serializable, QuadrigeEnumerationDef<Integer>
44 {
45 MIN_MAX (
46 "quadrige3.enumeration.FunctionId.MIN_MAX",
47 n("quadrige3.enumeration.FunctionId.MIN_MAX.description"),
48 1),
49 IN (
50 "quadrige3.enumeration.FunctionId.IN",
51 n("quadrige3.enumeration.FunctionId.IN.description"),
52 2),
53 EMPTY (
54 "quadrige3.enumeration.FunctionId.EMPTY",
55 n("quadrige3.enumeration.FunctionId.EMPTY.description"),
56 3),
57 NOT_EMPTY (
58 "quadrige3.enumeration.FunctionId.NOT_EMPTY",
59 n("quadrige3.enumeration.FunctionId.NOT_EMPTY.description"),
60 4),
61 MIN_MAX_DATE (
62 "quadrige3.enumeration.FunctionId.MIN_MAX_DATE",
63 n("quadrige3.enumeration.FunctionId.MIN_MAX_DATE.description"),
64 5),
65 ERROR (
66 "quadrige3.enumeration.FunctionId.ERROR",
67 n("quadrige3.enumeration.FunctionId.ERROR.description"),
68 6),
69 PRECONDITION_QUALITATIVE (
70 "quadrige3.enumeration.FunctionId.PRECONDITION_QUALITATIVE",
71 n("quadrige3.enumeration.FunctionId.PRECONDITION_QUALITATIVE.description"),
72 -1),
73 PRECONDITION_NUMERICAL (
74 "quadrige3.enumeration.FunctionId.PRECONDITION_NUMERICAL",
75 n("quadrige3.enumeration.FunctionId.PRECONDITION_NUMERICAL.description"),
76 -2),
77 NOT_EMPTY_CONDITIONAL (
78 "quadrige3.enumeration.FunctionId.NOT_EMPTY_CONDITIONAL",
79 n("quadrige3.enumeration.FunctionId.NOT_EMPTY_CONDITIONAL.description"),
80 -3);
81
82
83
84
85 private static final long serialVersionUID = 1413969215516048969L;
86
87 private String key;
88 private String description;
89 private Integer enumValue;
90
91
92
93
94
95 private FunctionId(String key, String description, Integer value)
96 {
97 this.key = key;
98 this.description = description;
99 this.enumValue = value;
100 }
101
102 @Override
103
104
105
106 public void setValue(Integer newValue) {
107 if (newValue != null && !this.enumValue.equals(newValue)) {
108
109 values.remove(this.enumValue);
110 literals.remove(this.enumValue);
111 this.enumValue = newValue;
112 values.put(this.enumValue, this);
113 literals.add(this.enumValue);
114 }
115 }
116
117
118 @Override
119 public String getValueAsString()
120 {
121 return String.valueOf(this.enumValue);
122 }
123
124
125
126
127
128
129
130 public static FunctionId fromString(String name)
131 {
132 return FunctionId.valueOf(name);
133 }
134
135
136
137
138
139
140
141 public Integer value()
142 {
143 return this.enumValue;
144 }
145
146
147
148
149
150
151
152
153 public static FunctionId fromValue(Integer value)
154 {
155 for (FunctionId enumName: FunctionId.values())
156 {
157 if (enumName.getValue().equals(value))
158 {
159 return enumName;
160 }
161 }
162 throw new IllegalArgumentException("FunctionId.fromValue(" + value.toString() + ')');
163 }
164
165
166
167
168
169
170 public Integer getValue()
171 {
172 return this.enumValue;
173 }
174
175 @Override
176 public String getDescription() {
177 return description;
178 }
179
180 @Override
181 public String getKey() {
182 return key;
183 }
184
185 @Override
186 public Class<?> getType() {
187 return Integer.class;
188 }
189
190
191
192
193
194
195
196 public static List<Integer> literals()
197 {
198 return FunctionId.literals;
199 }
200
201
202
203
204
205
206
207
208 public static List<String> names()
209 {
210 return FunctionId.names;
211 }
212
213 private static Map<Integer, FunctionId> values = new LinkedHashMap<Integer, FunctionId>(9, 1);
214 private static List<Integer> literals = new ArrayList<Integer>(9);
215 private static List<String> names = new ArrayList<String>(9);
216 private static List<FunctionId> valueList = new ArrayList<FunctionId>(9);
217
218
219
220
221 static
222 {
223 synchronized (FunctionId.values)
224 {
225 FunctionId.values.put(MIN_MAX.enumValue, MIN_MAX);
226 FunctionId.values.put(IN.enumValue, IN);
227 FunctionId.values.put(EMPTY.enumValue, EMPTY);
228 FunctionId.values.put(NOT_EMPTY.enumValue, NOT_EMPTY);
229 FunctionId.values.put(MIN_MAX_DATE.enumValue, MIN_MAX_DATE);
230 FunctionId.values.put(ERROR.enumValue, ERROR);
231 FunctionId.values.put(PRECONDITION_QUALITATIVE.enumValue, PRECONDITION_QUALITATIVE);
232 FunctionId.values.put(PRECONDITION_NUMERICAL.enumValue, PRECONDITION_NUMERICAL);
233 FunctionId.values.put(NOT_EMPTY_CONDITIONAL.enumValue, NOT_EMPTY_CONDITIONAL);
234 }
235 synchronized (FunctionId.valueList)
236 {
237 FunctionId.valueList.add(MIN_MAX);
238 FunctionId.valueList.add(IN);
239 FunctionId.valueList.add(EMPTY);
240 FunctionId.valueList.add(NOT_EMPTY);
241 FunctionId.valueList.add(MIN_MAX_DATE);
242 FunctionId.valueList.add(ERROR);
243 FunctionId.valueList.add(PRECONDITION_QUALITATIVE);
244 FunctionId.valueList.add(PRECONDITION_NUMERICAL);
245 FunctionId.valueList.add(NOT_EMPTY_CONDITIONAL);
246
247
248 }
249 synchronized (FunctionId.literals)
250 {
251 FunctionId.literals.add(MIN_MAX.enumValue);
252 FunctionId.literals.add(IN.enumValue);
253 FunctionId.literals.add(EMPTY.enumValue);
254 FunctionId.literals.add(NOT_EMPTY.enumValue);
255 FunctionId.literals.add(MIN_MAX_DATE.enumValue);
256 FunctionId.literals.add(ERROR.enumValue);
257 FunctionId.literals.add(PRECONDITION_QUALITATIVE.enumValue);
258 FunctionId.literals.add(PRECONDITION_NUMERICAL.enumValue);
259 FunctionId.literals.add(NOT_EMPTY_CONDITIONAL.enumValue);
260
261
262 }
263 synchronized (FunctionId.names)
264 {
265 FunctionId.names.add("MIN_MAX");
266 FunctionId.names.add("IN");
267 FunctionId.names.add("EMPTY");
268 FunctionId.names.add("NOT_EMPTY");
269 FunctionId.names.add("MIN_MAX_DATE");
270 FunctionId.names.add("ERROR");
271 FunctionId.names.add("PRECONDITION_QUALITATIVE");
272 FunctionId.names.add("PRECONDITION_NUMERICAL");
273 FunctionId.names.add("NOT_EMPTY_CONDITIONAL");
274 FunctionId.names = Collections.unmodifiableList(names);
275 }
276 }
277
278 }