001: /*
002: * Enhydra Java Application Server Project
003: *
004: * The contents of this file are subject to the Enhydra Public License
005: * Version 1.1 (the "License"); you may not use this file except in
006: * compliance with the License. You may obtain a copy of the License on
007: * the Enhydra web site ( http://www.enhydra.org/ ).
008: *
009: * Software distributed under the License is distributed on an "AS IS"
010: * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
011: * the License for the specific terms governing rights and limitations
012: * under the License.
013: *
014: * The Initial Developer of the Enhydra Application Server is Lutris
015: * Technologies, Inc. The Enhydra Application Server and portions created
016: * by Lutris Technologies, Inc. are Copyright Lutris Technologies, Inc.
017: * All Rights Reserved.
018: *
019: * Contributor(s):
020: *
021: * $Id: ConfigFileInterface.java,v 1.2 2006-06-15 13:40:47 sinisa Exp $
022: */
023:
024: package org.enhydra.util;
025:
026: import java.io.File;
027: import java.io.FileNotFoundException;
028: import java.io.IOException;
029: import java.io.OutputStream;
030:
031: import com.lutris.util.Config;
032: import com.lutris.util.KeywordValueException;
033:
034: /**
035: * ConfigFileInterface is used to manipulate application's configuration files.
036: *
037: * @see Config
038: * @version $Revision: 1.2 $
039: */
040: public interface ConfigFileInterface {
041:
042: /**
043: * The key under which the trailing comment is stored.
044: */
045: public static final String TRAILING_COMMENT = "ConfigFileTrailingComment";
046:
047: /**
048: * Returns the Config object representing the config data in the file.
049: * @return The Config object for this ConfigFile.
050: */
051: public Config getConfig();
052:
053: /**
054: * Returns the comment associated with a given key, or <code>null</code> if
055: * there is no comment. Pass in* <code>ConfigFileInterface.TRAILING_COMMENT</code> to get
056: * the trailing comment.
057: * @param key the key to look up.
058: * @return the associated comment or <code>null</code>
059: */
060: public String getComment(String key);
061:
062: /**
063: * Add an entry to the config file.
064: * @param key The config element name.
065: * @param values A string array of values.
066: * @param comment A string containing a properly commented config file comment.
067: * @exception KeywordValueException
068: */
069: public void addEntry(String key, String[] values, String comment)
070: throws KeywordValueException;
071:
072: /**
073: * Add an entry to the config file.
074: * @param key The config element name.
075: * @param value A String value.
076: * @param comment A string containing a properly commented config file comment.
077: * @exception KeywordValueException
078: */
079: public void addEntry(String key, String value, String comment)
080: throws KeywordValueException;
081:
082: /**
083: * Remove an entry from the config file.
084: * @param key The config element name.
085: * @exception KeywordValueException
086: */
087: public void removeEntry(String key) throws KeywordValueException;
088:
089: /**
090: * Gets the associated file. If no file is associated with this config, <code>null</code>
091: * is returned.
092: * @return associated file
093: */
094: public File getFile();
095:
096: /**
097: * Sets the configuration file. This method can be useful in case when in
098: * construction of ConfigFileInterface implementation object is not defined
099: * associated file.
100: * @param file given reference to configuration file represented as File object.
101: */
102: public void setFile(File file);
103:
104: /**
105: * Writes this config to the associated file. If no file is associated with this
106: * config, throws a <code>FileNotFoundException</code>
107: * @exception IOException
108: * @exception FileNotFoundException
109: */
110: public void write() throws IOException, FileNotFoundException;
111:
112: /**
113: * Writes out a config file to the OutputStream specified. Note that Objects
114: * other than String or String[] will be converted into a String.
115: * @param outputStream The output stream on which to write the config file.
116: */
117: public void write(OutputStream outputStream);
118:
119: }
|