package org.agnitas.emm.extension.impl; import java.io.File; import org.apache.log4j.Logger; /** * Configuration of the extension system. * * Utility class to hold configuration values and derived values. * * @author md * */ public class ExtensionSystemConfiguration { private static final transient Logger logger = Logger.getLogger( ExtensionSystemConfiguration.class); private final String systemPluginBaseDirectory; private final String pluginBaseDirectory; private final String jspBaseDirectory; private final String databaseName; public ExtensionSystemConfiguration( String systemPluginBaseDirectory, String pluginBaseDirectory, String jspBaseDirectory, String databaseName) { this.systemPluginBaseDirectory = systemPluginBaseDirectory; this.pluginBaseDirectory = pluginBaseDirectory; this.jspBaseDirectory = jspBaseDirectory; this.databaseName = databaseName; if( logger.isDebugEnabled()) { logger.debug( "base directory for system plugins: " + this.systemPluginBaseDirectory); logger.debug( "base directory for additional plugins: " + this.pluginBaseDirectory); logger.debug( "base directory for JSPs (working copy): " + this.jspBaseDirectory); logger.debug( "Name of database: " + this.databaseName); } } public String getSystemPluginsBaseDirectory() { return this.systemPluginBaseDirectory; } public String getPluginsBaseDirectory() { return this.pluginBaseDirectory; } public String getSystemPluginDirectory( String pluginId) { return getPluginDirectory( this.systemPluginBaseDirectory, pluginId); } public String getPluginDirectory( String pluginId) { return getPluginDirectory( this.pluginBaseDirectory, pluginId); } public String getJspWorkingDirectory( String pluginId) { return this.jspBaseDirectory + File.separator + pluginId; } public String getJspBackupDirectory( String pluginId) { return getPluginDirectory( pluginId) + File.separator + "_jsp"; } public String getDatabaseScriptsDirectory( String pluginId) { return getPluginDirectory( pluginId) + File.separator + "_db"; } private String getPluginDirectory( String baseDirectory, String pluginId) { return baseDirectory + File.separator + pluginId; } public String getDatabaseInstallScript( String pluginId) { return getDatabaseScript( pluginId, "install"); } public String getDatabaseDeinstallScript( String pluginId) { return getDatabaseScript( pluginId, "remove"); } private String getDatabaseScript( String pluginId, String prefix) { String fileName = prefix + "-" + this.databaseName + ".sql"; return getDatabaseScriptsDirectory( pluginId) + File.separator + fileName; } }