1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.configuration;
18
19 import java.util.Iterator;
20 import java.util.List;
21 import java.util.Map;
22 import java.util.Properties;
23 import java.util.Vector;
24
25 import org.apache.commons.collections.ExtendedProperties;
26 import org.apache.commons.lang.StringUtils;
27
28 /***
29 * Configuration converter. Helper class to convert between Configuration,
30 * ExtendedProperties and standard Properties.
31 *
32 * @author <a href="mailto:mpoeschl@marmot.at">Martin Poeschl</a>
33 * @version $Revision$, $Date: 2005-10-03 20:12:54 +0200 (Mon, 03 Oct 2005) $
34 */
35 public final class ConfigurationConverter
36 {
37 /***
38 * Private constructor prevents instances from being created.
39 */
40 private ConfigurationConverter()
41 {
42
43 }
44
45 /***
46 * Convert a ExtendedProperties class into a Configuration class.
47 *
48 * @param eprops ExtendedProperties object to convert
49 * @return Configuration created from the ExtendedProperties
50 */
51 public static Configuration getConfiguration(ExtendedProperties eprops)
52 {
53 return new MapConfiguration(eprops);
54 }
55
56 /***
57 * Convert a standard Properties class into a configuration class.
58 *
59 * @param props properties object to convert
60 * @return Configuration configuration created from the Properties
61 */
62 public static Configuration getConfiguration(Properties props)
63 {
64 return new MapConfiguration(props);
65 }
66
67 /***
68 * Convert a Configuration class into a ExtendedProperties class.
69 *
70 * @param config Configuration object to convert
71 * @return ExtendedProperties created from the Configuration
72 */
73 public static ExtendedProperties getExtendedProperties(Configuration config)
74 {
75 ExtendedProperties props = new ExtendedProperties();
76
77 Iterator keys = config.getKeys();
78
79 while (keys.hasNext())
80 {
81 String key = (String) keys.next();
82 Object property = config.getProperty(key);
83
84
85 if (property instanceof List)
86 {
87 property = new Vector((List) property);
88 }
89
90 props.setProperty(key, property);
91 }
92
93 return props;
94 }
95
96 /***
97 * Convert a Configuration class into a Properties class. List properties
98 * are joined into a string using the delimiter of the configuration if it
99 * extends AbstractConfiguration, and a comma otherwise.
100 *
101 * @param config Configuration object to convert
102 * @return Properties created from the Configuration
103 */
104 public static Properties getProperties(Configuration config)
105 {
106 Properties props = new Properties();
107
108 char delimiter = (config instanceof AbstractConfiguration)
109 ? ((AbstractConfiguration) config).getDelimiter() : ',';
110
111 Iterator keys = config.getKeys();
112 while (keys.hasNext())
113 {
114 String key = (String) keys.next();
115 List list = config.getList(key);
116
117
118 props.setProperty(key, StringUtils.join(list.iterator(), delimiter));
119 }
120
121 return props;
122 }
123
124 /***
125 * Convert a Configuration class into a Map class.
126 *
127 * @param config Configuration object to convert
128 * @return Map created from the Configuration
129 */
130 public static Map getMap(Configuration config)
131 {
132 return new ConfigurationMap(config);
133 }
134
135 }