📄 enhproperties.java
字号:
// You can redistribute this software and/or modify it under the terms of// the Ozone Library License version 1 published by ozone-db.org.//// The original code and portions created by SMB are// Copyright (C) 1997-2000 by SMB GmbH. All rights reserved.//// $Id: EnhProperties.java,v 1.4 2000/10/28 16:55:21 daniela Exp $package org.ozoneDB.util;import java.io.*;import java.util.*;import org.ozoneDB.DxLib.*;import org.ozoneDB.core.Env;/** * EnhProperties has methods to store/update the value of a property to handle * such dynamic properties. * <p> * In addition the Properties EnhProperties can hold not only String properties * but most of other primitive types and raw objects. Non-string properties are * internaly stored as Strings. * <p> * Setup extends java.util.Properties. So the system properties can be used as * defaults. * * * @author <a href="http://www.softwarebuero.de/">SMB</a> * @version $Revision: 1.4 $Date: 2000/10/28 16:55:21 $ */public class EnhProperties extends Properties { /** * An Observable object that is responsible for this properties. Directly * extending the class is not possible because it already extends Properties. */ protected EnhObservable observable; public EnhProperties() { observable = new EnhObservable(); } public EnhProperties( Properties _defaults ) { super( _defaults ); observable = new EnhObservable(); } public void addObserver( Observer _observer ) { observable.addObserver( _observer ); } public void removeObserver( Observer _observer ) { observable.deleteObserver( _observer ); } public void notifyObservers() { observable.notifyObservers( this ); } public boolean hasChanged() { return observable.hasChanged(); } /** * @param properties * @param keyPrefix */ public void addProperties( Properties properties, String keyPrefix ) { observable.setChanged(); for (Enumeration e = properties.keys(); e.hasMoreElements();) { String key = (String)e.nextElement(); if (key.startsWith( keyPrefix )) { // System.out.println (key); String val = properties.getProperty( key, "" ); setStringProperty( key, val ); } } } /** * @param _val * @param _key */ public synchronized void setStringProperty( String _key, String _val ) { observable.setChanged(); super.put( _key, _val ); } /** * @param _key * @param _default The default value to use if no property is found. */ public String stringProperty( String _key, String _default ) { return super.getProperty( _key, _default ); } /** * @param _key * @param _default The default value to use if no property is found. */ public DxCollection stringsProperty( String _key, String _default ) { String propList = stringProperty( _key, _default ); DxArrayBag result = new DxArrayBag(); StringTokenizer st = new StringTokenizer( propList, " \t,", false ); while (st.hasMoreTokens()) { String token = st.nextToken(); // System.out.println ("'" + token + "'"); result.add( token ); } return result; } /** * @param _val * @param _key */ public void setProperty( String _key, Object _val ) { observable.setChanged(); try { ByteArrayOutputStream buf = new ByteArrayOutputStream( 1024 ); ObjectOutputStream out = new ObjectOutputStream( buf ); out.writeObject( _val ); out.close(); MimeBase64Encoder encoder = new MimeBase64Encoder(); encoder.translate( buf.toByteArray() ); setStringProperty( _key, new String( encoder.getCharArray() ) ); } catch (Exception e) { throw new RuntimeException( e.getMessage() ); } } /** * @param _key * @param _default The default value to use if no property is found. */ public Object property( String _key, Object _default ) { try { String result = stringProperty( _key, (String)_default ); if (result != null) { MimeBase64Decoder decoder = new MimeBase64Decoder(); decoder.translate( result.toCharArray() ); ObjectInputStream in = new ObjectInputStream( new ByteArrayInputStream( decoder.getByteArray() ) ); return in.readObject(); } else { return null; } } catch (Exception e) { throw new RuntimeException( e.getMessage() ); } } /** * @param _val * @param _key */ public void setIntProperty( String _key, int _val ) { setStringProperty( _key, String.valueOf( _val ) ); } /** * @param _key * @param _default The default value to use if no property is found. */ public int intProperty( String _key, int _default ) { String result = stringProperty( _key, String.valueOf( _default ) ); return Integer.parseInt( result ); } /** * @param _key * @param _default The default value to use if no property is found. */ public long longProperty( String _key, long _default ) { String result = stringProperty( _key, String.valueOf( _default ) ); return Long.valueOf( result ).longValue(); } /** * @param _key * @param _default The default value to use if no property is found. */ public boolean booleanProperty( String _key, boolean _default ) { String result = stringProperty( _key, String.valueOf( _default ) ); return Boolean.valueOf( result ).booleanValue(); } /** * @param _val * @param _key */ public void setLongProperty( String _key, long _val ) { setStringProperty( _key, String.valueOf( _val ) ); } /** * @param _val * @param _key */ public void setBooleanProperty( String _key, boolean _val ) { setStringProperty( _key, String.valueOf( _val ) ); } /** * @param * @param keyPrefix * @param printPrefix */ public void print( PrintStream out, String keyPrefix, String printPrefix ) { DxTreeSet sortedProps = new DxTreeSet( new DxStringComparator() ); for (Enumeration e = propertyNames(); e.hasMoreElements();) { String key = (String)e.nextElement(); String val = stringProperty( key, "(not set)" ); //avoid printing "object" properties //currently not supported!!! if (key.startsWith( keyPrefix ) && !val.startsWith( "[object]" )) { sortedProps.add( printPrefix + key + " = " + val ); } } for (DxIterator it = sortedProps.iterator(); it.next() != null;) { out.println( it.object().toString() ); } } }/** * @author <a href="http://www.softwarebuero.de/">SMB</a> * @version $Revision: 1.4 $Date: 2000/10/28 16:55:21 $ */class EnhObservable extends Observable { public EnhObservable() { super(); } public void setChanged() { super.setChanged(); } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -