1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package net.sf.eos.config;
17
18
19 import static java.lang.Boolean.FALSE;
20 import static java.lang.Boolean.TRUE;
21
22 import java.util.HashMap;
23 import java.util.Iterator;
24 import java.util.Map;
25 import java.util.Map.Entry;
26
27 import org.apache.commons.logging.Log;
28 import org.apache.commons.logging.LogFactory;
29
30
31
32
33
34 public class Configuration implements Iterable<Entry<String, String>> {
35
36 static final Log LOG = LogFactory.getLog(Configuration.class.getName());
37
38 private final Map<String, String> config = new HashMap<String, String>();
39
40
41 public Configuration() {
42 ;
43 }
44
45
46
47
48
49 public Configuration(final Configuration toCopy) {
50 for (final Entry<String, String> entry : toCopy.config.entrySet()) {
51 final String key = entry.getKey();
52 final String value = entry.getValue();
53 this.config.put(key, value);
54 }
55 }
56
57
58
59
60
61
62 public void set(final String name, final String value) {
63 assert this.config != null;
64 this.config.put(name, value);
65 }
66
67
68
69
70
71
72 public String get(final String name) {
73 assert this.config != null;
74 return this.config.get(name);
75 }
76
77
78
79
80
81
82
83 public String get(final String name, final String defaultValue) {
84 assert this.config != null;
85 final String retval = this.config.get(name);
86 return retval != null ? retval : defaultValue;
87 }
88
89
90
91
92
93 public Iterator<Entry<String, String>> iterator() {
94 assert this.config != null;
95 return this.config.entrySet().iterator();
96 }
97
98 @Override
99 public String toString() {
100 final StringBuilder sb = new StringBuilder("Configuration[\n");
101 for (final Entry<String, String> entry : this) {
102 sb.append(" ");
103 sb.append(entry.getKey());
104 sb.append(" = ");
105 sb.append(entry.getValue());
106 sb.append("\n");
107 }
108 sb.append("]");
109
110 return sb.toString();
111 }
112
113
114
115
116
117
118
119
120 public boolean getBoolean(final String name, final boolean defaultValue) {
121 assert this.config != null;
122 final String retval = get(name);
123
124 if (TRUE.toString().equalsIgnoreCase(retval)) {
125 return true;
126 } else if (FALSE.toString().equalsIgnoreCase(retval)) {
127 return false;
128 }
129
130 if (LOG.isDebugEnabled()) {
131 LOG.debug("Use default value " + defaultValue + " for key " + name);
132 }
133 return defaultValue;
134 }
135
136
137
138
139
140
141
142
143 public int getInt(final String name, final int defaultValue) {
144 assert this.config != null;
145 final String retval = get(name);
146
147 if (retval == null) {
148 if (LOG.isDebugEnabled()) {
149 LOG.debug("Null value for key " + name + " - use default "
150 + defaultValue);
151 }
152 return defaultValue;
153 }
154
155 try {
156 return Integer.parseInt(retval);
157 } catch (final NumberFormatException e) {
158 if (LOG.isDebugEnabled()) {
159 LOG.debug("Unable to parse value '" + retval + "' of key " + name
160 + " - use default " + defaultValue);
161 }
162 return defaultValue;
163 }
164 }
165
166
167
168
169
170
171
172
173 public float getFloat(final String name, final float defaultValue) {
174 assert this.config != null;
175 final String retval = get(name);
176
177 if (retval == null) {
178 if (LOG.isDebugEnabled()) {
179 LOG.debug("Null value for key " + name + " - use default "
180 + defaultValue);
181 }
182 return defaultValue;
183 }
184
185 try {
186 return Float.parseFloat(retval);
187 } catch (final NumberFormatException e) {
188 if (LOG.isDebugEnabled()) {
189 LOG.debug("Unable to parse value '" + retval + "' of key " + name
190 + " - use default " + defaultValue);
191 }
192 return defaultValue;
193 }
194 }
195 }