/*! * 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 (c) 2002-2013 Pentaho Corporation.. All rights reserved. */ package org.pentaho.platform.config; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.pentaho.platform.util.xml.dom4j.XmlDom4JHelper; import java.io.File; import java.io.IOException; public class ConsoleConfigXml implements IConsoleConfig { protected static final String ROOT_ELEMENT = "console"; protected static final String CHECK_PERIOD_XPATH = ROOT_ELEMENT + "/biserver-status-check-period-millis"; protected static final String PLATFORM_USERNAME_XPATH = ROOT_ELEMENT + "/platform-username"; protected static final String SOLUTION_PATH_XPATH = ROOT_ELEMENT + "/solution-path"; protected static final String WAR_PATH_XPATH = ROOT_ELEMENT + "/war-path"; protected static final String TEMP_DIR_PATH_XPATH = ROOT_ELEMENT + "/temp-directory"; protected static final String BACKUP_DIR_PATH_XPATH = ROOT_ELEMENT + "/backup-directory"; protected static final String HELP_URL_XPATH = ROOT_ELEMENT + "/help_url"; protected static final String JDBC_DRIVERS_XPATH = ROOT_ELEMENT + "/jdbc-drivers-path"; protected static final String DEFAULT_ROLES_XPATH = ROOT_ELEMENT + "/default-roles"; protected static final String HOME_PAGE_TIMEOUT_XPATH = ROOT_ELEMENT + "/homepage-timeout-millis"; protected static final String HOME_PAGE_URL_XPATH = ROOT_ELEMENT + "/homepage-url"; protected static final String XML_ENCODING_XPATH = ROOT_ELEMENT + "/xml-encoding"; protected static final String BASE_URL_XPATH = ROOT_ELEMENT + "/base-url"; protected static final String DEFAULT_SERVER_DIR_XPATH = ROOT_ELEMENT + "/default-server-dir"; Document document; public String getBaseUrl() { return getValue( BASE_URL_XPATH ); } public void setBaseUrl( String url ) { setValue( BASE_URL_XPATH, url ); } public ConsoleConfigXml( File consoleConfigXmlFile ) throws IOException, DocumentException { this( XmlDom4JHelper.getDocFromFile( consoleConfigXmlFile, null ) ); } public ConsoleConfigXml( String xml ) throws DocumentException { this( DocumentHelper.parseText( xml ) ); } public ConsoleConfigXml( Document doc ) throws DocumentException { Element rootElement = doc.getRootElement(); if ( ( rootElement != null ) && !doc.getRootElement().getName().equals( ROOT_ELEMENT ) ) { throw new DocumentException( "Invalid root element." ); } document = doc; } public ConsoleConfigXml() { document = DocumentHelper.createDocument(); document.addElement( ROOT_ELEMENT ); } public Long getServerStatusCheckPeriod() { Long period = null; try { period = Long.parseLong( getValue( CHECK_PERIOD_XPATH ) ); } catch ( Exception ex ) { //ignore } return period; } public void setServerStatusCheckPeriod( Long biServerStatusCheckPeriod ) { String period = biServerStatusCheckPeriod != null ? Long.toString( biServerStatusCheckPeriod ) : ""; setValue( CHECK_PERIOD_XPATH, period ); } public Integer getHomePageTimeout() { Integer timeout = null; try { timeout = Integer.parseInt( getValue( HOME_PAGE_TIMEOUT_XPATH ) ); } catch ( Exception ex ) { //ignore } return timeout; } public void setHomePageTimeout( Integer timeout ) { setValue( HOME_PAGE_TIMEOUT_XPATH, timeout != null ? Integer.toString( timeout ) : "" ); } public String getHomePageUrl() { return getValue( HOME_PAGE_URL_XPATH ); } public void setHomePageUrl( String url ) { setValue( HOME_PAGE_URL_XPATH, url ); } public String getHelpUrl() { return getValue( HELP_URL_XPATH ); } public void setHelpUrl( String url ) { setValue( HELP_URL_XPATH, url ); } public String getJdbcDriversClassPath() { return getValue( JDBC_DRIVERS_XPATH ); } public void setJdbcDriversClassPath( String classpath ) { setValue( JDBC_DRIVERS_XPATH, classpath ); } public String getDefaultRoles() { return getValue( DEFAULT_ROLES_XPATH ); } public void setDefaultRoles( String defaultRoles ) { setValue( DEFAULT_ROLES_XPATH, defaultRoles ); } public String getPlatformUserName() { return getValue( PLATFORM_USERNAME_XPATH ); } public void setPlatformUserName( String platformUserName ) { setValue( PLATFORM_USERNAME_XPATH, platformUserName ); } public String getSolutionPath() { return getValue( SOLUTION_PATH_XPATH ); } public void setSolutionPath( String solutionPath ) { setValue( SOLUTION_PATH_XPATH, solutionPath ); } public String getWebAppPath() { return getValue( WAR_PATH_XPATH ); } public void setWebAppPath( String warPath ) { setValue( WAR_PATH_XPATH, warPath ); } public String getTempDirectory() { return getValue( TEMP_DIR_PATH_XPATH ); } public void setTempDirectory( String path ) { setValue( TEMP_DIR_PATH_XPATH, path ); } public String getBackupDirectory() { return getValue( BACKUP_DIR_PATH_XPATH ); } public void setBackupDirectory( String path ) { setValue( BACKUP_DIR_PATH_XPATH, path ); } public void setValue( String xPath, String value ) { Element element = (Element) document.selectSingleNode( xPath ); if ( element == null ) { element = DocumentHelper.makeElement( document, xPath ); } element.setText( value ); } public String getDefaultBiServerDir() { return getValue( DEFAULT_SERVER_DIR_XPATH ); } public void setDefaultBiServerDir( String defaultBiServerDir ) { setValue( DEFAULT_SERVER_DIR_XPATH, defaultBiServerDir ); } public String getValue( String xpath ) { Element element = (Element) document.selectSingleNode( xpath ); return element != null ? element.getText() : null; } public String getXmlEncoding() { return getValue( XML_ENCODING_XPATH ); } public void setXmlEncoding( String encoding ) { setValue( XML_ENCODING_XPATH, encoding ); } public Document getDocument() { return document; } }