Source for org.jfree.report.modules.preferences.base.ConfigStorage

   1: /**
   2:  * ========================================
   3:  * JFreeReport : a free Java report library
   4:  * ========================================
   5:  *
   6:  * Project Info:  http://reporting.pentaho.org/
   7:  *
   8:  * (C) Copyright 2000-2007, by Object Refinery Limited, Pentaho Corporation and Contributors.
   9:  *
  10:  * This library is free software; you can redistribute it and/or modify it under the terms
  11:  * of the GNU Lesser General Public License as published by the Free Software Foundation;
  12:  * either version 2.1 of the License, or (at your option) any later version.
  13:  *
  14:  * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
  15:  * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  16:  * See the GNU Lesser General Public License for more details.
  17:  *
  18:  * You should have received a copy of the GNU Lesser General Public License along with this
  19:  * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
  20:  * Boston, MA 02111-1307, USA.
  21:  *
  22:  * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
  23:  * in the United States and other countries.]
  24:  *
  25:  * ------------
  26:  * $Id: ConfigStorage.java 2725 2007-04-01 18:49:29Z taqua $
  27:  * ------------
  28:  * (C) Copyright 2000-2005, by Object Refinery Limited.
  29:  * (C) Copyright 2005-2007, by Pentaho Corporation.
  30:  */
  31: 
  32: package org.jfree.report.modules.preferences.base;
  33: 
  34: import org.jfree.util.Configuration;
  35: 
  36: /**
  37:  * Config storage implementations are used to store a set of properties to a certain key.
  38:  * <p/>
  39:  * A valid configuration path does not contain dots, semicolons or colons.
  40:  * <p/>
  41:  * A valid path obeys to the same rules as java identifiers ..
  42:  *
  43:  * @author Thomas Morgner
  44:  */
  45: public interface ConfigStorage
  46: {
  47:   /**
  48:    * Stores the given properties on the defined path.
  49:    *
  50:    * @param configPath the path on where to store the properties.
  51:    * @param properties the properties which should be stored.
  52:    * @throws ConfigStoreException if an error occured.
  53:    */
  54:   public void store (String configPath, Configuration properties)
  55:           throws ConfigStoreException;
  56: 
  57:   /**
  58:    * Loads the properties from the given path, specifying the given properties as
  59:    * default.
  60:    *
  61:    * @param configPath the configuration path from where to read the properties.
  62:    * @param defaults   the property set that acts as fallback to provide default values.
  63:    * @return the loaded properties
  64:    *
  65:    * @throws ConfigStoreException if an error occured.
  66:    */
  67:   public Configuration load (String configPath, Configuration defaults)
  68:           throws ConfigStoreException;
  69: 
  70:   /**
  71:    * Tests, whether some configuration data exists for the given configuration.
  72:    *
  73:    * @param configPath the configuration path to the property storage.
  74:    * @return true, if there are properties under this path, false otherwise.
  75:    */
  76:   public boolean isAvailable (String configPath);
  77: }