All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opencms.setup.CmsAutoSetupProperties Maven / Gradle / Ivy

Go to download

OpenCms is an enterprise-ready, easy to use website content management system based on Java and XML technology. Offering a complete set of features, OpenCms helps content managers worldwide to create and maintain beautiful websites fast and efficiently.

There is a newer version: 18.0
Show newest version
/*
 * This library is part of OpenCms -
 * the Open Source Content Management System
 *
 * Copyright (c) Alkacon Software GmbH & Co. KG (http://www.alkacon.com)
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library 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.
 *
 * For further information about Alkacon Software GmbH & Co. KG, please see the
 * company website: http://www.alkacon.com
 *
 * For further information about OpenCms, please see the
 * project website: http://www.opencms.org
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

package org.opencms.setup;

import org.opencms.configuration.CmsParameterConfiguration;
import org.opencms.main.CmsLog;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.logging.Log;

/**
 * Reads and manages the configuration file for the OpenCms auto-setup.

* Note that each property set in the file is overwritten if the identical property is set as Java system property (what is used, e.g., by the setup wizard). * Moreover, the property setup.install.components can be set via an accordingly named environment variable. * * @since 6.0.0 */ public final class CmsAutoSetupProperties { /** The log object for this class. */ public static final Log LOG = CmsLog.getLog(CmsAutoSetupProperties.class); /** The property key db.connection.url for providing the JDBC connection string, * e.g., jdbc:mysql://localhost:3306/ for the default MySQL installation. */ public static final String PROP_DB_CONNECTION_URL = "db.connection.url"; /** The property key db.create.db for specifying if the database should be created during the setup.

* Set to true to create the database automatically, or false if it should not.

* NOTE: Automatic database creation is not supported for all DBMSs. */ public static final String PROP_DB_CREATE_DB = "db.create.db"; /** The property key db.create.pwd for specifying the password for the database user that is used during the setup connection. */ public static final String PROP_DB_CREATE_PWD = "db.create.pwd"; /** The property key db.create.tables for specifying if the database tables in the OpenCms database should be created.

* Set to true to create the database automatically, or false if it should not.

*/ public static final String PROP_DB_CREATE_TABLES = "db.create.tables"; /** The property key db.create.user for specifying the name of the database user that is used during the setup connection. * NOTE: The user must have administration permissions. The user data is deleted, when the setup is finished. * */ public static final String PROP_DB_CREATE_USER = "db.create.user"; /** The property key db.default.tablespace necessary dependent on the chosen DBMS. */ public static final String PROP_DB_DEFAULT_TABLESPACE = "db.default.tablespace"; /** The property key db.dropDb for specifying if an existing database should be dropped when the setup is configured to create a database with the same name. * Set to true if existing databases should be dropped when necessary, or to false if not. */ public static final String PROP_DB_DROP_DB = "db.dropDb"; /** The property key db.index.tablespace necessary dependent on the chosen DBMS. */ public static final String PROP_DB_INDEX_TABLESPACE = "db.index.tablespace"; /** The property key db.jdbc.driver for specifying the fully qualified name of the Java class implementing the JDBC driver to use for the connection.

* Hint: The names can be found in the database.properties file in the webapp' folders setup/database//. * */ public static final String PROP_DB_JDBC_DRIVER = "db.jdbc.driver"; /** The property key db.name for specifying the name of the database used by OpenCms, e.g. choose "opencms". */ public static final String PROP_DB_NAME = "db.name"; /** The property key db.product for specifying the used DBMS. Values should match the folders under the OpenCms webapp's folder setup/database/. */ public static final String PROP_DB_PRODUCT = "db.product"; /** The property key db.provider for specifying the database provider. This either jpa or the DBMS' product name.

* Hint: The available providers are defined as constants in {@link org.opencms.setup.CmsSetupBean}. */ public static final String PROP_DB_PROVIDER = "db.provider"; /** The property key db.template.db necessary dependent of the chosen DBMS. */ public static final String PROP_DB_TEMPLATE_DB = "db.template.db"; /** The property key db.temporary.tablespace necessary dependent of the chosen DBMS.. */ public static final String PROP_DB_TEMPORARY_TABLESPACE = "db.temporary.tablespace"; /** The property key db.worker.pwd for providing the password of the database user that is used when running OpenCms after the setup. * CAUTION: For security reasons, the user should not have administration permissions. * The user data is stored in the opencms.properties file after the setup. */ public static final String PROP_DB_WORKER_PWD = "db.worker.pwd"; /** The property key db.worker.user for providing the name of the database user that is used for the connection when running OpenCms after the setup. * CAUTION: For security reasons, the user should not have administration permissions. * The user data is stored in the opencms.properties file after the setup. . */ public static final String PROP_DB_WORKER_USER = "db.worker.user"; /** The property key server.ethernet.address. Specify a valid MAC-Address. It is used internally by OpenCms. (If not given, the address is generated automatically.) */ public static final String PROP_SERVER_ETHERNET_ADDRESS = "server.ethernet.address"; /** The property key server.name for specifying the server's name. Special server names are of particular interest in a cluster installation.*/ public static final String PROP_SERVER_NAME = "server.name"; /** The property key server.servlet.mapping for specifying the name of the OpenCms servlet (by default opencms). */ public static final String PROP_SERVER_SERVLET_MAPPING = "server.servlet.mapping"; /** The property key server.url for specifying the server's URL. It is used, e.g., for the site configuration. */ public static final String PROP_SERVER_URL = "server.url"; /** The property key setup.default.webapp. Provide the default webapp in your servlet container (Default: ROOT). */ public static final String PROP_SETUP_DEFAULT_WEBAPP = "setup.default.webapp"; /** The property key setup.install.components to choose the components that should be installed during the setup.

* The available components are configured in setup/components.properties in the webapp's folder.

* NOTE: You can specify the components to install also as Java system property (highest priority) or via an environment variable (second choice). * The value specified in the configuration file is only the third choice. */ public static final String PROP_SETUP_INSTALL_COMPONENTS = "setup.install.components"; /** The property key setup.show.progress to specify if dots '.' should be printed to the real STDOUT while a setup is in progress. */ public static final String PROP_SETUP_SHOW_PROGRESS = "setup.show.progress"; /** The property key setup.webapp.path to specify the path of the OpenCms webapp to install, e.g., /var/lib/tomcat7/webapps/opencms. */ public static final String PROP_SETUP_WEBAPP_PATH = "setup.webapp.path"; /** The configuration from opencms.properties. */ private CmsParameterConfiguration m_configuration; /** The connection String/URL. */ private String m_connectionUrl; /** The create db flag. */ private boolean m_createDb; /** The db user pwd for the setup. */ private String m_createPwd; /** The create table flag. */ private boolean m_createTables; /** The db user name for the setup. */ private String m_createUser; /** The database name for OpenCms. */ private String m_dbName; /** The database to use. */ private String m_dbProduct; /** The db provider (sql or jpa). */ private String m_dbProvider; /** The default table space for oracle DBs. */ private String m_defaultTablespace; /** The drop db flag. */ private boolean m_dropDb; /** The ethernet address. */ private String m_ethernetAddress; /** The index table space for oracle DBs. */ private String m_indexTablespace; /** The list of component IDs to install. */ private List m_installComponents = new ArrayList(); /** The name of the jdbc driver to use. */ private String m_jdbcDriver; /** The servlet mapping. */ private String m_servletMapping; /** The server name. */ private String m_serverName; /** The server URL. */ private String m_serverUrl; /** The name of the OpenCms webapp. */ private String m_setupDefaultWebappName; /** The path to the webapp setup folder. */ private String m_setupWebappPath; /** The template DB for PostgreSQL. */ private String m_templateDb; /** The temporary table space for oracle DBs. */ private String m_temporaryTablespace; /** The servlet containers webapps folder. */ private String m_webappPath; /** The db user name for production. */ private String m_workerPwd; /** The db user pwd for production. */ private String m_workerUser; /** Indicates if dots '.' should be printed to the real STDOUT while a setup is in progress. */ private boolean m_showProgress; /** * Public constructor.

* * @param propertiesFile the path to the setup properties file * * @throws IOException if the property file could not be read * @throws SecurityException if the environment variables could not be read */ public CmsAutoSetupProperties(String propertiesFile) throws IOException, SecurityException { m_configuration = new CmsParameterConfiguration(propertiesFile); m_setupWebappPath = addProperty(PROP_SETUP_WEBAPP_PATH); m_setupDefaultWebappName = addProperty(PROP_SETUP_DEFAULT_WEBAPP); m_dbProduct = addProperty(PROP_DB_PRODUCT); m_dbName = addProperty(PROP_DB_NAME); m_dbProvider = addProperty(PROP_DB_PROVIDER); m_createUser = addProperty(PROP_DB_CREATE_USER); m_createPwd = addProperty(PROP_DB_CREATE_PWD); m_workerUser = addProperty(PROP_DB_WORKER_USER); m_workerPwd = addProperty(PROP_DB_WORKER_PWD); m_connectionUrl = addProperty(PROP_DB_CONNECTION_URL); m_createDb = Boolean.valueOf(addProperty(PROP_DB_CREATE_DB)).booleanValue(); m_createTables = Boolean.valueOf(addProperty(PROP_DB_CREATE_TABLES)).booleanValue(); m_dropDb = Boolean.valueOf(addProperty(PROP_DB_DROP_DB)).booleanValue(); m_defaultTablespace = addProperty(PROP_DB_DEFAULT_TABLESPACE); m_indexTablespace = addProperty(PROP_DB_INDEX_TABLESPACE); m_jdbcDriver = addProperty(PROP_DB_JDBC_DRIVER); m_templateDb = addProperty(PROP_DB_TEMPLATE_DB); m_temporaryTablespace = addProperty(PROP_DB_TEMPORARY_TABLESPACE); m_serverUrl = addProperty(PROP_SERVER_URL); m_serverName = addProperty(PROP_SERVER_NAME); m_ethernetAddress = addProperty(PROP_SERVER_ETHERNET_ADDRESS); m_servletMapping = addProperty(PROP_SERVER_SERVLET_MAPPING); m_showProgress = Boolean.valueOf(addProperty(PROP_SETUP_SHOW_PROGRESS)).booleanValue(); if (System.getProperty(PROP_SETUP_INSTALL_COMPONENTS) != null) { m_configuration.put(PROP_SETUP_INSTALL_COMPONENTS, System.getProperty(PROP_SETUP_INSTALL_COMPONENTS)); } else if (System.getenv(PROP_SETUP_INSTALL_COMPONENTS) != null) { m_configuration.put(PROP_SETUP_INSTALL_COMPONENTS, System.getenv(PROP_SETUP_INSTALL_COMPONENTS)); } m_installComponents = m_configuration.getList(PROP_SETUP_INSTALL_COMPONENTS); } /** * Returns the connectionUrl.

* * @return the connectionUrl */ public String getConnectionUrl() { return m_connectionUrl; } /** * Returns the createPwd.

* * @return the createPwd */ public String getCreatePwd() { return m_createPwd; } /** * Returns the createUser.

* * @return the createUser */ public String getCreateUser() { return m_createUser; } /** * @return the name of the db name used */ public String getDbName() { return m_dbName; } /** * @return the name of the db product used */ public String getDbProduct() { return m_dbProduct; } /** * Returns the dbProvider.

* * @return the dbProvider */ public String getDbProvider() { return m_dbProvider; } /** * Returns the defaultTablespace.

* * @return the defaultTablespace */ public String getDefaultTablespace() { return m_defaultTablespace; } /** * Returns the ethernetAddress.

* * @return the ethernetAddress */ public String getEthernetAddress() { return m_ethernetAddress; } /** * Returns the indexTablespace.

* * @return the indexTablespace */ public String getIndexTablespace() { return m_indexTablespace; } /** * Returns the installComponents.

* * @return the installComponents */ public List getInstallComponents() { return m_installComponents; } /** * Returns the jdbcDriver.

* * @return the jdbcDriver */ public String getJdbcDriver() { return m_jdbcDriver; } /** * Returns the serveltMapping.

* * @return the serveltMapping */ public String getServeltMapping() { return m_servletMapping; } /** * Returns the serverName.

* * @return the serverName */ public String getServerName() { return m_serverName; } /** * Returns the serverUrl.

* * @return the serverUrl */ public String getServerUrl() { return m_serverUrl; } /** * Returns the setup configuration object.

* * @return the setup configuration object */ public CmsParameterConfiguration getSetupConfiguration() { return m_configuration; } /** * Returns the setupWebappName.

* * @return the setupWebappName */ public String getSetupDefaultWebappName() { return m_setupDefaultWebappName; } /** * Returns the setupWebappPath.

* * @return the setupWebappPath */ public String getSetupWebappPath() { return m_setupWebappPath; } /** * Returns the templateDb.

* * @return the templateDb */ public String getTemplateDb() { return m_templateDb; } /** * Returns the temporaryTablespace.

* * @return the temporaryTablespace */ public String getTemporaryTablespace() { return m_temporaryTablespace; } /** * Returns the webappPath.

* * @return the webappPath */ public String getWebappPath() { return m_webappPath; } /** * Returns the workerPwd.

* * @return the workerPwd */ public String getWorkerPwd() { return m_workerPwd; } /** * Returns the workerUser.

* * @return the workerUser */ public String getWorkerUser() { return m_workerUser; } /** * Returns the createDb.

* * @return the createDb */ public boolean isCreateDb() { return m_createDb; } /** * Returns the createTables.

* * @return the createTables */ public boolean isCreateTables() { return m_createTables; } /** * Returns the dropDb.

* * @return the dropDb */ public boolean isDropDb() { return m_dropDb; } /** * Indicates if dots '.' should be printed to the real STDOUT while a setup is in progress.

* * @return true if dots '.' should be printed to the real STDOUT while a setup is in progress */ public boolean isShowProgress() { return m_showProgress; } /** * Converts and returns this object as map.

* * @return this object as map */ public Map toParameterMap() { Map result = new HashMap(); result.put("dbCreateConStr", new String[] {getConnectionUrl()}); result.put("dbName", new String[] {getDbName()}); result.put("dbProduct", new String[] {getDbProduct()}); result.put("dbProvider", new String[] {getDbProvider()}); result.put("dbName", new String[] {getDbName()}); result.put("db", new String[] {getDbName()}); result.put("createDb", new String[] {Boolean.toString(isCreateDb())}); result.put("createTables", new String[] {Boolean.toString(isCreateTables())}); result.put("jdbcDriver", new String[] {getJdbcDriver()}); result.put("templateDb", new String[] {getTemplateDb()}); result.put("dbCreateUser", new String[] {getCreateUser()}); result.put("dbCreatePwd", new String[] {getCreatePwd() == null ? "" : getCreatePwd()}); result.put("dbWorkUser", new String[] {getWorkerUser()}); result.put("dbWorkPwd", new String[] {getWorkerPwd() == null ? "" : getWorkerPwd()}); result.put("dbDefaultTablespace", new String[] {getDefaultTablespace()}); result.put("dbTemporaryTablespace", new String[] {getTemporaryTablespace()}); result.put("dbIndexTablespace", new String[] {getIndexTablespace()}); result.put("dropDb", new String[] {Boolean.toString(isDropDb())}); result.put("servletMapping", new String[] {getServeltMapping()}); result.put("submit", new String[] {Boolean.TRUE.toString()}); return result; } /** * Adds and returns the property for the given key.

* * @param key the key to add the property * * @return the value of that property */ private String addProperty(String key) { if (System.getProperty(key) != null) { m_configuration.put(key, System.getProperty(key)); } return m_configuration.get(key); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy