001: /***************************************************************
002: * This file is part of the [fleXive](R) project.
003: *
004: * Copyright (c) 1999-2008
005: * UCS - unique computing solutions gmbh (http://www.ucs.at)
006: * All rights reserved
007: *
008: * The [fleXive](R) project is free software; you can redistribute
009: * it and/or modify it under the terms of the GNU General Public
010: * License as published by the Free Software Foundation;
011: * either version 2 of the License, or (at your option) any
012: * later version.
013: *
014: * The GNU General Public License can be found at
015: * http://www.gnu.org/copyleft/gpl.html.
016: * A copy is found in the textfile GPL.txt and important notices to the
017: * license from the author are found in LICENSE.txt distributed with
018: * these libraries.
019: *
020: * This library is distributed in the hope that it will be useful,
021: * but WITHOUT ANY WARRANTY; without even the implied warranty of
022: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
023: * GNU General Public License for more details.
024: *
025: * For further information about UCS - unique computing solutions gmbh,
026: * please see the company website: http://www.ucs.at
027: *
028: * For further information about [fleXive](R), please see the
029: * project website: http://www.flexive.org
030: *
031: *
032: * This copyright notice MUST APPEAR in all copies of the file!
033: ***************************************************************/package com.flexive.shared.interfaces;
034:
035: import com.flexive.shared.configuration.Parameter;
036: import com.flexive.shared.exceptions.*;
037:
038: import java.io.Serializable;
039: import java.util.Collection;
040: import java.util.Map;
041:
042: /**
043: * Generic configuration interface. Provides a generic interface for
044: * configuration methods based on the <code>Parameter</code> interface.
045: *
046: * @author Daniel Lichtenberger (daniel.lichtenberger@flexive.com), UCS - unique computing solutions gmbh (http://www.ucs.at)
047: *
048: * @see com.flexive.core.configuration.GenericConfigurationImpl
049: * @see com.flexive.shared.configuration.Parameter
050: */
051:
052: public abstract interface GenericConfigurationEngine {
053: /**
054: * Set a parameter containing a value of type <code>T</code>.
055: *
056: * @param <T> value type to be set (e.g. String, Integer, ...)
057: * @param parameter parameter data containing path and key
058: * @param value value to be set
059: * @throws FxApplicationException TODO
060: * @throws FxUpdateException if the value could not be set or updated
061: * @throws FxNoAccessException if the caller is not allowed to update/set this parameter
062: */
063: <T extends Serializable> void put(Parameter<T> parameter, T value)
064: throws FxApplicationException;
065:
066: /**
067: * Set a parameter containing a value of type <code>T</code> using
068: * the given key. This method is useful for setting aggregate parameters with
069: * varying keys.
070: * Use <code>getParameters(Parameter<T&g;t parameter)</code> to retrieve a
071: * map with all keys stored under the path of the given parameter.
072: *
073: * @param <T> value type to be set
074: * @param parameter parameter data containing the path
075: * @param key key to be used for this value
076: * @param value value to be set
077: * @throws FxApplicationException TODO
078: * @throws FxUpdateException if the value could not be updated
079: * @throws FxNoAccessException if the caller is not allowed to update/set this parameter
080: */
081: <T extends Serializable> void put(Parameter<T> parameter,
082: String key, T value) throws FxApplicationException;
083:
084: /**
085: * Retrieves the value of the given parameter.
086: *
087: * @param <T> value type of the parameter
088: * @param parameter parameter data containing the path and key
089: * @return the value stored under the given path and key
090: * @throws FxApplicationException TODO
091: * @throws FxLoadException if the value could not be loaded
092: * @throws FxNotFoundException if the parameter is not set
093: */
094: <T extends Serializable> T get(Parameter<T> parameter)
095: throws FxApplicationException;
096:
097: /**
098: * Retrieves the value for the given parameter using the given key. This method is
099: * useful for getting a single value of aggregate parameters. When all values
100: * for an aggregate parameter should be retrieved, use <code>getParameters</code> instead.
101: *
102: * @param <T> value type of the parameter
103: * @param parameter parameter data containing the path
104: * @param key key to be used
105: * @return the value stored under the given path and key
106: * @throws FxApplicationException TODO
107: * @throws FxLoadException if the value could not be loaded
108: * @throws FxNotFoundException if the parameter is not set
109: */
110: <T extends Serializable> T get(Parameter<T> parameter, String key)
111: throws FxApplicationException;
112:
113: /**
114: * Retrieves the value for the given parameter using the given key. This method is
115: * useful for getting a single value of aggregate parameters. When all values
116: * for an aggregate parameter should be retrieved, use <code>getParameters</code> instead.
117: * The default value may be disabled through the <code>ignoreDefault</code> parameter,
118: * making this method more useful for checking if a parameter exists.
119: *
120: * @param <T> value type of the parameter
121: * @param parameter parameter data containing the path
122: * @param key key to be used
123: * @param ignoreDefault if the parameter's default value should be used default
124: * @return the value stored under the given path and key
125: * @throws FxApplicationException TODO
126: * @throws FxLoadException if the value could not be loaded
127: * @throws FxNotFoundException if the parameter is not set
128: */
129: <T extends Serializable> T get(Parameter<T> parameter, String key,
130: boolean ignoreDefault) throws FxApplicationException;
131:
132: /**
133: * Retrieves all key/value pairs stored under the path of the given parameter.
134: *
135: * @param <T> value type of the parameter
136: * @param parameter parameter data containing the path
137: * @return all key/value-pairs under the given path
138: * @throws FxApplicationException TODO
139: * @throws FxLoadException when an error occured reading the keys
140: */
141: <T extends Serializable> Map<String, T> getAll(
142: Parameter<T> parameter) throws FxApplicationException;
143:
144: /**
145: * Retrieves all keys stored under the path of the given parameter.
146: *
147: * @param <T> value type of the parameter
148: * @param parameter parameter containing the path
149: * @return all keys stored under the path of the given parameter.
150: * @throws FxApplicationException TODO
151: */
152: <T extends Serializable> Collection<String> getKeys(
153: Parameter<T> parameter) throws FxApplicationException;
154:
155: /**
156: * Removes a parameter from the database.
157: * @param <T> value type of the parameter
158: * @param parameter parameter to be removed
159: * @throws FxApplicationException TODO
160: * @throws com.flexive.shared.exceptions.FxRemoveException if the parameter could not be removed
161: * @throws FxNoAccessException if the caller is not allowed to remove this parameter
162: */
163: <T extends Serializable> void remove(Parameter<T> parameter)
164: throws FxApplicationException;
165:
166: /**
167: * Removes a parameter from the database using the given key.
168: * @param <T> value type of the parameter
169: * @param parameter parameter containing the path to be removed
170: * @param key the key to be removed
171: * @throws FxApplicationException TODO
172: * @throws com.flexive.shared.exceptions.FxRemoveException if the parameter could not be removed
173: * @throws FxNoAccessException if the caller is not allowed to remove this parameter
174: */
175: <T extends Serializable> void remove(Parameter<T> parameter,
176: String key) throws FxApplicationException;
177:
178: /**
179: * Remove all parameters stored under this parameter's path.
180: * @param <T> value type of the parameter
181: * @param parameter the parameter to be removed
182: * @throws FxApplicationException TODO
183: * @throws com.flexive.shared.exceptions.FxRemoveException if the parameters could not be removed
184: * @throws FxNoAccessException if the caller is not allowed to remove this parameter
185: */
186: <T extends Serializable> void removeAll(Parameter<T> parameter)
187: throws FxApplicationException;
188:
189: }
|