1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.xnap.commons.settings;
21
22
23 /***
24 * Provides a setting for String objects.
25 */
26 public class EnumSetting<T extends Enum<T>> extends AbstractSetting<T> {
27
28 private Class<T> clazz;
29
30 public EnumSetting(SettingResource backend, String key, T defaultValue)
31 {
32 super(backend, key, defaultValue, null);
33
34 if (getDefaultValue() == null) {
35 throw new IllegalArgumentException("defaultValue may not be null");
36 }
37 clazz = defaultValue.getDeclaringClass();
38 }
39
40 public EnumSetting(SettingResource backend, String key, Class<T> clazz)
41 {
42 super(backend, key, null, null);
43
44 this.clazz = clazz;
45 }
46
47 public Class<T> getEnumClass() {
48 return clazz;
49 }
50
51 @Override
52 protected T fromString(String value)
53 {
54 try {
55 return T.valueOf(clazz, value);
56 } catch (IllegalArgumentException e) {
57 return null;
58 }
59 }
60
61 @Override
62 protected String toString(T value)
63 {
64 return value.name();
65 }
66 }