View Javadoc

1   package org.jmux.app;
2   
3   import org.jmux.app.component.config.Config;
4   
5   import java.io.Serializable;
6   import java.util.ArrayList;
7   import java.util.HashMap;
8   import java.util.List;
9   import java.util.Map;
10  
11  /******************************************************************************
12   jmux - Java Modules Using XML
13   Copyright © 2006 jmux.org
14  
15   This library is free software; you can redistribute it and/or
16   modify it under the terms of the GNU Lesser General Public
17   License as published by the Free Software Foundation; either
18   version 2.1 of the License, or (at your option) any later version.
19  
20   This library is distributed in the hope that it will be useful,
21   but WITHOUT ANY WARRANTY; without even the implied warranty of
22   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
23   Lesser General Public License for more details.
24  
25   You should have received a copy of the GNU Lesser General Public
26   License along with this library; if not, write to the Free Software
27   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
28   *****************************************************************************/
29  
30  /***
31   * @author donaldw
32   */
33  public class ConfigImpl implements Config, Serializable {
34      private final String name;
35      private String value;
36      private final Map<String, List<Config>> children = new HashMap<String, List<Config>>();
37  
38      public ConfigImpl(String name) {
39          this.name = name;
40      }
41  
42      public String getName() {
43          return name;
44      }
45  
46      void setValue(String value) {
47          this.value = value;
48      }
49  
50      public Config getConf(String name) {
51          List<Config> list = children.get(name);
52          return (list != null ? list.get(0) : null);
53      }
54  
55      public List<Config> getConfs(String name) {
56          return children.get(name);
57      }
58  
59      void setConf(String name, ConfigImpl configImpl) {
60          List<Config> list;
61  
62          if (children.containsKey(name)) {
63              list = children.get(name);
64          } else {
65              list = new ArrayList<Config>();
66              children.put(name, list);
67          }
68  
69          list.add(configImpl);
70      }
71  
72      public boolean getBoolean(boolean def) {
73          if (value.equals("true")) {
74              return true;
75          } else if (value.equals("false")) {
76              return false;
77          } else {
78              throw new AppException("Could not parse " + value);
79          }
80      }
81  
82      public String getString(String def) {
83          if (value.equals("")) {
84              return def;
85          } else {
86              return value;
87          }
88      }
89  
90      public int getInteger(int def) {
91          if (value.equals("")) {
92              return def;
93          }
94          try {
95              return Integer.parseInt(value);
96          } catch (NumberFormatException ex) {
97              throw new AppException("Could not parse " + value, ex);
98          }
99      }
100 
101     public boolean getBoolean(boolean defaultVal, String... names) {
102         Config config = this;
103         for (String name : names) {
104             config = config.getConf(name);
105             if (config == null) {
106                 return defaultVal;
107             }
108         }
109         return config.getBoolean(defaultVal);
110     }
111 
112     public String getString(String defaultVal, String... names) {
113         Config config = this;
114         for (String name : names) {
115             config = config.getConf(name);
116             if (config == null) {
117                 return defaultVal;
118             }
119         }
120         return config.getString(defaultVal);
121     }
122 
123     public int getInteger(int defaultVal, String... names) {
124         Config config = this;
125         for (String name : names) {
126             config = config.getConf(name);
127             if (config == null) {
128                 return defaultVal;
129             }
130         }
131         return config.getInteger(defaultVal);
132     }
133 
134     public String toString() {
135         return "Config(" + name + "=" + value + ((children != null & children.size() > 0) ? ")..." : ").");
136     }
137 }