1 9 package org.infozone.tools; 10 11 import java.io.*; 12 import java.util.*; 13 14 15 29 public class EnhProperties extends Properties { 30 31 35 protected EnhObservable observable; 36 37 38 public EnhProperties() { 39 observable = new EnhObservable(); 40 } 41 42 43 public EnhProperties (Properties _defaults) { 44 super (_defaults); 45 observable = new EnhObservable(); 46 } 47 48 49 public void addObserver (Observer _observer) { 50 observable.addObserver (_observer); 51 } 52 53 54 public void removeObserver (Observer _observer) { 55 observable.deleteObserver (_observer); 56 } 57 58 59 public void notifyObservers() { 60 observable.notifyObservers (this); 61 } 62 63 64 public boolean hasChanged() { 65 return observable.hasChanged(); 66 } 67 68 69 73 public void addProperties (Properties properties, String keyPrefix) { 74 observable.setChanged(); 75 for (Enumeration e=properties.keys(); e.hasMoreElements();) { 76 String key = (String )e.nextElement(); 77 if (key.startsWith (keyPrefix)) { 78 String val = properties.getProperty (key, ""); 80 setStringProperty (key, val); 81 } 82 } 83 } 84 85 86 90 public synchronized void setStringProperty (String _key, String _val) { 91 observable.setChanged(); 92 super.put (_key, _val); 93 } 94 95 96 100 public String stringProperty (String _key, String _default) { 101 return super.getProperty (_key, _default); 102 } 103 104 105 109 public String [] stringsProperty (String _key, String _default) { 110 String propList = stringProperty( _key, _default ); 111 Vector v = new Vector(); 112 113 StringTokenizer st = new StringTokenizer( propList, " \t,", false ); 114 while (st.hasMoreTokens()) { 115 String token = st.nextToken(); 116 v.addElement( token ); 118 } 119 120 String [] result = new String [v.size()]; 121 v.copyInto( result ); 122 return result; 123 } 124 125 126 130 public void setProperty (String _key, Object _val) { 131 observable.setChanged(); 132 try { 133 ByteArrayOutputStream buf = new ByteArrayOutputStream (1024); 134 ObjectOutputStream out = new ObjectOutputStream (buf); 135 out.writeObject (_val); 136 out.close(); 137 138 MimeBase64Encoder encoder = new MimeBase64Encoder(); 139 encoder.translate (buf.toByteArray()); 140 141 setStringProperty (_key, new String (encoder.getCharArray())); 142 } 143 catch (Exception e) { 144 throw new RuntimeException (e.getMessage()); 145 } 146 } 147 148 149 153 public Object property (String _key, Object _default) { 154 try { 155 String result = stringProperty (_key, (String )_default); 156 if (result != null) { 157 MimeBase64Decoder decoder = new MimeBase64Decoder(); 158 decoder.translate (result.toCharArray()); 159 160 ObjectInputStream in = new ResolvingObjectInputStream (new ByteArrayInputStream (decoder.getByteArray())); 161 return in.readObject(); 162 } 163 else 164 return null; 165 } 166 catch (Exception e) { 167 throw new RuntimeException (e.getMessage()); 168 } 169 } 170 171 172 176 public void setIntProperty (String _key, int _val) { 177 setStringProperty (_key, String.valueOf (_val)); 178 } 179 180 181 185 public int intProperty (String _key, int _default) { 186 String result = stringProperty (_key, String.valueOf (_default)); 187 return Integer.parseInt (result); 188 } 189 190 191 195 public long longProperty (String _key, long _default) { 196 String result = stringProperty (_key, String.valueOf (_default)); 197 return Long.valueOf (result).longValue(); 198 } 199 200 201 205 public boolean booleanProperty (String _key, boolean _default) { 206 String result = stringProperty (_key, String.valueOf (_default)); 207 return Boolean.valueOf (result).booleanValue(); 208 } 209 210 211 215 public void setLongProperty (String _key, long _val) { 216 setStringProperty (_key, String.valueOf (_val)); 217 } 218 219 220 224 public void setBooleanProperty (String _key, boolean _val) { 225 setStringProperty (_key, String.valueOf (_val)); 226 } 227 228 229 234 249 } 250 251 252 256 class EnhObservable extends Observable { 257 258 public EnhObservable() { 259 super(); 260 } 261 262 263 public void setChanged() { 264 super.setChanged(); 265 } 266 267 } 268 269
| Popular Tags
|