KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > oddjob > values > types > PropertiesType


1 /*
2  * (c) Rob Gordon 2005
3  */

4 package org.oddjob.values.types;
5
6 import java.io.File JavaDoc;
7 import java.io.FileInputStream JavaDoc;
8 import java.io.IOException JavaDoc;
9 import java.io.InputStream JavaDoc;
10 import java.util.Collection JavaDoc;
11 import java.util.Map JavaDoc;
12 import java.util.Properties JavaDoc;
13 import java.util.Set JavaDoc;
14
15 import org.oddjob.OddjobException;
16 import org.oddjob.util.OddjobConfigException;
17
18 /**
19  * @oddjob.description A type which reads a properties file
20  * and creates a {@link MapType} like type from the contents.
21  *
22  * @oddjob.example
23  *
24  * Making the contents of a properties file available as variables.
25  *
26  * <pre>
27  * &lt;varables id="vars"&gt;
28  * &lt;properties file="fruits.properties"/&gt;
29  * &lt;/variables&gt;
30  * </pre>
31  *
32  * @author Rob Gordon.
33  *
34  */

35 public class PropertiesType implements Map JavaDoc {
36
37     private Properties JavaDoc props;
38     
39     /**
40      * @oddjob.property
41      * @oddjob.description A file containing properties.
42      * @oddjob.required Yes if input is not supplied.
43      */

44     private File JavaDoc file;
45     
46     /**
47      * @oddjob.property
48      * @oddjob.description An input source in properties file format.
49      * @oddjob.required Yes if file is not supplied.
50      */

51     private InputStream JavaDoc input;
52     
53     /**
54      * @return Returns the file.
55      */

56     public File JavaDoc getFile() {
57         return file;
58     }
59     /**
60      * @param file The file to set.
61      */

62     public void setFile(File JavaDoc file) {
63         this.file = file;
64     }
65     
66     public Object JavaDoc valueFor(Class JavaDoc required) {
67         load();
68         return props;
69     }
70     
71     private void load() {
72         if (props != null) {
73             return;
74         }
75         
76         try {
77             if (file != null) {
78                 input = new FileInputStream JavaDoc(file);
79             }
80             if (input == null) {
81                 throw new OddjobConfigException("No input type specified for properties.");
82             }
83             props = new Properties JavaDoc();
84             props.load(input);
85         } catch (IOException JavaDoc e) {
86             throw new OddjobException("Can't load properties!", e);
87         }
88     }
89     
90     /**
91      * @return Returns the input.
92      */

93     public InputStream JavaDoc getInput() {
94         return input;
95     }
96     /**
97      * @param input The input to set.
98      */

99     public void setInput(InputStream JavaDoc input) {
100         this.input = input;
101     }
102     
103     /* (non-Javadoc)
104      * @see java.util.Map#clear()
105      */

106     public void clear() {
107         throw new UnsupportedOperationException JavaDoc("This map is read only!");
108     }
109
110     /* (non-Javadoc)
111      * @see java.util.Map#containsKey(java.lang.Object)
112      */

113     public boolean containsKey(Object JavaDoc key) {
114         load();
115         return props.containsKey(key);
116     }
117     
118     /* (non-Javadoc)
119      * @see java.util.Map#containsValue(java.lang.Object)
120      */

121     public boolean containsValue(Object JavaDoc value) {
122         load();
123         return props.containsValue(value);
124     }
125     
126     /* (non-Javadoc)
127      * @see java.util.Map#entrySet()
128      */

129     public Set JavaDoc entrySet() {
130         load();
131         return props.entrySet();
132     }
133     
134     /* (non-Javadoc)
135      * @see java.util.Map#get(java.lang.Object)
136      */

137     public Object JavaDoc get(Object JavaDoc key) {
138         load();
139         return props.get(key);
140     }
141     
142     /* (non-Javadoc)
143      * @see java.util.Map#isEmpty()
144      */

145     public boolean isEmpty() {
146         load();
147         return props.isEmpty();
148     }
149     
150     /* (non-Javadoc)
151      * @see java.util.Map#keySet()
152      */

153     public Set JavaDoc keySet() {
154         load();
155         return props.keySet();
156     }
157     
158     /* (non-Javadoc)
159      * @see java.util.Map#put(java.lang.Object, java.lang.Object)
160      */

161     public Object JavaDoc put(Object JavaDoc key, Object JavaDoc value) {
162         throw new UnsupportedOperationException JavaDoc("This map is read only!");
163     }
164     
165     /* (non-Javadoc)
166      * @see java.util.Map#putAll(java.util.Map)
167      */

168     public void putAll(Map JavaDoc t) {
169         throw new UnsupportedOperationException JavaDoc("This map is read only!");
170     }
171     
172     /* (non-Javadoc)
173      * @see java.util.Map#remove(java.lang.Object)
174      */

175     public Object JavaDoc remove(Object JavaDoc key) {
176         load();
177         return props.remove(key);
178     }
179     
180     /* (non-Javadoc)
181      * @see java.util.Map#size()
182      */

183     public int size() {
184         load();
185         return props.size();
186     }
187     
188     /* (non-Javadoc)
189      * @see java.util.Map#values()
190      */

191     public Collection JavaDoc values() {
192         load();
193         return props.values();
194     }
195     
196 }
197
Popular Tags