/*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
* or from the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* Copyright 2005 - 2008 Pentaho Corporation. All rights reserved.
*
* @created Jul 19, 2005
* @author James Dixon
*
*/
package org.pentaho.platform.api.engine;
import java.util.List;
import java.util.Properties;
import org.dom4j.Document;
/**
* The SystemSettings manages the platform's overall configuration settings.
* These settings by default can be found in the system tree in an xml file
* named "pentaho.xml."
*/
public interface ISystemSettings {
/**
* Gets the name of the source of the system configurations. For system configurations
* that are stored in a file, it should return the filename. Other implementations
* should return a name that is relevant to the implementation
* (possibly a URL, or a database sql query, etc.)
* Often this will be pentaho.xml
*
* @return String containing a name that identifies the source
* of the system configuration
*/
public String getSystemCfgSourceName();
/**
* Gets a system setting from the system path
*
* @param path
* relative to the "system" directory, go to this document
* @param settingName
* the setting name to get
* @param defaultValue
* the value to use if the setting isn't specified in the setting
* document
* @return the setting requested, or the default value if not found
*/
public String getSystemSetting(String path, String settingName, String defaultValue);
/**
* Gets a system setting from the system configuration file
*
* @param settingName
* the setting name to get
* @param defaultValue
* the value to use if the setting isn't specified in the setting
* document
* @return the setting requested, or the default value if not found
*/
public String getSystemSetting(String settingName, String defaultValue);
/**
* Gets a section from the specified settings document
*
* @param path
* relative to the system directory, go to this document
* @param settingSection
* the section is the document to retrieve
* @return the list of settings in the specified section of the document
*/
@SuppressWarnings("unchecked")
public List getSystemSettings(String path, String settingSection);
/**
* Gets a section from the system system configuration file
*
* @param settingSection
* the section to retrieve
* @return the list of elements in the section of the document.
*/
@SuppressWarnings("unchecked")
public List getSystemSettings(String settingSection);
/**
* The SystemSettings object caches each settings document once it's read
* in. If the system gets a refresh event, this should be called to make
* sure that the system settings get refreshed.
*/
public void resetSettingsCache();
/**
* Returns a Document object containing the settings document within the
* path specified by actionPath.
*
* @param actionPath
* The XML document relative to the solution that contains the
* settings desired
* @return Document Parsed XML document.
*/
public Document getSystemSettingsDocument(String actionPath);
/**
* Gets a properties file from the solution.
* @param path Relative path to the properties file within the solution
* @return <tt>Properties</tt> object containing the properties.
*/
public Properties getSystemSettingsProperties(String path);
}