KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > webman > stager > PropertySet


1 package webman.stager;
2
3 import java.util.*;
4
5 /**
6  * Hilfsklasse zur Zusammenfassung aller SiteTransmitter-Properties
7  * Primärer Unterschied zu Java-Properties ist die CaseInsensivität der Keys
8  * @author torsten
9  * @version $Revision: 1.6 $
10  */

11 public class PropertySet
12 {
13     private Hashtable hashtable;
14     
15     /**
16      * Konstruiert leeres PropertySet
17      */

18     public PropertySet()
19     {
20         hashtable = new Hashtable();
21     }
22     
23     /**
24      * wandelt Properties oder property-artige Hashtable in PropertySet um
25      * @param eine Hashtable mit Strings als Keys
26      */

27     public PropertySet(Hashtable h)
28     {
29         this();
30         Enumeration keys = h.keys();
31         String JavaDoc key;
32         while ( keys.hasMoreElements() )
33         {
34             key = (String JavaDoc)(keys.nextElement());
35             set(key.toLowerCase(), h.get(key));
36         }
37     }
38     
39     /**
40      * wandelt Properties aus einem com.teamkonzept.lib.PropertyManager in PropertySet um
41      * @param ein com.teamkonzept.lib.PropertyManager
42      */

43     public PropertySet(com.teamkonzept.lib.PropertyManager p)
44     {
45         this();
46         Enumeration keys = p.getKeys();
47         String JavaDoc key;
48         while ( keys.hasMoreElements() )
49         {
50             key = (String JavaDoc)(keys.nextElement());
51             set(key.toLowerCase(), p.getValue(key));
52         }
53     }
54     
55     
56     /**
57      * setzt eine Property des gegebenen Namens auf den gegebenen Wert.
58      * ist die Property schon vorhanden, so wird sie überschrieben
59      * Nullwerte werden nicht eingetragen
60      * @param key Name der Property
61      * @param value Wert der Property; null wird nicht weitergereicht
62      */

63     public void set(String JavaDoc key, Object JavaDoc value)
64     {
65         if ( value != null ) //man darf keine Nullwerte einfügen!
66
{
67             hashtable.put(key.toLowerCase().trim(),value);
68         }
69     }
70     
71     /**
72      * @param key Name der Property
73      * @return Property mit diesem Namen; wenn key nicht vorhanden, dann null
74      */

75     public String JavaDoc get(String JavaDoc key)
76     {
77         String JavaDoc result = (String JavaDoc)(hashtable.get(key.toLowerCase().trim()));
78         if (result != null)
79         {
80             return result.trim();
81         }
82         else
83         {
84             return null;
85         }
86     }
87     
88     /**
89      * alle vorhandenen Properties, deren Keys mit einem bestimmten Wort beginnen,
90      * werden aus den PropertySet gelesen und als Vector zurückgegeben
91      * dabei werden die Werte sortiert nach der lexikalischen Reihenfolge der Key-Suffixe
92      * @param Zeichenkette, mit der die entsprechenden Keys beginnen
93      * @return einen sortierter Vector mit allen zutreffenden Propertywerten
94      */

95     public Vector getPropertyGroup(String JavaDoc keyStub)
96     {
97         //Auslese der gesuchten Keys
98
Vector selectedKeys = new Vector();
99         Enumeration allKeys = hashtable.keys();
100         String JavaDoc key;
101         keyStub = keyStub.toLowerCase();
102         while ( allKeys.hasMoreElements() )
103         {
104             key = (String JavaDoc)(allKeys.nextElement());
105             if ( key.startsWith(keyStub) )
106             {
107                 selectedKeys.add(key);
108             }
109         }
110         //Keys lexikalisch aufsteigend sortieren
111
Object JavaDoc[] array = selectedKeys.toArray();
112         Arrays.sort(array);
113         //Values in dieser Reihenfolge rausholen
114
Vector result = new Vector();
115         for ( int i=0; i<array.length; i++ )
116         {
117             result.add(get((String JavaDoc)array[i]));
118         }
119         return result;
120     }
121     
122     /**
123      * alle vorhandenen ReceiverProperties (erkennbar am Präfix "Receiver" werden aus den PropertySet
124      * gelesen und als Hashtable zurückgegeben
125      * @return einen Hashtable mit allen vorhandenen ReceiverProperties
126      */

127     public Hashtable getReceiverProperties()
128     {
129         Hashtable result = new Hashtable();
130         Enumeration keys = hashtable.keys();
131         String JavaDoc key;
132         while ( keys.hasMoreElements() )
133         {
134             key = (String JavaDoc)(keys.nextElement());
135             if (key.toLowerCase().startsWith("receiver"))
136             {
137                 result.put(key,hashtable.get(key));
138             }
139         }
140         return result;
141     }
142     
143     //DEBUG:
144
String JavaDoc debugDump()
145     {
146         final String JavaDoc NEW_LINE = System.getProperty("line.separator");
147         Enumeration keys = hashtable.keys();
148         String JavaDoc key, result="";
149         while ( keys.hasMoreElements() )
150         {
151             key = (String JavaDoc)keys.nextElement();
152             result += "DEBUG: key=" + key + " value=" + get(key) + NEW_LINE;
153         }
154         return result;
155     }
156 }
157
Popular Tags