Source for org.jfree.util.DefaultConfiguration

   1: /* ========================================================================
   2:  * JCommon : a free general purpose class library for the Java(tm) platform
   3:  * ========================================================================
   4:  *
   5:  * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors.
   6:  *
   7:  * Project Info:  http://www.jfree.org/jcommon/index.html
   8:  *
   9:  * This library is free software; you can redistribute it and/or modify it
  10:  * under the terms of the GNU Lesser General Public License as published by
  11:  * the Free Software Foundation; either version 2.1 of the License, or
  12:  * (at your option) any later version.
  13:  *
  14:  * This library is distributed in the hope that it will be useful, but
  15:  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  16:  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
  17:  * License for more details.
  18:  *
  19:  * You should have received a copy of the GNU Lesser General Public
  20:  * License along with this library; if not, write to the Free Software
  21:  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
  22:  * USA.
  23:  *
  24:  * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
  25:  * in the United States and other countries.]
  26:  *
  27:  * -------------------------
  28:  * DefaultConfiguration.java
  29:  * -------------------------
  30:  * (C)opyright 2003, 2004, by Thomas Morgner and Contributors.
  31:  *
  32:  * Original Author:  Thomas Morgner;
  33:  * Contributor(s):   David Gilbert (for Object Refinery Limited);
  34:  *
  35:  * $Id: DefaultConfiguration.java,v 1.6 2008/09/10 09:21:30 mungady Exp $
  36:  *
  37:  * Changes
  38:  * -------
  39:  * 04.06.2003 : Initial version (TM);
  40:  *
  41:  */
  42: 
  43: package org.jfree.util;
  44: 
  45: import java.util.Collections;
  46: import java.util.Enumeration;
  47: import java.util.Iterator;
  48: import java.util.Properties;
  49: import java.util.TreeSet;
  50: 
  51: import org.jfree.base.config.ModifiableConfiguration;
  52: 
  53: /**
  54:  * Default configuration.
  55:  *
  56:  * @author Thomas Morgner.
  57:  */
  58: public class DefaultConfiguration extends Properties
  59:     implements ModifiableConfiguration
  60: {
  61: 
  62:   /**
  63:    * Creates an empty property list with no default values.
  64:    */
  65:   public DefaultConfiguration()
  66:   {
  67:     super();
  68:   }
  69: 
  70:   /**
  71:    * Returns the configuration property with the specified key.
  72:    *
  73:    * @param key the property key.
  74:    * @return the property value.
  75:    */
  76:   public String getConfigProperty(final String key)
  77:   {
  78:     return getProperty(key);
  79:   }
  80: 
  81:   /**
  82:    * Returns the configuration property with the specified key (or the
  83:    * specified default value if there is no such property).
  84:    * <p/>
  85:    * If the property is not defined in this configuration, the code will
  86:    * lookup the property in the parent configuration.
  87:    *
  88:    * @param key          the property key.
  89:    * @param defaultValue the default value.
  90:    * @return the property value.
  91:    */
  92:   public String getConfigProperty(final String key, final String defaultValue)
  93:   {
  94:     return getProperty(key, defaultValue);
  95:   }
  96: 
  97:   /**
  98:    * Searches all property keys that start with a given prefix.
  99:    *
 100:    * @param prefix the prefix that all selected property keys should share
 101:    * @return the properties as iterator.
 102:    */
 103:   public Iterator findPropertyKeys(final String prefix)
 104:   {
 105:     final TreeSet collector = new TreeSet();
 106:     final Enumeration enum1 = keys();
 107:     while (enum1.hasMoreElements())
 108:     {
 109:       final String key = (String) enum1.nextElement();
 110:       if (key.startsWith(prefix))
 111:       {
 112:         if (collector.contains(key) == false)
 113:         {
 114:           collector.add(key);
 115:         }
 116:       }
 117:     }
 118:     return Collections.unmodifiableSet(collector).iterator();
 119:   }
 120: 
 121:   /**
 122:    * Returns an enumeration of the property keys.
 123:    *
 124:    * @return An enumeration of the property keys.
 125:    */
 126:   public Enumeration getConfigProperties()
 127:   {
 128:     return keys();
 129:   }
 130: 
 131:   /**
 132:    * Sets the value of a configuration property.
 133:    *
 134:    * @param key   the property key.
 135:    * @param value the property value.
 136:    */
 137:   public void setConfigProperty(final String key, final String value)
 138:   {
 139:     if (value == null)
 140:     {
 141:       remove(key);
 142:     }
 143:     else
 144:     {
 145:       setProperty(key, value);
 146:     }
 147:   }
 148: }