Tweaks configuration, command responses, pz2/sp switching
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / mkjsf / config / Configuration.java
1 package com.indexdata.mkjsf.config;\r
2 \r
3 import java.io.Serializable;\r
4 import java.util.ArrayList;\r
5 import java.util.HashMap;\r
6 import java.util.List;\r
7 import java.util.Map;\r
8 import java.util.StringTokenizer;\r
9 \r
10 import org.apache.log4j.Logger;\r
11 \r
12 import com.indexdata.masterkey.config.MissingMandatoryParameterException;\r
13 import com.indexdata.mkjsf.utils.Utils;\r
14 \r
15 /**\r
16  * Represents a configuration as a set of key-value pairs\r
17  * \r
18  * @author Niels Erik\r
19  *\r
20  */\r
21 public class Configuration implements Serializable {\r
22 \r
23   private static final long serialVersionUID = -6801241975338182197L;\r
24   private static Logger logger = Logger.getLogger(Configuration.class);\r
25   Map<String,String> properties = new HashMap<String,String>();\r
26   \r
27   public Configuration () {\r
28     logger.debug(Utils.objectId(this) + " being constructed with no argument");    \r
29   }\r
30   \r
31   public Configuration(Map<String,String> parameters) {\r
32     addAll(parameters);\r
33   }\r
34   \r
35   public void addAll(Map<String,String> parameters) {\r
36     for (String key : parameters.keySet()) {\r
37       properties.put(key, parameters.get(key));\r
38     }    \r
39   }\r
40   \r
41   public void addAll(Map<String,String> defaults, Map<String,String> parameters) {\r
42     for (String key : defaults.keySet()) {\r
43       properties.put(key, defaults.get(key));\r
44     }    \r
45     for (String key : parameters.keySet()) {\r
46       properties.put(key, parameters.get(key));\r
47     }    \r
48   }\r
49           \r
50   public String get(String key) {\r
51     return properties.get(key);    \r
52   }\r
53   \r
54   public void set(String key, String value) {\r
55     properties.put(key, value);\r
56   }\r
57     \r
58   public String get(String key, String defaultValue) {\r
59     if (properties.containsKey(key)) {\r
60       return properties.get(key);\r
61     } else {\r
62       return defaultValue;\r
63     }\r
64   }\r
65   \r
66   public String getMandatory(String key) throws MissingMandatoryParameterException {\r
67     if (properties.containsKey(key)) {\r
68       return properties.get(key);\r
69     } \r
70     throw new MissingMandatoryParameterException("Missing mandatory parameter: " + key);     \r
71   }\r
72   \r
73   public List<String> getMultiProperty(String key, String separator) {    \r
74     List<String> props = new ArrayList<String>();\r
75     String prop = get(key);\r
76     if (prop != null) {      \r
77       StringTokenizer tokenizer = new StringTokenizer(prop,separator);\r
78       while (tokenizer.hasMoreElements()) {\r
79         props.add(tokenizer.nextToken());\r
80       }     \r
81     }\r
82     return props;\r
83   }\r
84   \r
85 \r
86   public String getConfigFilePath() {
87     return get("configpath","nopathgiven");\r
88   }\r
89   \r
90   public Map<String,String> getConfigMap() {\r
91     return properties;\r
92   }\r
93   \r
94    \r
95   \r
96 \r
97 }\r