Sanitary
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / pz2utils4jsf / config / Pz2Config.java
1 package com.indexdata.pz2utils4jsf.config;\r
2 \r
3 import java.io.IOException;\r
4 import java.io.Serializable;\r
5 import java.util.HashMap;\r
6 import java.util.Map;\r
7 \r
8 import javax.enterprise.context.SessionScoped;\r
9 import javax.inject.Named;\r
10 \r
11 import org.apache.log4j.Logger;\r
12 \r
13 import com.indexdata.masterkey.config.MissingMandatoryParameterException;\r
14 import com.indexdata.masterkey.config.ModuleConfiguration;\r
15 import com.indexdata.masterkey.config.ModuleConfigurationGetter;\r
16 import com.indexdata.pz2utils4jsf.errors.ConfigurationException;\r
17 import com.indexdata.pz2utils4jsf.utils.Utils;\r
18 \r
19 @Named @SessionScoped\r
20 public class Pz2Config implements ModuleConfigurationGetter, Serializable {\r
21 \r
22   private static final long serialVersionUID = -6801241975338182197L;\r
23   private static Logger logger = Logger.getLogger(Pz2Config.class);\r
24   Map<String,String> properties = new HashMap<String,String>();\r
25   ModuleConfiguration moduleConfig = null;\r
26   \r
27   public Pz2Config () {\r
28     logger.debug(Utils.objectId(this) + " being constructed with no argument");\r
29     setDefaults();\r
30   }\r
31   \r
32   public Pz2Config (Map<String,String> parameters) {    \r
33     setDefaults();\r
34     for (String key : parameters.keySet()) {\r
35       properties.put(key, parameters.get(key));\r
36     }\r
37   }\r
38   \r
39   public Pz2Config (ModuleConfiguration moduleConfig) throws ConfigurationException {\r
40     logger.debug(Utils.objectId(this) + " being constructed with moduleConfig argument.");\r
41     this.moduleConfig = moduleConfig;\r
42     try {\r
43       for (String key : moduleConfig.getConfigMap().keySet()) {\r
44         properties.put(key, moduleConfig.getConfigParameter(key));\r
45       }\r
46     } catch (IOException e) {\r
47       throw new ConfigurationException("Could not instantiate Pazpar2 configuration: "+e.getMessage(),e);\r
48     }\r
49   }\r
50   \r
51   private void setDefaults () {\r
52     properties.put("PROXY_MODE","1");\r
53     properties.put("SERIALIZE_REQUESTS", "false");\r
54     properties.put("STREAMBUFF_SIZE", "4096");\r
55     properties.put("PARSE_RESPONSES", "true");    \r
56   }\r
57   \r
58   @Override\r
59   public String get(String key) {\r
60     return properties.get(key);    \r
61   }\r
62   \r
63   public void set(String key, String value) {\r
64     properties.put(key, value);\r
65   }\r
66   \r
67   @Override\r
68   public String get(String key, String defaultValue) {\r
69     if (properties.containsKey(key)) {\r
70       return properties.get(key);\r
71     } else {\r
72       return defaultValue;\r
73     }\r
74   }\r
75 \r
76   @Override\r
77   public String getMandatory(String key) throws MissingMandatoryParameterException {\r
78     if (properties.containsKey(key)) {\r
79       return properties.get(key);\r
80     } \r
81     throw new MissingMandatoryParameterException("Missing mandatory parameter: " + key);     \r
82   }\r
83 \r
84   @Override\r
85   public String getConfigFilePath() {
86     return (moduleConfig != null ? moduleConfig.getConfigFilePath() : "nopath");\r
87   }\r
88   \r
89   \r
90 \r
91 }\r