Merge branch 'master' of ssh://git.indexdata.com/home/git/private/mkjsf.git into...
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / mkjsf / config / Configuration.java
diff --git a/src/main/java/com/indexdata/mkjsf/config/Configuration.java b/src/main/java/com/indexdata/mkjsf/config/Configuration.java
new file mode 100644 (file)
index 0000000..f7935fd
--- /dev/null
@@ -0,0 +1,97 @@
+package com.indexdata.mkjsf.config;\r
+\r
+import java.io.Serializable;\r
+import java.util.ArrayList;\r
+import java.util.HashMap;\r
+import java.util.List;\r
+import java.util.Map;\r
+import java.util.StringTokenizer;\r
+\r
+import org.apache.log4j.Logger;\r
+\r
+import com.indexdata.masterkey.config.MissingMandatoryParameterException;\r
+import com.indexdata.mkjsf.utils.Utils;\r
+\r
+/**\r
+ * Represents a configuration as a set of key-value pairs\r
+ * \r
+ * @author Niels Erik\r
+ *\r
+ */\r
+public class Configuration implements Serializable {\r
+\r
+  private static final long serialVersionUID = -6801241975338182197L;\r
+  private static Logger logger = Logger.getLogger(Configuration.class);\r
+  Map<String,String> properties = new HashMap<String,String>();\r
+  \r
+  public Configuration () {\r
+    logger.debug(Utils.objectId(this) + " being constructed with no argument");    \r
+  }\r
+  \r
+  public Configuration(Map<String,String> parameters) {\r
+    addAll(parameters);\r
+  }\r
+  \r
+  public void addAll(Map<String,String> parameters) {\r
+    for (String key : parameters.keySet()) {\r
+      properties.put(key, parameters.get(key));\r
+    }    \r
+  }\r
+  \r
+  public void addAll(Map<String,String> defaults, Map<String,String> parameters) {\r
+    for (String key : defaults.keySet()) {\r
+      properties.put(key, defaults.get(key));\r
+    }    \r
+    for (String key : parameters.keySet()) {\r
+      properties.put(key, parameters.get(key));\r
+    }    \r
+  }\r
+          \r
+  public String get(String key) {\r
+    return properties.get(key);    \r
+  }\r
+  \r
+  public void set(String key, String value) {\r
+    properties.put(key, value);\r
+  }\r
+    \r
+  public String get(String key, String defaultValue) {\r
+    if (properties.containsKey(key)) {\r
+      return properties.get(key);\r
+    } else {\r
+      return defaultValue;\r
+    }\r
+  }\r
+  \r
+  public String getMandatory(String key) throws MissingMandatoryParameterException {\r
+    if (properties.containsKey(key)) {\r
+      return properties.get(key);\r
+    } \r
+    throw new MissingMandatoryParameterException("Missing mandatory parameter: " + key);     \r
+  }\r
+  \r
+  public List<String> getMultiProperty(String key, String separator) {    \r
+    List<String> props = new ArrayList<String>();\r
+    String prop = get(key);\r
+    if (prop != null) {      \r
+      StringTokenizer tokenizer = new StringTokenizer(prop,separator);\r
+      while (tokenizer.hasMoreElements()) {\r
+        props.add(tokenizer.nextToken());\r
+      }     \r
+    }\r
+    return props;\r
+  }\r
+  \r
+\r
+  public String getConfigFilePath() {
+    return get("configpath","nopathgiven");\r
+  }\r
+  \r
+  public Map<String,String> getConfigMap() {\r
+    return properties;\r
+  }\r
+  \r
+   \r
+  \r
+\r
+}\r