1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.giraph.conf;
19
20 import org.apache.hadoop.conf.Configuration;
21
22 import com.google.common.base.Objects;
23
24
25
26
27
28
29 public class EnumConfOption<T extends Enum<T>> extends AbstractConfOption {
30
31 private final Class<T> klass;
32
33 private final T defaultValue;
34
35
36
37
38
39
40
41
42
43 public EnumConfOption(String key, Class<T> klass, T defaultValue,
44 String description) {
45 super(key, description);
46 this.klass = klass;
47 this.defaultValue = defaultValue;
48 }
49
50
51
52
53
54
55
56
57
58
59
60 public static <X extends Enum<X>> EnumConfOption<X>
61 create(String key, Class<X> klass, X defaultValue, String description) {
62 return new EnumConfOption<X>(key, klass, defaultValue, description);
63 }
64
65 @Override public boolean isDefaultValue(Configuration conf) {
66 return Objects.equal(get(conf), defaultValue);
67 }
68
69 @Override public String getDefaultValueStr() {
70 return defaultValue.name();
71 }
72
73 @Override public ConfOptionType getType() {
74 return ConfOptionType.ENUM;
75 }
76
77
78
79
80
81
82
83 public T get(Configuration conf) {
84 String valueStr = conf.get(getKey(), getDefaultValueStr());
85 return T.valueOf(klass, valueStr);
86 }
87
88
89
90
91
92
93
94 public void set(Configuration conf, Enum<T> value) {
95 conf.set(getKey(), value.name());
96 }
97
98
99
100
101
102
103
104 public void setIfUnset(Configuration conf, Enum<T> value) {
105 if (!contains(conf)) {
106 set(conf, value);
107 }
108 }
109 }