/* // This software is subject to the terms of the Eclipse Public License v1.0 // Agreement, available at the following URL: // http://www.eclipse.org/legal/epl-v10.html. // You must accept the terms of that agreement to use this software. // // Copyright (C) 2003-2005 Julian Hyde // Copyright (C) 2005-2012 Pentaho // All Rights Reserved. */ package mondrian.rolap; import java.lang.ref.SoftReference; /** * <code>RolapConnectionProperties</code> enumerates the allowable values of * keywords in a Mondrian connect string. * * <p><b>Note to developers</b>: If you add or modify a connection-string * property, you must also modify the * <a target="_top" * href="{@docRoot}/../configuration.html#Connect_string_properties"> * Configuration Specification</a>. * * @author jhyde, Mar 18, 2003 */ public enum RolapConnectionProperties { /** * The "Provider" property must have the value <code>"Mondrian"</code>. */ Provider, /** * The "Jdbc" property is the URL of the JDBC database where the data is * stored. You must specify either {@link #DataSource} or {@code #Jdbc}. */ Jdbc, /** * The "JdbcDrivers" property is a comma-separated list of JDBC driver * classes, for example, * <code>"sun.jdbc.odbc.JdbcOdbcDriver,oracle.jdbc.OracleDriver"</code>. */ JdbcDrivers, /** * The "JdbcUser" property is the name of the user to log on to the JDBC * database. (You don't need to specify this parameter if it is already * specified in the JDBC URL.) */ JdbcUser, /** * The "JdbcPassword" property is the password to log on to the JDBC * database. (You don't need to specify this parameter if it is already * specified in the JDBC URL.) */ JdbcPassword, /** * The "Catalog" property is the URL of the catalog, an XML file which * describes the schema: cubes, hierarchies, and so forth. * Catalogs are described in <a target="_top" * href="{@docRoot}/../schema.html">the Schema Guide</a>. * See also {@link #CatalogContent}. */ Catalog, /** * The "CatalogContent" property is an XML string representing the schema: * cubes, hierarchies, and so forth. * Catalogs are described in <a target="_top" * href="{@docRoot}/../schema.html">the Schema Guide</a>. * * <p>When using this property, quote its value with either single or * double quotes, then escape all occurrences of that character within the * catalog content by using double single/double quotes. ie: * * <p>  CatalogContent="<Schema name=""My Schema""/>" * * <p>See also {@link #Catalog}. */ CatalogContent, /** * The "CatalogName" property is not used. If, in future, we support * multiple catalogs, this property will specify which catalog to use. * See also {@link #Catalog}. */ CatalogName, /** * The "DataSource" property is the name of a data source class. It must * implement the {@link javax.sql.DataSource} interface. * You must specify either {@code DataSource} or {@link #Jdbc}. */ DataSource, /** * The "PoolNeeded" property tells Mondrian whether to add a layer of * connection pooling. * * <p>If no value is specified, we assume that:<ul> * <li>connections created via the {@link #Jdbc} property are not pooled, * and therefore need to be pooled, * <li>connections created via the {@link #DataSource} are already pooled. * </ul> */ PoolNeeded, /** * The "Role" property is the name of the {@link mondrian.olap.Role role} * to adopt. If not specified, the connection uses a role which has access * to every object in the schema. */ Role, /** * Allows to work with dynamically changing schema. If this property is set * to <code>true</code> and schema content has changed (previous checksum * doesn't equal with current), schema would be reloaded. Could be used in * combination with <code>DynamicSchemaProcessor</code> property */ UseContentChecksum, /** * The "UseSchemaPool" property disables the schema cache. If false, the * schema is not shared with connections which have a textually identical * schema. Default is "true". */ UseSchemaPool, /** * The name of a class implementing the * {@link mondrian.spi.DynamicSchemaProcessor} interface. * A dynamic schema processor is called at runtime in order to modify the * schema content. */ DynamicSchemaProcessor, /** * The "Locale" property is the requested Locale for the * LocalizingDynamicSchemaProcessor. Example values are "en", * "en_US", "hu". If Locale is not specified, then the name of system's * default will be used, as per {@link java.util.Locale#getDefault()}. */ Locale, /** * The name of a class implementing the * {@link mondrian.spi.DataSourceChangeListener} interface. * A data source change listener is used to flush the cache of * mondrian every time the datasource is changed. */ DataSourceChangeListener, /** * The "Ignore" property is a boolean value. If true, mondrian ignores * warnings and non-fatal errors while loading the schema. The resulting * errors can be obtained by calling * {@link mondrian.olap.Schema#getWarnings}. */ Ignore, /** * The "Instance" property is the unique identifier of a mondrian server * running in the current JVM. If there are multiple mondrian servers, it * ensures that the connection belongs to the correct one. */ Instance, /** * The "JdbcConnectionUuid" property is the unique identifier for the * underlying JDBC connection. If defined, Mondrian will assume that two * connections bearing the same JdbcConnectionUuid point to identical * databases without looking at any other properties. */ JdbcConnectionUuid, /** * The "PinSchemaTimeout" defines how much time must Mondrian * keep a hard reference to schema objects within the pool of schemas. * * <p>After the timeout is reached, the hard reference will be cleared * and the schema will be made a candidate for garbage collection. If the * timeout wasn't reached yet and a second query requires the same schema, * the timeout will be re-computed from the time of the second access and * a new hard reference is established until the new timer reaches its end. * * <p>If the timeout is equal to zero, the schema will get * pinned permanently. It is inadvisable to use this mode when using * a DynamicSchemaProcessor at the risk of filling up the memory. * * <p>If the timeout is a negative value, the reference will behave * the same as a {@link SoftReference}. This is the default behavior. * * <p>The timeout value must be provided as a String representing * both the time value and the time unit. For example, 1 second is * represented as "1s". Valid time units are [d, h, m, s, ms], * representing respectively days, hours, minutes, seconds and * milliseconds. * * <p>Defaults to "-1s". */ PinSchemaTimeout; /** * Any property beginning with this value will be added to the * JDBC connection properties, after removing this prefix. This * allows you to specify connection properties without a URL. */ public static final String JdbcPropertyPrefix = "jdbc."; } // End RolapConnectionProperties.java