Initial transfer of assests from github
[packetcable.git] / src / main / java / org / pcmm / PCMMProperties.java
1 package org.pcmm;
2
3 import java.io.IOException;
4 import java.io.InputStream;
5 import java.util.Properties;
6
7 import org.slf4j.Logger;
8 import org.slf4j.LoggerFactory;
9
10 /**
11  * Loads the PCMM Properties file.
12  * 
13  */
14 public class PCMMProperties implements PCMMConstants {
15
16         private static Properties properties;
17         private static Logger logger = LoggerFactory.getLogger(PCMMProperties.class);
18
19         static {
20                 try {
21                         InputStream in = PCMMProperties.class.getClassLoader().getResourceAsStream("pcmm.properties");
22                         properties = new Properties();
23                         properties.load(in);
24                         in.close();
25                 } catch (IOException ie) {
26                         logger.error(ie.getMessage());
27                 }
28         }
29
30         protected static String get(String key) {
31                 return properties.getProperty(key);
32         }
33
34         @SuppressWarnings("unchecked")
35         public static <T> T get(String key, Class<T> type, Object _default) {
36                 String prop = get(key);
37                 if (prop != null && !prop.isEmpty()) {
38                         if (Boolean.class.isAssignableFrom(type))
39                                 return (T) Boolean.valueOf(prop);
40                         else if (Integer.class.isAssignableFrom(type))
41                                 return (T) Integer.valueOf(prop);
42                         else if (Short.class.isAssignableFrom(type))
43                                 return (T) Short.valueOf(prop);
44                         if (Float.class.isAssignableFrom(type))
45                                 return (T) Float.valueOf(prop);
46                         if (Long.class.isAssignableFrom(type))
47                                 return (T) Long.valueOf(prop);
48                         if (Double.class.isAssignableFrom(type))
49                                 return (T) Double.valueOf(prop);
50                         else if (String.class.isAssignableFrom(type))
51                                 return (T) prop;
52                 }
53                 return (T) _default;
54         }
55
56         public static <T> T get(String key, Class<T> type) {
57                 return get(key, type, null);
58         }
59
60 }