/* * 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 Jun 21, 2005 * @author James Dixon * */ package org.pentaho.platform.api.engine; import java.io.File; import java.io.IOException; /** * Defines a set of methods to retrieve information about the application * environment. * <p> * There is one context per server application (web application), so the class * can be used as a place to share global application data. * * @version 1.0 */ public interface IApplicationContext { /** * Retrieves the fully qualified path to the location of the Pentaho * solution, appending the path given in the parameter. The path is * formatted appropriately for the platform that the application is running * on. * * @param path * a path to a location that exists relative to the solution tree * @return fully qualified path to the requested location in the solution * tree */ public String getSolutionPath(String path); public String getSolutionRootPath(); /** * Used for content output (temporary and otherwise), returns a fully qualified * path suitable for creating a <tt>File</tt> object from. * @param path Relative path within the solution to the file location. Solution path * will be pre-pended * @return Fully qualified path */ public String getFileOutputPath(String path); /** * Retrieves the descriptive name of the platform application. * <p> * The Pentaho server name should specified in the system settings * configuration file, using the <code>name</code> element * * @return the descriptive server name as specified in the system settings, * or "Pentaho Business Intelligence Platform" by default. */ public String getPentahoServerName(); /** * Returns a URL to the server application, up to and including the context. * <p> * The URL that is returned is derived from the server context, and thus * will include the protocol, host name, port, and application context root. * * @return the URL to the server application context root. */ public String getBaseUrl(); /** * Returns the path to the web application or standalone application. This * is only used in a few places, like loading the portlet localization * messages. * * @param path * a path to a location that exists relative to the application * root directory * @return the path to the server application root */ public String getApplicationPath(String path); /** * If there were any other properties set (for example, initParams in the * servlet context), this will let you have access to all of those * properties that are set. * * @param key * property Name * @return string property value */ public String getProperty(String key); /** * If there were any other properties set (for example, initParams in the * servlet context), this will let you have access to all of those * properties that are set. * * @param key * property Name * @param defaultValue * default value if the property is not specified. * @return string property value */ public String getProperty(String key, String defaultValue); /** * Adds an entry point handler. The entry point handler is called when * actions start on a particular thread. * @param entryPoint */ public void addEntryPointHandler(IPentahoSystemEntryPoint entryPoint); /** * Removes an entry point handler. * @param entryPoint */ public void removeEntryPointHandler(IPentahoSystemEntryPoint entryPoint); /** * Adds an exit point handler. The exit point handler is called when actions * stop on a particular thread * @param entryPoint */ public void addExitPointHandler(IPentahoSystemExitPoint exitPoint); /** * Removes an exit point handler. * @param exitPoint */ public void removeExitPointHandler(IPentahoSystemExitPoint exitPoint); /** * Invokes all entry point handlers. */ public void invokeEntryPoints(); /** * Invokes all exit point handlers. */ public void invokeExitPoints(); public void setBaseUrl(String url); public void setSolutionRootPath(String path); public Object getContext(); public void setContext(Object context); /** * Creates a temporary file in the specified parent folder and optionally tracks it for deletion on session termination * @param session - IPentahoSession * @param prefix - file prefix * @param extension - file extension * @param parentDir - parent folder to create the temp file in * @param trackFile - true = add it to the session deleter * @return * @throws IOException */ public File createTempFile(final IPentahoSession session, final String prefix, final String extension, final File parentDir, boolean trackFile) throws IOException; /** * Creates a temporary file in the system/tmp solutions folder * @param session - IPentahoSession * @param prefix - file prefix * @param extension - file extension * @param trackFile - true = add it to the session deleter * @return * @throws IOException */ public File createTempFile(final IPentahoSession session, final String prefix, final String extension, boolean trackFile) throws IOException; }