1 /***
2 * The contents of this file are subject to the Mozilla Public
3 * License Version 1.1 (the "License"); you may not use this file
4 * except in compliance with the License. You may obtain a copy of
5 * the License at http://www.mozilla.org/MPL/
6 *
7 * Software distributed under the License is distributed on an "AS
8 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
9 * implied. See the License for the specific language governing
10 * rights and limitations under the License.
11 *
12 * The Original Code is pow2toolkit library.
13 *
14 * The Initial Owner of the Original Code is
15 * Paul Monday
16 *
17 * Portions created by Power Of Two S.R.L. are
18 * Copyright (C) Power Of Two S.R.L.
19 * All Rights Reserved.
20 *
21 * Contributor(s):
22 */
23
24 package com.pow2.resources;
25
26 import java.io.Serializable;
27 import java.util.Properties;
28 import java.util.Enumeration;
29
30 import org.apache.log4j.Category;
31
32
33 /***
34 * Property container class.
35 *
36 * @author Paul Monday
37 * @created 23 aprile 2002
38 */
39 public abstract class PropertyContainerImpl
40 implements PropertyContainer, Serializable
41 {
42 /*** Log4J category. */
43 protected Category cat = Category.getInstance(this.getClass());
44
45 /*** properties table */
46 protected Properties properties = new Properties();
47
48
49 /*** Constructor for the PropertyContainerImpl object */
50 public PropertyContainerImpl()
51 {
52 }
53
54
55 /***
56 * Add a property associated with a token name.
57 * <br>
58 * If the token already exists, the value will be replaced.
59 * If the token does not exist, it will be added with the value.
60 *
61 * @param value is an object that cannot be null
62 * @param token is a key that can be used to retrieve the value
63 */
64 public void addProperty(Object value, String token)
65 {
66 if (value == null || token == null)
67 return;
68
69 if (properties.containsKey(token))
70 properties.remove(token);
71
72 properties.put(token, value);
73 }
74
75
76 /***
77 * Retrieve a value by a particular token.
78 *
79 * @param token is a key that can be used to retrieve the value
80 * @return String is the value associated with the token. It
81 * will not be null
82 */
83 public String getProperty(String token)
84 {
85 return (token != null) ? properties.getProperty(token) : null;
86 }
87
88
89 /***
90 * Retrieve a value by a particular token.
91 *
92 * @param token is a key that can be used to retrieve the value
93 * @return Object is the value associated with the token. It
94 * will not be null
95 */
96 public Object getObject(String token)
97 {
98 return (token != null) ? properties.get(token) : null;
99 }
100
101
102 /***
103 * Retrieve all property keys currently in use.
104 *
105 * @return String[] is an array of all valid token names
106 */
107 public String[] getPropertyKeys()
108 {
109 String keys[] = null;
110
111 synchronized (properties)
112 {
113 int s = properties.size();
114 keys = new String[s];
115 Enumeration e = properties.keys();
116 int i = 0;
117
118 while (e.hasMoreElements())
119 {
120 keys[i] = (String) e.nextElement();
121 i++;
122 }
123 }
124
125 return keys;
126 }
127
128
129 /***
130 * Remove a value associated with a particular token.
131 *
132 * @param token is a key associated with a value that was added
133 */
134 public void removeProperty(String token)
135 {
136 if (token == null)
137 return;
138
139 properties.remove(token);
140 }
141 }