配置项管理工具类: 在获取键的值时,键会被转换为大写字母后获取

  1 public class ConfigurationUtils {
  2     private static Map<String, String> config;
  3     private static Map<String,String> sourceConfig;
  4 
  5     private static volatile boolean inited = false;
  6 
  7     public synchronized static final void init(Properties properties) {
  8         if (inited) {
  9             throw new ConfigException("ConfigurationUtils has been inited!");
 10         } else {
 11             Map<String, String> map = new HashMap<String, String>();
 12             Map<String,String> sourceMap = new HashMap<String,String>();
 13             if (properties != null) {
 14                 Iterator<String> iterator = properties.stringPropertyNames()
 15                         .iterator();
 16                 while (iterator.hasNext()) {
 17                     String key = iterator.next();
 18                     String value = properties.getProperty(key, "");
 19                     map.put(key.toUpperCase(), value);
 20                     sourceMap.put(key, value);
 21                 }
 22             }
 23 
 24             config = Collections.unmodifiableMap(map);
 25             sourceConfig = Collections.unmodifiableMap(sourceMap);
 26             inited = true;
 27         }
 28     }
 29 
 30     public static Properties getProperties() {
 31         checkInit();
 32         return copyProperties(config);
 33     }
 34 
 35     public static Map<String, String> getMap() {
 36         checkInit();
 37         return copyMap(config);
 38     }
 39     
 40     public static Properties getSourceProperties() {
 41         checkInit();
 42         return copyProperties(sourceConfig);
 43     }
 44     
 45     public static Map<String, String> getSourceMap() {
 46         checkInit();
 47         return copyMap(sourceConfig);
 48     }
 49     
 50     /**
 51      * 根据键直接获取字符串,在获取字符串时会依据内外网标识取不同的值
 52      * @param key
 53      * @return
 54      */
 55     public static String getConfig(String key){
 56         checkInit();
 57         if (StringUtils.isEmpty(key)) {
 58             return null;
 59         }
 60         //根据内外网标识获取不同的配置信息
 61         Boolean outside = ClientIsOutside.get();
 62         key = key.trim().toUpperCase();
 63         String result = null;
 64         if (outside) {
 65             result = config.get(getOutsideKey(key).toUpperCase());
 66         } else {
 67             result = config.get(key);
 68         }
 69 
 70         return result;
 71     }
 72     
 73     /**
 74      * 根据键直接获取字符串,在获取字符串时会依据内外网标识取不同的值;如果指定键的值不存在,则返回默认值
 75      * @param key
 76      * @return
 77      */
 78     public static String getConfig(String key,String defaultValue){
 79         return getValueOrDefault(getConfig(key), defaultValue);
 80     }
 81     
 82     /**
 83      * 根据键直接获取字符串,在获取字符串时会依据内外网标识取不同的值;如果指定键的值不存在,则抛出异常
 84      * @param key
 85      * @return
 86      */
 87     public static String getMustExistsConfig(String key) {
 88         String value = getConfig(key);
 89         checkExists(key, value);
 90         return value;
 91     }
 92     
 93     public static String getSystemConfig(String key){
 94         return getConfig(getSystemKey(key));
 95     }
 96     
 97     public static String getSystemConfig(String key,String defaultValue){
 98         return getConfig(getSystemKey(key), defaultValue);
 99     }
100     
101     public static String getMustExistsSystemConfig(String key) {
102         return getMustExistsConfig(getSystemKey(key));
103     }
104 
105     /**
106      * 根据键直接获取字符串
107      * 
108      * @param key
109      * @return
110      */
111     public static String getStringConfig(String key) {
112         checkInit();
113         if (StringUtils.isEmpty(key)) {
114             return null;
115         }
116         return config.get(key.toUpperCase());
117     }
118 
119     /**
120      * 根据键直接获取字符串,如果不存在,则返回默认值
121      * 
122      * @param key
123      * @return
124      */
125     public static String getStringConfig(String key, String defaultValue) {
126         return getValueOrDefault(getStringConfig(key), defaultValue);
127     }
128 
129     /**
130      * 根据键直接获取字符串,如果不存在则抛出异常
131      * 
132      * @param key
133      * @return
134      */
135     public static String getMustExistsStringConfig(String key) {
136         String value = getStringConfig(key);
137         checkExists(key, value);
138         return value;
139     }
140 
141     public static String getStringSystemConfig(String key) {
142         return getStringConfig(getSystemKey(key));
143     }
144 
145     public static String getStringSystemConfig(String key, String defaultValue) {
146         return getStringConfig(getSystemKey(key), defaultValue);
147     }
148 
149     public static String getMustExistsStringSystemConfig(String key) {
150         return getMustExistsStringConfig(getSystemKey(key));
151     }
152 
153     public static Integer getIntegerConfig(String key) {
154         String value = getStringConfig(key);
155         if (!StringUtils.isEmpty(value)) {
156             return Integer.parseInt(value);
157         }
158 
159         return null;
160     }
161 
162     public static Integer getIntegerConfig(String key, Integer defaultValue) {
163         return getValueOrDefault(getIntegerConfig(key), defaultValue);
164     }
165 
166     public static Integer getMustExistsIntegerConfig(String key) {
167         Integer value = getIntegerConfig(key);
168         checkExists(key, value);
169         return value;
170     }
171     
172     public static Integer getIntegerSystemConfig(String key){
173         return getIntegerConfig(getSystemKey(key));
174     }
175     
176     public static Integer getIntegerSystemConfig(String key, Integer defaultValue) {
177         return getIntegerConfig(getSystemKey(key), defaultValue);
178     }
179 
180     public static Integer getMustExistsIntegerSystemConfig(String key) {
181         return getMustExistsIntegerConfig(getSystemKey(key));
182     }
183 
184     public static Long getLongConfig(String key) {
185         String value = getStringConfig(key);
186         if (!StringUtils.isEmpty(value)) {
187             return Long.parseLong(value);
188         }
189 
190         return null;
191     }
192 
193     public static Long getLongConfig(String key, Long defaultValue) {
194         return getValueOrDefault(getLongConfig(key), defaultValue);
195     }
196 
197     public static Long getMustExistsLongConfig(String key) {
198         Long value = getLongConfig(key);
199         checkExists(key, value);
200         return value;
201     }
202     
203     public static Long getLongSystemConfig(String key) {
204         return getLongConfig(getSystemKey(key));
205     }
206 
207     public static Long getLongSystemConfig(String key, Long defaultValue) {
208         return getLongConfig(getSystemKey(key), defaultValue);
209     }
210 
211     public static Long getMustExistsLongSystemConfig(String key) {
212         return getMustExistsLongConfig(getSystemKey(key));
213     }
214 
215     public static Double getDoubleConfig(String key) {
216         String value = getStringConfig(key);
217         if (!StringUtils.isEmpty(value)) {
218             return Double.parseDouble(value);
219         }
220 
221         return null;
222     }
223 
224     public static Double getDoubleConfig(String key, Double defaultValue) {
225         return getValueOrDefault(getDoubleConfig(key), defaultValue);
226     }
227 
228     public static Double getMustExistsDoubleConfig(String key) {
229         Double value = getDoubleConfig(key);
230         checkExists(key, value);
231         return value;
232     }
233     
234     public static Double getDoubleSystemConfig(String key) {
235         return getDoubleConfig(getSystemKey(key));
236     }
237 
238     public static Double getDoubleSystemConfig(String key, Double defaultValue) {
239         return getDoubleConfig(getSystemKey(key), defaultValue);
240     }
241 
242     public static Double getMustExistsDoubleSystemConfig(String key) {
243         return getMustExistsDoubleConfig(getSystemKey(key));
244     }
245 
246     public static Boolean getBooleanConfig(String key) {
247         String value = getStringConfig(key);
248         if (!StringUtils.isEmpty(value)) {
249             return Boolean.parseBoolean(value);
250         }
251 
252         return null;
253     }
254 
255     public static boolean getBooleanConfig(String key, boolean defaultValue) {
256         return getValueOrDefault(getBooleanConfig(key), defaultValue);
257     }
258 
259     public static Boolean getMustExistsBooleanConfig(String key) {
260         Boolean value = getBooleanConfig(key);
261         checkExists(key, value);
262         return value;
263     }
264     
265     public static Boolean getBooleanSystemConfig(String key) {
266         return getBooleanConfig(getSystemKey(key));
267     }
268 
269     public static boolean getBooleanSystemConfig(String key, boolean defaultValue) {
270         return getBooleanConfig(getSystemKey(key), defaultValue);
271     }
272 
273     public static Boolean getMustExistsBooleanSystemConfig(String key) {
274         return getMustExistsBooleanConfig(getSystemKey(key));
275     }
276     
277     public static boolean checkConfig(String key){
278         checkInit();
279         if(StringUtils.isEmpty(key)){
280             return false;
281         }
282         String value = config.get(key.toUpperCase());
283         String outsideValue = config.get(getOutsideKey(key).toUpperCase());
284         return (!StringUtils.isEmpty(value)) || (!StringUtils.isEmpty(outsideValue));
285     }
286     
287     public static boolean checkSystemConfig(String key){
288         return checkConfig(getSystemKey(key));
289     }
290 
291     private static void checkInit() {
292         if (!inited) {
293             throw new ConfigException(
294                     "ConfigurationUtils has not been inited yet!");
295         }
296     }
297     
298     private static void checkExists(String key,Object value){
299         if (value == null) {
300             throw new ConfigException("The Configuration " + key
301                     + " must be configed!");
302         }
303     }
304     
305     private static <T> T getValueOrDefault(T value,T defaultValue){
306         return value == null ? defaultValue : value;
307     }
308     
309     public static String getSystemKey(String key){
310         key = key == null ? "" : key;
311         StringBuilder builder = new StringBuilder();
312         builder.append(
313                 getMustExistsStringConfig(ConfigurationConstants.PLATFORM_SYSTEM_IDENTIFIER).toUpperCase())
314                 .append(".").append(key);
315         return builder.toString();
316     }
317     
318     public static String getOutsideKey(String key){
319         key = key == null ? "" : key;
320         StringBuilder str = new StringBuilder();
321         str.append(key).append(
322                 ConfigurationConstants.PLATFORM_SUFFIX_CONFIG.toUpperCase());
323         return str.toString();
324     }
325     
326     private static Properties copyProperties(Map<String,String> map) {
327         Properties result = new Properties();
328         Iterator<String> iterator = map.keySet().iterator();
329         while (iterator.hasNext()) {
330             String key = iterator.next();
331             String value = map.get(key);
332             result.setProperty(key, value);
333         }
334         return result;
335     }
336     
337     private static Map<String,String> copyMap(Map<String,String> map) {
338         Map<String,String> result = new HashMap<String,String>();
339         Iterator<String> iterator = map.keySet().iterator();
340         while (iterator.hasNext()) {
341             String key = iterator.next();
342             String value = map.get(key);
343             result.put(key, value);
344         }
345         
346         return result;
347     }
348 }

 

posted @ 2017-12-15 13:30  付恒  阅读(367)  评论(0编辑  收藏  举报