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 FunctionParameterId
43 implements Serializable, QuadrigeEnumerationDef<Integer>
44 {
45 MIN (
46 "quadrige3.enumeration.FunctionParameterId.MIN",
47 n("quadrige3.enumeration.FunctionParameterId.MIN.description"),
48 1),
49 MAX (
50 "quadrige3.enumeration.FunctionParameterId.MAX",
51 n("quadrige3.enumeration.FunctionParameterId.MAX.description"),
52 2),
53 IN (
54 "quadrige3.enumeration.FunctionParameterId.IN",
55 n("quadrige3.enumeration.FunctionParameterId.IN.description"),
56 3),
57 DATE_MIN (
58 "quadrige3.enumeration.FunctionParameterId.DATE_MIN",
59 n("quadrige3.enumeration.FunctionParameterId.DATE_MIN.description"),
60 4),
61 DATE_MAX (
62 "quadrige3.enumeration.FunctionParameterId.DATE_MAX",
63 n("quadrige3.enumeration.FunctionParameterId.DATE_MAX.description"),
64 5);
65
66
67
68
69 private static final long serialVersionUID = 3382356357711892354L;
70
71 private String key;
72 private String description;
73 private Integer enumValue;
74
75
76
77
78
79 private FunctionParameterId(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 FunctionParameterId fromString(String name)
115 {
116 return FunctionParameterId.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 FunctionParameterId fromValue(Integer value)
138 {
139 for (FunctionParameterId enumName: FunctionParameterId.values())
140 {
141 if (enumName.getValue().equals(value))
142 {
143 return enumName;
144 }
145 }
146 throw new IllegalArgumentException("FunctionParameterId.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 FunctionParameterId.literals;
183 }
184
185
186
187
188
189
190
191
192 public static List<String> names()
193 {
194 return FunctionParameterId.names;
195 }
196
197 private static Map<Integer, FunctionParameterId> values = new LinkedHashMap<Integer, FunctionParameterId>(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<FunctionParameterId> valueList = new ArrayList<FunctionParameterId>(5);
201
202
203
204
205 static
206 {
207 synchronized (FunctionParameterId.values)
208 {
209 FunctionParameterId.values.put(MIN.enumValue, MIN);
210 FunctionParameterId.values.put(MAX.enumValue, MAX);
211 FunctionParameterId.values.put(IN.enumValue, IN);
212 FunctionParameterId.values.put(DATE_MIN.enumValue, DATE_MIN);
213 FunctionParameterId.values.put(DATE_MAX.enumValue, DATE_MAX);
214 }
215 synchronized (FunctionParameterId.valueList)
216 {
217 FunctionParameterId.valueList.add(MIN);
218 FunctionParameterId.valueList.add(MAX);
219 FunctionParameterId.valueList.add(IN);
220 FunctionParameterId.valueList.add(DATE_MIN);
221 FunctionParameterId.valueList.add(DATE_MAX);
222
223
224 }
225 synchronized (FunctionParameterId.literals)
226 {
227 FunctionParameterId.literals.add(MIN.enumValue);
228 FunctionParameterId.literals.add(MAX.enumValue);
229 FunctionParameterId.literals.add(IN.enumValue);
230 FunctionParameterId.literals.add(DATE_MIN.enumValue);
231 FunctionParameterId.literals.add(DATE_MAX.enumValue);
232
233
234 }
235 synchronized (FunctionParameterId.names)
236 {
237 FunctionParameterId.names.add("MIN");
238 FunctionParameterId.names.add("MAX");
239 FunctionParameterId.names.add("IN");
240 FunctionParameterId.names.add("DATE_MIN");
241 FunctionParameterId.names.add("DATE_MAX");
242 FunctionParameterId.names = Collections.unmodifiableList(names);
243 }
244 }
245
246 }