Package mondrian.olap

Class MondrianProperties

java.lang.Object
java.util.Dictionary<K,V>
java.util.Hashtable<Object,Object>
java.util.Properties
org.eigenbase.util.property.TriggerableProperties
mondrian.olap.MondrianPropertiesBase
mondrian.olap.MondrianProperties
All Implemented Interfaces:
Serializable, Cloneable, Map<Object,Object>

public class MondrianProperties extends MondrianPropertiesBase
Configuration properties that determine the behavior of a mondrian instance.

There is a method for property valid in a mondrian.properties file. Although it is possible to retrieve properties using the inherited Properties.getProperty(String) method, we recommend that you use methods in this class.

See Also:
  • Nested Class Summary

    Nested classes/interfaces inherited from class mondrian.olap.MondrianPropertiesBase

    MondrianPropertiesBase.PropertySource
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    final org.eigenbase.util.property.StringProperty
    String property containing the name of the file which defines the rules for recognizing an aggregate table.
    final org.eigenbase.util.property.StringProperty
    String property that is the AggRule element's tag value.
    final org.eigenbase.util.property.StringProperty
    Alerting action to take in case native evaluation of a function is enabled but not supported for that function's usage in a particular query.
    final org.eigenbase.util.property.BooleanProperty
    Boolean property that controls whether the MDX parser resolves uses case-sensitive matching when looking up identifiers.
    final org.eigenbase.util.property.StringProperty
    Property that contains the URL of the catalog to be used by CmdRunner and XML/A Test.
    final org.eigenbase.util.property.IntegerProperty
    Integer property that, if set to a value greater than zero, sets a hard limit on the number of cells that are batched together when building segments.
    final org.eigenbase.util.property.IntegerProperty
    Positive integer property that determines loop iterations number between checks for whether the current mdx query has been cancelled or timeout was exceeded.

    Setting the interval too small may result in a performance degradation when reading large result sets; setting it too high can cause a big delay between the query being marked as cancelled or timeout was exceeded and system resources associated to it being released.
    final org.eigenbase.util.property.BooleanProperty
    Boolean property that controls whether aggregate tables are ordered by their volume or row count.
    final org.eigenbase.util.property.BooleanProperty
    Boolean property that controls whether sibling members are compared according to order key value fetched from their ordinal expression.
    final org.eigenbase.util.property.IntegerProperty
    Property that sets the compound slicer member solve order.
    final org.eigenbase.util.property.IntegerProperty
    Property that defines when to apply the crossjoin optimization algorithm.
    final org.eigenbase.util.property.StringProperty
    Alerting action to take when a CurrentMember function is applied to a dimension that is also a compound slicer
    final org.eigenbase.util.property.StringProperty
    Property that defines the name of the plugin class that resolves data source names to DataSource objects.
    final org.eigenbase.util.property.BooleanProperty
    Boolean property that controls whether a RolapStar's aggregate data cache is cleared after each query.
    final org.eigenbase.util.property.BooleanProperty
    Boolean property that controls whether the data from segments is cached locally.
    final org.eigenbase.util.property.BooleanProperty
    Deprecated.
    This property is no longer used, and will be removed in mondrian-4.0.
    final org.eigenbase.util.property.BooleanProperty
    If disabled, Mondrian will throw an exception if someone attempts to perform a drillthrough of any kind.
    final org.eigenbase.util.property.BooleanProperty
    Boolean property that controls whether to use a cache for frequently evaluated expressions.
    final org.eigenbase.util.property.BooleanProperty
    Property that defines whether to generate SQL queries using the GROUPING SETS construct for rollup.
    final org.eigenbase.util.property.BooleanProperty
    Property which turns on or off the in-memory rollup of segment data.
    final org.eigenbase.util.property.BooleanProperty
    If enabled some NON EMPTY CrossJoin will be computed in SQL.
    final org.eigenbase.util.property.BooleanProperty
    If enabled some Filter() will be computed in SQL.
    final org.eigenbase.util.property.BooleanProperty
    If enabled some NON EMPTY set operations like member.children, level.members and member descendants will be computed in SQL.
    final org.eigenbase.util.property.BooleanProperty
    If enabled some TopCount will be computed in SQL.
    final org.eigenbase.util.property.BooleanProperty
    Boolean property that controls whether each query axis implicit has the NON EMPTY option set.
    final org.eigenbase.util.property.BooleanProperty
    Property that determines whether to cache RolapCubeMember objects, each of which associates a member of a shared hierarchy with a particular cube in which it is being used.
    final org.eigenbase.util.property.BooleanProperty
    If enabled, first row in the result of an XML/A drill-through request will be filled with the total count of rows in underlying database.
    final org.eigenbase.util.property.BooleanProperty
    Boolean property that controls whether to notify the Mondrian system when a property value changes.
    final org.eigenbase.util.property.IntegerProperty
    Property that defines how many previous execution instances the Monitor keeps in its history so that it can send the events which happen after the fact.
    final org.eigenbase.util.property.BooleanProperty
    If this property is true, when looking for native evaluation of an expression, Mondrian will expand non-native sub-expressions into lists of members.
    final org.eigenbase.util.property.StringProperty
    Property that defines the name of the class used to compile scalar expressions.
    final org.eigenbase.util.property.BooleanProperty
    Property that defines whether to generate joins to filter out members in a snowflake dimension that do not have any children.
    final org.eigenbase.util.property.StringProperty
    Property containing the JDBC URL of the FoodMart database.
    final org.eigenbase.util.property.BooleanProperty
    Boolean property that controls whether to print the SQL code generated for aggregate tables.
    final org.eigenbase.util.property.BooleanProperty
    Boolean property that controls pretty-print mode.
    final org.eigenbase.util.property.IntegerProperty
    Property that establishes the amount of chunks for querying cells involving high-cardinality dimensions.
    final org.eigenbase.util.property.IntegerProperty
    Integer property that defines how long, in seconds, orphaned sessions will be retained in server memory.
    final org.eigenbase.util.property.BooleanProperty
    Property that defines whether non-existent member errors should be ignored during schema load.
    final org.eigenbase.util.property.BooleanProperty
    Property that defines whether non-existent member errors should be ignored during query validation.
    final org.eigenbase.util.property.BooleanProperty
    Property that defines whether to ignore measure when non joining dimension is in the tuple during aggregation.
    final org.eigenbase.util.property.IntegerProperty
    Integer property indicating the maximum number of iterations allowed when iterating over members to compute aggregates.
    final org.eigenbase.util.property.IntegerProperty
    Not documented.
    final org.eigenbase.util.property.StringProperty
    Property containing a list of JDBC drivers to load automatically.
    final org.eigenbase.util.property.StringProperty
    Property that defines the JdbcSchema factory class which determines the list of tables and columns of a specific datasource.
    final org.eigenbase.util.property.IntegerProperty
    Property which governs whether child members or members of a level are precached when child or level members are requested within a query expression.
    final org.eigenbase.util.property.StringProperty
    String property that holds the name of the class whose resource bundle is to be used to for this schema.
    final org.eigenbase.util.property.IntegerProperty
    Max number of constraints in a single 'IN' SQL clause.
    final org.eigenbase.util.property.IntegerProperty
    Boolean property that defines the maximum number of passes allowable while evaluating an MDX expression.
    final org.eigenbase.util.property.IntegerProperty
    Property that defines limit on the number of rows returned by XML/A drill through request.
    final org.eigenbase.util.property.BooleanProperty
    Property that defines whether the MemoryMonitor should be enabled.
    final org.eigenbase.util.property.StringProperty
    Property that defines the name of the class used as a memory monitor.
    final org.eigenbase.util.property.IntegerProperty
    Property that defines the default MemoryMonitor percentage threshold.
    final org.eigenbase.util.property.IntegerProperty
    Property that controls the maximum number of results contained in a NativizeSet result set.
    final org.eigenbase.util.property.IntegerProperty
    Property that controls minimum expected cardinality required in order for NativizeSet to natively evaluate a query.
    final org.eigenbase.util.property.BooleanProperty
    Property determines if elements of dimension (levels, hierarchies, members) need to be prefixed with dimension name in MDX query.
    final org.eigenbase.util.property.BooleanProperty
    Property that defines the behavior of division if the denominator evaluates to zero.
    final org.eigenbase.util.property.StringProperty
    Property that determines how a null member value is represented in the result output.
    final org.eigenbase.util.property.BooleanProperty
    Boolean property that determines whether Mondrian optimizes predicates.
    final org.eigenbase.util.property.StringProperty
    Property that defines the name of the factory class used to create maps of member properties to their respective values.
    final org.eigenbase.util.property.StringProperty
    Property defining where the test XML files are.
    final org.eigenbase.util.property.StringProperty
    Property that defines a pattern for which test XML files to run.
    final org.eigenbase.util.property.IntegerProperty
    Maximum number of simultaneous queries the system will allow.
    final org.eigenbase.util.property.IntegerProperty
    Property that defines the timeout value (in seconds) for queries.
    final org.eigenbase.util.property.BooleanProperty
    Boolean property that determines whether Mondrian should read aggregate tables.
    final org.eigenbase.util.property.IntegerProperty
    Integer property that, if set to a value greater than zero, limits the maximum size of a result set.
    final org.eigenbase.util.property.IntegerProperty
    Maximum number of MDX query threads per Mondrian server instance.
    final org.eigenbase.util.property.StringProperty
    Property that defines the interval value between polling operations performed by the RolapConnection shepherd thread.
    final org.eigenbase.util.property.StringProperty
    Property which defines which SegmentCache implementation to use.
    final org.eigenbase.util.property.IntegerProperty
    Maximum number of threads per Mondrian server instance that are used to run perform operations on the external caches.
    final org.eigenbase.util.property.IntegerProperty
    Maximum number of threads per Mondrian server instance that are used to run SQL queries when populating segments.
    final org.eigenbase.util.property.StringProperty
    Property that controls the behavior of solve order of calculated members and sets.
    final org.eigenbase.util.property.IntegerProperty
    Property that, with SparseSegmentDensityThreshold, determines whether to choose a sparse or dense representation when storing collections of cell values in memory.
    final org.eigenbase.util.property.DoubleProperty
    Property that, with SparseSegmentCountThreshold, determines whether to choose a sparse or dense representation when storing collections of cell values in memory.
    final org.eigenbase.util.property.StringProperty
    Property that defines the name of the class used in SqlMemberSource to pool common values.
    final org.eigenbase.util.property.BooleanProperty
    Property that defines whether to enable new naming behavior.
    final org.eigenbase.util.property.StringProperty
    Comma-separated list of classes to be used to get statistics about the number of rows in a table, or the number of distinct values in a column.
    final org.eigenbase.util.property.StringProperty
    String property that determines which test class to run.
    final org.eigenbase.util.property.StringProperty
    Property containing the connect string which regression tests should use to connect to the database.
    final org.eigenbase.util.property.IntegerProperty
    Integer property that controls whether to test operators' dependencies, and how much time to spend doing it.
    final org.eigenbase.util.property.StringProperty
    Property containing a list of dimensions in the Sales cube that should be treated as high-cardinality dimensions by the testing infrastructure.
    final org.eigenbase.util.property.StringProperty
    Property containing the JDBC password of a test database.
    final org.eigenbase.util.property.StringProperty
    Property containing the JDBC user of a test database.
    final org.eigenbase.util.property.StringProperty
    String property that determines which tests are run.
    final org.eigenbase.util.property.IntegerProperty
    Seed for random number generator used by some of the tests.
    final org.eigenbase.util.property.IntegerProperty
    Property that returns the time limit for the test run in seconds.
    final org.eigenbase.util.property.BooleanProperty
    Boolean property that controls whether Mondrian uses aggregate tables.
    final org.eigenbase.util.property.IntegerProperty
    Not documented.
    final org.eigenbase.util.property.BooleanProperty
    Property that indicates whether this is a "warmup test".
    final org.eigenbase.util.property.StringProperty
    Property that controls whether warning messages should be printed if a SQL comparison test does not contain expected SQL statements for the specified dialect.
    final org.eigenbase.util.property.StringProperty
    Interval at which to refresh the list of XML/A catalogs.

    Fields inherited from class mondrian.olap.MondrianPropertiesBase

    mondrianDotProperties

    Fields inherited from class org.eigenbase.util.property.TriggerableProperties

    properties, triggers

    Fields inherited from class java.util.Properties

    defaults
  • Method Summary

    Modifier and Type
    Method
    Description
    Returns the singleton.

    Methods inherited from class mondrian.olap.MondrianPropertiesBase

    populate, triggersAreEnabled

    Methods inherited from class org.eigenbase.util.property.TriggerableProperties

    getProperties, getPropertyDefinition, getPropertyList, register, setProperty

    Methods inherited from class java.lang.Object

    finalize, getClass, notify, notifyAll, wait, wait, wait
  • Field Details

    • AggregateRuleTag

      public final transient org.eigenbase.util.property.StringProperty AggregateRuleTag

      String property that is the AggRule element's tag value.

      Normally, this property is not set by a user.

    • AggregateRules

      public final transient org.eigenbase.util.property.StringProperty AggregateRules

      String property containing the name of the file which defines the rules for recognizing an aggregate table. Can be either a resource in the Mondrian jar or a URL.

      The default value is "/DefaultRules.xml", which is in the mondrian.rolap.aggmatcher package in Mondrian.jar.

      Normally, this property is not set by a user.

    • AlertNativeEvaluationUnsupported

      public final transient org.eigenbase.util.property.StringProperty AlertNativeEvaluationUnsupported

      Alerting action to take in case native evaluation of a function is enabled but not supported for that function's usage in a particular query. (No alert is ever raised in cases where native evaluation would definitely have been wasted effort.)

      Recognized actions:

      • OFF: do nothing (default action, also used if unrecognized action is specified)
      • WARN: log a warning to RolapUtil logger
      • ERROR: throw an instance of NativeEvaluationUnsupportedException
    • CaseSensitive

      public final transient org.eigenbase.util.property.BooleanProperty CaseSensitive
      Boolean property that controls whether the MDX parser resolves uses case-sensitive matching when looking up identifiers. The default is false.
    • CatalogURL

      public final transient org.eigenbase.util.property.StringProperty CatalogURL
      Property that contains the URL of the catalog to be used by CmdRunner and XML/A Test.
    • CellBatchSize

      public final transient org.eigenbase.util.property.IntegerProperty CellBatchSize
      Integer property that, if set to a value greater than zero, sets a hard limit on the number of cells that are batched together when building segments.
    • CheckCancelOrTimeoutInterval

      public final transient org.eigenbase.util.property.IntegerProperty CheckCancelOrTimeoutInterval

      Positive integer property that determines loop iterations number between checks for whether the current mdx query has been cancelled or timeout was exceeded.

      Setting the interval too small may result in a performance degradation when reading large result sets; setting it too high can cause a big delay between the query being marked as cancelled or timeout was exceeded and system resources associated to it being released.

    • ChooseAggregateByVolume

      public final transient org.eigenbase.util.property.BooleanProperty ChooseAggregateByVolume

      Boolean property that controls whether aggregate tables are ordered by their volume or row count.

      If true, Mondrian uses the aggregate table with the smallest volume (number of rows multiplied by number of columns); if false, Mondrian uses the aggregate table with the fewest rows.

    • CompareSiblingsByOrderKey

      public final transient org.eigenbase.util.property.BooleanProperty CompareSiblingsByOrderKey
      Boolean property that controls whether sibling members are compared according to order key value fetched from their ordinal expression. The default is false (only database ORDER BY is used).
    • CompoundSlicerMemberSolveOrder

      public final transient org.eigenbase.util.property.IntegerProperty CompoundSlicerMemberSolveOrder
      Property that sets the compound slicer member solve order.
    • CrossJoinOptimizerSize

      public final transient org.eigenbase.util.property.IntegerProperty CrossJoinOptimizerSize

      Property that defines when to apply the crossjoin optimization algorithm.

      If a crossjoin input list's size is larger than this property's value and the axis has the "NON EMPTY" qualifier, then the crossjoin non-empty optimizer is applied. Setting this value to '0' means that for all crossjoin input lists in non-empty axes will have the optimizer applied. On the other hand, if the value is set larger than any possible list, say Integer.MAX_VALUE, then the optimizer will never be applied.

    • CurrentMemberWithCompoundSlicerAlert

      public final transient org.eigenbase.util.property.StringProperty CurrentMemberWithCompoundSlicerAlert

      Alerting action to take when a CurrentMember function is applied to a dimension that is also a compound slicer

      Recognized actions:

      • OFF: do nothing
      • WARN: log a warning
      • ERROR: throw an CurrentMemberWithCompoundSlicer MondrianException
    • DataSourceResolverClass

      public final transient org.eigenbase.util.property.StringProperty DataSourceResolverClass

      Property that defines the name of the plugin class that resolves data source names to DataSource objects. The class must implement the DataSourceResolver interface. If not specified, the default implementation uses JNDI to perform resolution.

      Example:

      mondrian.spi.dataSourceResolverClass=mondrian.spi.impl.JndiDataSourceResolver
    • DisableCaching

      public final transient org.eigenbase.util.property.BooleanProperty DisableCaching
      Boolean property that controls whether a RolapStar's aggregate data cache is cleared after each query. If true, no RolapStar will cache aggregate data from one query to the next (the cache is cleared after each query).
    • DisableLocalSegmentCache

      public final transient org.eigenbase.util.property.BooleanProperty DisableLocalSegmentCache
      Boolean property that controls whether the data from segments is cached locally. To create custom caches, look for the SegmentCache SPI.
    • EnableCacheHitCounters

      public final transient org.eigenbase.util.property.BooleanProperty EnableCacheHitCounters
      Deprecated.
      This property is no longer used, and will be removed in mondrian-4.0.

      Property that controls whether aggregation cache hit / miss counters will be enabled.

      Note that this will affect performance due to existence of sync blocks.

    • EnableDrillThrough

      public final transient org.eigenbase.util.property.BooleanProperty EnableDrillThrough
      If disabled, Mondrian will throw an exception if someone attempts to perform a drillthrough of any kind.
    • EnableExpCache

      public final transient org.eigenbase.util.property.BooleanProperty EnableExpCache
      Boolean property that controls whether to use a cache for frequently evaluated expressions. With the cache disabled, an expression like Rank([Product].CurrentMember, Order([Product].MEMBERS, [Measures].[Unit Sales])) would perform many redundant sorts. The default is true.
    • EnableGroupingSets

      public final transient org.eigenbase.util.property.BooleanProperty EnableGroupingSets

      Property that defines whether to generate SQL queries using the GROUPING SETS construct for rollup. By default it is not enabled.

      Ignored on databases which do not support the GROUPING SETS construct (see Dialect.supportsGroupingSets()).

    • EnableInMemoryRollup

      public final transient org.eigenbase.util.property.BooleanProperty EnableInMemoryRollup
      Property which turns on or off the in-memory rollup of segment data. Defaults to true.
    • EnableNativeCrossJoin

      public final transient org.eigenbase.util.property.BooleanProperty EnableNativeCrossJoin
      If enabled some NON EMPTY CrossJoin will be computed in SQL.
    • EnableNativeFilter

      public final transient org.eigenbase.util.property.BooleanProperty EnableNativeFilter
      If enabled some Filter() will be computed in SQL.
    • EnableNativeNonEmpty

      public final transient org.eigenbase.util.property.BooleanProperty EnableNativeNonEmpty

      If enabled some NON EMPTY set operations like member.children, level.members and member descendants will be computed in SQL.

    • EnableNativeTopCount

      public final transient org.eigenbase.util.property.BooleanProperty EnableNativeTopCount
      If enabled some TopCount will be computed in SQL.
    • EnableNonEmptyOnAllAxis

      public final transient org.eigenbase.util.property.BooleanProperty EnableNonEmptyOnAllAxis
      Boolean property that controls whether each query axis implicit has the NON EMPTY option set. The default is false.
    • EnableRolapCubeMemberCache

      public final transient org.eigenbase.util.property.BooleanProperty EnableRolapCubeMemberCache

      Property that determines whether to cache RolapCubeMember objects, each of which associates a member of a shared hierarchy with a particular cube in which it is being used.

      The default is true, that is, use a cache. If you wish to use the member cache control aspects of CacheControl, you must set this property to false.

      RolapCubeMember has recently become more lightweight to construct, and we may obsolete this cache and this property.

    • EnableTotalCount

      public final transient org.eigenbase.util.property.BooleanProperty EnableTotalCount
      If enabled, first row in the result of an XML/A drill-through request will be filled with the total count of rows in underlying database.
    • EnableTriggers

      public final transient org.eigenbase.util.property.BooleanProperty EnableTriggers

      Boolean property that controls whether to notify the Mondrian system when a property value changes.

      This allows objects dependent on Mondrian properties to react (that is, reload), when a given property changes via, say, MondrianProperties.instance().populate(null) or MondrianProperties.instance().QueryLimit.set(50).

    • ExecutionHistorySize

      public final transient org.eigenbase.util.property.IntegerProperty ExecutionHistorySize

      Property that defines how many previous execution instances the Monitor keeps in its history so that it can send the events which happen after the fact. Setting this property too high will make the JVM run out of memory. Setting it too low might prevent some events from reaching the listeners of the monitor.

      This property is for internal use only and should not be changed unless required. Defaults to 1,000.

    • ExpCompilerClass

      public final transient org.eigenbase.util.property.StringProperty ExpCompilerClass

      Property that defines the name of the class used to compile scalar expressions.

      If the value is non-null, it is used by the ExpCompiler.Factory to create the implementation.

      To test that for all test MDX queries that all functions can handle requests for ITERABLE, LIST and MUTABLE_LIST evaluation results, use the following:

      mondrian.calc.ExpCompiler.class=mondrian.olap.fun.ResultStyleCompiler
    • ExpandNonNative

      public final transient org.eigenbase.util.property.BooleanProperty ExpandNonNative
      If this property is true, when looking for native evaluation of an expression, Mondrian will expand non-native sub-expressions into lists of members.
    • FilterChildlessSnowflakeMembers

      public final transient org.eigenbase.util.property.BooleanProperty FilterChildlessSnowflakeMembers

      Property that defines whether to generate joins to filter out members in a snowflake dimension that do not have any children.

      If true (the default), some queries to query members of high levels snowflake dimensions will be more expensive. If false, and if there are rows in an outer snowflake table that are not referenced by a row in an inner snowflake table, then some queries will return members that have no children.

      Our recommendation, for best performance, is to remove rows outer snowflake tables are not referenced by any row in an inner snowflake table, during your ETL process, and to set this property to false.

    • FoodmartJdbcURL

      public final transient org.eigenbase.util.property.StringProperty FoodmartJdbcURL

      Property containing the JDBC URL of the FoodMart database. The default value is to connect to an ODBC data source called "MondrianFoodMart".

      To run the test suite, first load the FoodMart data set into the database of your choice. Then set the driver.classpath, mondrian.foodmart.jdbcURL and mondrian.jdbcDrivers properties, by un-commenting and modifying one of the sections below. Put the JDBC driver jar into mondrian/testlib.

      Here are example property settings for various databases.

      Derby: needs user and password

      mondrian.foodmart.jdbcURL=jdbc:derby:demo/derby/foodmart

      mondrian.foodmart.jdbcUser=sa

      mondrian.foodmart.jdbcPassword=sa

      mondrian.jdbcDrivers=org.apache.derby.jdbc.EmbeddedDriver

      driver.classpath=testlib/derby.jar

      FireBirdSQL

      mondrian.foodmart.jdbcURL=jdbc:firebirdsql:localhost/3050:/mondrian/foodmart.gdb

      mondrian.jdbcDrivers=org.firebirdsql.jdbc.FBDriver

      driver.classpath=/jdbc/fb/firebirdsql-full.jar

      Greenplum (similar to Postgres)

      mondrian.foodmart.jdbcURL=jdbc:postgresql://localhost/foodmart?user=gpadmin&password=xxxx

      mondrian.foodmart.jdbcUser=foodmart

      mondrian.foodmart.jdbcPassword=foodmart

      mondrian.jdbcDrivers=org.postgresql.Driver

      driver.classpath=lib/postgresql-8.2-504.jdbc3.jar

      LucidDB (see instructions)

      mondrian.foodmart.jdbcURL=jdbc:luciddb:http://localhost

      mondrian.foodmart.jdbcUser=foodmart

      mondrian.jdbcDrivers=org.luciddb.jdbc.LucidDbClientDriver

      driver.classpath=/path/to/luciddb/plugin/LucidDbClient.jar

      Oracle (needs user and password)

      oracle.home=G:/oracle/product/10.1.0/Db_1

      mondrian.foodmart.jdbcURL.oracle=jdbc:oracle:thin:@//host:port/service_name

      mondrian.foodmart.jdbcURL=jdbc:oracle:thin:foodmart/foodmart@//stilton:1521/orcl

      mondrian.foodmart.jdbcURL=jdbc:oracle:oci8:foodmart/foodmart@orcl

      mondrian.foodmart.jdbcUser=FOODMART

      mondrian.foodmart.jdbcPassword=oracle

      mondrian.jdbcDrivers=oracle.jdbc.OracleDriver

      driver.classpath=/home/jhyde/open/mondrian/lib/ojdbc14.jar

      ODBC (Microsoft Access)

      mondrian.foodmart.jdbcURL=jdbc:odbc:MondrianFoodMart

      mondrian.jdbcDrivers=sun.jdbc.odbc.JdbcOdbcDriver

      driver.classpath=

      Hypersonic

      mondrian.foodmart.jdbcURL=jdbc:hsqldb:demo/hsql/FoodMart

      mondrian.jdbcDrivers=org.hsqldb.jdbcDriver

      driver.classpath=xx

      MySQL: can have user and password set in JDBC URL

      mondrian.foodmart.jdbcURL=jdbc:mysql://localhost/foodmart?user=foodmart&password=foodmart

      mondrian.foodmart.jdbcURL=jdbc:mysql://localhost/foodmart

      mondrian.foodmart.jdbcUser=foodmart

      mondrian.foodmart.jdbcPassword=foodmart

      mondrian.jdbcDrivers=com.mysql.jdbc.Driver

      driver.classpath=D:/mysql-connector-3.1.12

      MariaDB: can have user and password set in JDBC URL

      mondrian.foodmart.jdbcURL=jdbc:mariadb://localhost/foodmart?user=foodmart&password=foodmart

      mondrian.foodmart.jdbcURL=jdbc:mariadb://localhost/foodmart

      mondrian.foodmart.jdbcUser=foodmart

      mondrian.foodmart.jdbcPassword=foodmart

      mondrian.jdbcDrivers=org.mariadb.jdbc.Driver

      driver.classpath=D:/mariadb-java-client-1.4.6.jar

      NuoDB

      mondrian.foodmart.jdbcURL=jdbc:com.nuodb://localhost/foodmart?schema=mondrian

      mondrian.foodmart.jdbcUser=foodmart

      mondrian.foodmart.jdbcPassword=foodmart

      mondrian.jdbcDrivers=com.nuodb.jdbc.Driver

      mondrian.foodmart.jdbcSchema=mondrian

      driver.classpath=/opt/nuodb/jar/nuodbjdbc.jar

      Infobright

      As MySQL. (Infobright uses a MySQL driver, version 5.1 and later.)

      Ingres

      mondrian.foodmart.jdbcURL=jdbc:ingres://192.168.200.129:II7/MondrianFoodMart;LOOP=on;AUTO=multi;UID=ingres;PWD=sergni

      mondrian.jdbcDrivers=com.ingres.jdbc.IngresDriver

      driver.classpath=c:/ingres2006/ingres/lib/iijdbc.jar

      Postgres: needs user and password

      mondrian.foodmart.jdbcURL=jdbc:postgresql://localhost/FM3

      mondrian.foodmart.jdbcUser=postgres

      mondrian.foodmart.jdbcPassword=pgAdmin

      mondrian.jdbcDrivers=org.postgresql.Driver

      Neoview

      mondrian.foodmart.jdbcURL=jdbc:hpt4jdbc://localhost:18650/:schema=PENTAHO;serverDataSource=PENTAHO_DataSource

      mondrian.foodmart.jdbcUser=user

      mondrian.foodmart.jdbcPassword=password

      mondrian.jdbcDrivers=com.hp.t4jdbc.HPT4Driver

      driver.classpath=/some/path/hpt4jdbc.jar

      Netezza: mimics Postgres

      mondrian.foodmart.jdbcURL=jdbc:netezza://127.0.1.10/foodmart

      mondrian.foodmart.jdbcUser=user

      mondrian.foodmart.jdbcPassword=password

      mondrian.jdbcDrivers=org.netezza.Driver

      driver.classpath=/some/path/nzjdbc.jar

      Sybase

      mondrian.foodmart.jdbcURL=jdbc:jtds:sybase://xxx.xxx.xxx.xxx:port/dbName

      mondrian.foodmart.jdbcUser=user

      mondrian.foodmart.jdbcPassword=password

      mondrian.jdbcDrivers=net.sourceforge.jtds.jdbc.Driver

      driver.classpath=/some/path/jtds-1.2.jar

      Teradata

      mondrian.foodmart.jdbcURL=jdbc:teradata://DatabaseServerName/DATABASE=FoodMart

      mondrian.foodmart.jdbcUser=user

      mondrian.foodmart.jdbcPassword=password

      mondrian.jdbcDrivers=com.ncr.teradata.TeraDriver

      driver.classpath=/some/path/terajdbc/classes/terajdbc4.jar

      Vertica

      mondrian.foodmart.jdbcURL=jdbc:vertica://xxx.xxx.xxx.xxx:port/dbName

      mondrian.foodmart.jdbcUser=user

      mondrian.foodmart.jdbcPassword=password

      mondrian.jdbcDrivers=com.vertica.Driver

      driver.classpath=/some/path/vertica.jar

      Vectorwise

      mondrian.foodmart.jdbcURL=jdbc:ingres://xxx.xxx.xxx.xxxport/dbName

      mondrian.foodmart.jdbcUser=user

      mondrian.foodmart.jdbcPassword=password

      mondrian.jdbcDrivers=com.ingres.jdbc.IngresDriver

      driver.classpath=/some/path/iijdbc.jar
    • GenerateAggregateSql

      public final transient org.eigenbase.util.property.BooleanProperty GenerateAggregateSql

      Boolean property that controls whether to print the SQL code generated for aggregate tables.

      If set, then as each aggregate request is processed, both the lost and collapsed dimension create and insert sql code is printed. This is for use in the CmdRunner allowing one to create aggregate table generation sql.

    • GenerateFormattedSql

      public final transient org.eigenbase.util.property.BooleanProperty GenerateFormattedSql

      Boolean property that controls pretty-print mode.

      If true, the all SqlQuery SQL strings will be generated in pretty-print mode, formatted for ease of reading.

    • HighCardChunkSize

      public final transient org.eigenbase.util.property.IntegerProperty HighCardChunkSize
      Property that establishes the amount of chunks for querying cells involving high-cardinality dimensions. Should prime with mondrian.result.limit.
    • IdleOrphanSessionTimeout

      public final transient org.eigenbase.util.property.IntegerProperty IdleOrphanSessionTimeout
      Integer property that defines how long, in seconds, orphaned sessions will be retained in server memory. An orphaned session is one that no longer has an associated connection. The default is 3600 seconds.
    • IgnoreInvalidMembers

      public final transient org.eigenbase.util.property.BooleanProperty IgnoreInvalidMembers

      Property that defines whether non-existent member errors should be ignored during schema load. If so, the non-existent member is treated as a null member.

    • IgnoreInvalidMembersDuringQuery

      public final transient org.eigenbase.util.property.BooleanProperty IgnoreInvalidMembersDuringQuery

      Property that defines whether non-existent member errors should be ignored during query validation. If so, the non-existent member is treated as a null member.

    • IgnoreMeasureForNonJoiningDimension

      public final transient org.eigenbase.util.property.BooleanProperty IgnoreMeasureForNonJoiningDimension

      Property that defines whether to ignore measure when non joining dimension is in the tuple during aggregation.

      If there are unrelated dimensions to a measure in context during aggregation, the measure is ignored in the evaluation context. This behaviour kicks in only if the CubeUsage for this measure has IgnoreUnrelatedDimensions attribute set to false.

      For example, Gender doesn't join with [Warehouse Sales] measure.

      With mondrian.olap.agg.IgnoreMeasureForNonJoiningDimension=true Warehouse Sales gets eliminated and is ignored in the aggregate value.

      [Store Sales] + [Warehouse Sales] SUM({Product.members * Gender.members}) 7,913,333.82

      With mondrian.olap.agg.IgnoreMeasureForNonJoiningDimension=false Warehouse Sales with Gender All level member contributes to the aggregate value.

      [Store Sales] + [Warehouse Sales] SUM({Product.members * Gender.members}) 9,290,730.03

      On a report where Gender M, F and All members exist a user will see a large aggregated value compared to the aggregated value that can be arrived at by summing up values against Gender M and F. This can be confusing to the user. This feature can be used to eliminate such a situation.

    • IterationLimit

      public final transient org.eigenbase.util.property.IntegerProperty IterationLimit

      Integer property indicating the maximum number of iterations allowed when iterating over members to compute aggregates. A value of 0 (the default) indicates no limit.

    • Iterations

      public final transient org.eigenbase.util.property.IntegerProperty Iterations
      Not documented.
    • JdbcDrivers

      public final transient org.eigenbase.util.property.StringProperty JdbcDrivers
      Property containing a list of JDBC drivers to load automatically. Must be a comma-separated list of class names, and the classes must be on the class path.
    • JdbcFactoryClass

      public final transient org.eigenbase.util.property.StringProperty JdbcFactoryClass

      Property that defines the JdbcSchema factory class which determines the list of tables and columns of a specific datasource.

      See Also:
    • LevelPreCacheThreshold

      public final transient org.eigenbase.util.property.IntegerProperty LevelPreCacheThreshold

      Property which governs whether child members or members of a level are precached when child or level members are requested within a query expression. For example, if an expression references two child members in the store dimension, like { [Store].[USA].[CA], [Store].[USA].[OR] }, precaching will load *all* children under [USA] rather than just the 2 requested. The threshold value is compared against the cardinality of the level to determine whether or not precaching should be performed. If cardinality is lower than the threshold value Mondrian will precache. Setting this property to 0 effectively disables precaching.

    • LocalePropFile

      public final transient org.eigenbase.util.property.StringProperty LocalePropFile

      String property that holds the name of the class whose resource bundle is to be used to for this schema. For example, if the class is com.acme.MyResource, mondrian will look for a resource bundle called com/acme/MyResource_<i>locale</i>.properties on the class path. (This property has a confusing name because in a previous release it actually held a file name.)

      Used for the LocalizingDynamicSchemaProcessor; see Internationalization for more details.

      Default value is null.

    • MaxConstraints

      public final transient org.eigenbase.util.property.IntegerProperty MaxConstraints

      Max number of constraints in a single 'IN' SQL clause.

      This value may be variant among database products and their runtime settings. Oracle, for example, gives the error "ORA-01795: maximum number of expressions in a list is 1000".

      Recommended values:

      • Oracle: 1,000
      • DB2: 2,500
      • Other: 10,000
    • MaxEvalDepth

      public final transient org.eigenbase.util.property.IntegerProperty MaxEvalDepth

      Boolean property that defines the maximum number of passes allowable while evaluating an MDX expression.

      If evaluation exceeds this depth (for example, while evaluating a very complex calculated member), Mondrian will throw an error.

    • MaxRows

      public final transient org.eigenbase.util.property.IntegerProperty MaxRows
      Property that defines limit on the number of rows returned by XML/A drill through request.
    • MemoryMonitor

      public final transient org.eigenbase.util.property.BooleanProperty MemoryMonitor

      Property that defines whether the MemoryMonitor should be enabled. By default it is disabled; memory monitor is not available before Java version 1.5.

    • MemoryMonitorClass

      public final transient org.eigenbase.util.property.StringProperty MemoryMonitorClass

      Property that defines the name of the class used as a memory monitor.

      If the value is non-null, it is used by the MemoryMonitorFactory to create the implementation.

    • MemoryMonitorThreshold

      public final transient org.eigenbase.util.property.IntegerProperty MemoryMonitorThreshold

      Property that defines the default MemoryMonitor percentage threshold. If enabled, when Java's memory monitor detects that post-garbage collection is above this value, notifications are generated.

    • NativizeMaxResults

      public final transient org.eigenbase.util.property.IntegerProperty NativizeMaxResults

      Property that controls the maximum number of results contained in a NativizeSet result set.

      If the number of tuples contained in the result set exceeds this value Mondrian throws a LimitExceededDuringCrossjoin error.

    • NativizeMinThreshold

      public final transient org.eigenbase.util.property.IntegerProperty NativizeMinThreshold

      Property that controls minimum expected cardinality required in order for NativizeSet to natively evaluate a query.

      If the expected cardinality falls below this level the query is executed non-natively.

      It is possible for the actual cardinality to fall below this threshold even though the expected cardinality falls above this threshold. In this case the query will be natively evaluated.

    • NeedDimensionPrefix

      public final transient org.eigenbase.util.property.BooleanProperty NeedDimensionPrefix

      Property determines if elements of dimension (levels, hierarchies, members) need to be prefixed with dimension name in MDX query.

      For example when the property is true, the following queries will error out. The same queries will work when this property is set to false.

      select {[M]} on 0 from sales

      select {[USA]} on 0 from sales

      select {[USA].[CA].[Santa Monica]} on 0 from sales

      When the property is set to true, any query where elements are prefixed with dimension name as below will work

      select {[Gender].[F]} on 0 from sales

      select {[Customers].[Santa Monica]} on 0 from sales

      Please note that this property does not govern the behaviour wherein

      [Gender].[M]

      is resolved into a fully qualified

      [Gender].[M]

      In a scenario where the schema is very large and dimensions have large number of members a MDX query that has a invalid member in it will cause mondrian to to go through all the dimensions, levels, hierarchies, members and properties trying to resolve the element name. This behavior consumes considerable time and resources on the server. Setting this property to true will make it fail fast in a scenario where it is desirable.

    • NullDenominatorProducesNull

      public final transient org.eigenbase.util.property.BooleanProperty NullDenominatorProducesNull

      Property that defines the behavior of division if the denominator evaluates to zero.

      If false (the default), if a division has a non-null numerator and a null denominator, it evaluates to "Infinity", which conforms to SSAS behavior.

      If true, the result is null if the denominator is null. Setting to true enables the old semantics of evaluating this to null; this does not conform to SSAS, but is useful in some applications.

    • NullMemberRepresentation

      public final transient org.eigenbase.util.property.StringProperty NullMemberRepresentation

      Property that determines how a null member value is represented in the result output.

      AS 2000 shows this as empty value

      AS 2005 shows this as "(null)" value

    • OptimizePredicates

      public final transient org.eigenbase.util.property.BooleanProperty OptimizePredicates

      Boolean property that determines whether Mondrian optimizes predicates.

      If true, Mondrian may retrieve a little more data than specified in MDX query and cache it for future use. For example, if you ask for data on 48 states of the United States for 3 quarters of 2011, Mondrian will round out to all 50 states and all 4 quarters. If false, Mondrian still optimizes queries that involve all members of a dimension.

    • PropertyValueMapFactoryClass

      public final transient org.eigenbase.util.property.StringProperty PropertyValueMapFactoryClass

      Property that defines the name of the factory class used to create maps of member properties to their respective values.

      If the value is non-null, it is used by the PropertyValueFactory to create the implementation. If unset, RolapMemberBase.DefaultPropertyValueMapFactory will be used.

    • QueryFileDirectory

      public final transient org.eigenbase.util.property.StringProperty QueryFileDirectory
      Property defining where the test XML files are.
    • QueryFilePattern

      public final transient org.eigenbase.util.property.StringProperty QueryFilePattern
      Property that defines a pattern for which test XML files to run. Pattern has to match a file name of the form: querywhatever.xml in the directory.

      Example:

      mondrian.test.QueryFilePattern=queryTest_fec[A-Za-z0-9_]*.xml
    • QueryLimit

      public final transient org.eigenbase.util.property.IntegerProperty QueryLimit

      Maximum number of simultaneous queries the system will allow.

      Oracle fails if you try to run more than the 'processes' parameter in init.ora, typically 150. The throughput of Oracle and other databases will probably reduce long before you get to their limit.

    • QueryTimeout

      public final transient org.eigenbase.util.property.IntegerProperty QueryTimeout

      Property that defines the timeout value (in seconds) for queries. A value of 0 (the default) indicates no timeout.

    • ReadAggregates

      public final transient org.eigenbase.util.property.BooleanProperty ReadAggregates

      Boolean property that determines whether Mondrian should read aggregate tables.

      If set to true, then Mondrian scans the database for aggregate tables. Unless mondrian.rolap.aggregates.Use is set to true, the aggregates found will not be used.

    • ResultLimit

      public final transient org.eigenbase.util.property.IntegerProperty ResultLimit
      Integer property that, if set to a value greater than zero, limits the maximum size of a result set.
    • RolapConnectionShepherdNbThreads

      public final transient org.eigenbase.util.property.IntegerProperty RolapConnectionShepherdNbThreads

      Maximum number of MDX query threads per Mondrian server instance. Defaults to 20.

    • RolapConnectionShepherdThreadPollingInterval

      public final transient org.eigenbase.util.property.StringProperty RolapConnectionShepherdThreadPollingInterval

      Property that defines the interval value between polling operations performed by the RolapConnection shepherd thread. This controls query timeouts and cancellation, so a small value (a few milliseconds) is best. Setting this to a value higher than mondrian.rolap.queryTimeout will result the timeout not being enforced as expected.

      Default value is "1000ms". Default time unit is "ms".

    • SegmentCache

      public final transient org.eigenbase.util.property.StringProperty SegmentCache
      Property which defines which SegmentCache implementation to use. Specify the value as a fully qualified class name, such as org.example.SegmentCacheImpl where SegmentCacheImpl is an implementation of SegmentCache.
    • SegmentCacheManagerNumberCacheThreads

      public final transient org.eigenbase.util.property.IntegerProperty SegmentCacheManagerNumberCacheThreads

      Maximum number of threads per Mondrian server instance that are used to run perform operations on the external caches. Defaults to 100.

    • SegmentCacheManagerNumberSqlThreads

      public final transient org.eigenbase.util.property.IntegerProperty SegmentCacheManagerNumberSqlThreads

      Maximum number of threads per Mondrian server instance that are used to run SQL queries when populating segments. Defaults to 100.

    • SolveOrderMode

      public final transient org.eigenbase.util.property.StringProperty SolveOrderMode
      Property that controls the behavior of solve order of calculated members and sets.

      Valid values are "scoped" and "absolute" (the default). See SolveOrderMode for details.

    • SparseSegmentCountThreshold

      public final transient org.eigenbase.util.property.IntegerProperty SparseSegmentCountThreshold

      Property that, with SparseSegmentDensityThreshold, determines whether to choose a sparse or dense representation when storing collections of cell values in memory.

      When storing collections of cell values, Mondrian has to choose between a sparse and a dense representation, based upon the possible and actual number of values. The density is actual / possible.

      We use a sparse representation if (possible - countThreshold) * densityThreshold > actual

      For example, at the default values (countThreshold = 1000, SparseSegmentDensityThreshold = 0.5), we use a dense representation for

      • (1000 possible, 0 actual), or
      • (2000 possible, 500 actual), or
      • (3000 possible, 1000 actual).

      Any fewer actual values, or any more possible values, and Mondrian will use a sparse representation.

    • SparseSegmentDensityThreshold

      public final transient org.eigenbase.util.property.DoubleProperty SparseSegmentDensityThreshold
      Property that, with SparseSegmentCountThreshold, determines whether to choose a sparse or dense representation when storing collections of cell values in memory.
    • SqlMemberSourceValuePoolFactoryClass

      public final transient org.eigenbase.util.property.StringProperty SqlMemberSourceValuePoolFactoryClass

      Property that defines the name of the class used in SqlMemberSource to pool common values.

      If the value is non-null, it is used by the SqlMemberSource.ValueMapFactory to create the implementation. If it is not set, then SqlMemberSource.NullValuePoolFactory will be used, meaning common values will not be pooled.

    • SsasCompatibleNaming

      public final transient org.eigenbase.util.property.BooleanProperty SsasCompatibleNaming

      Property that defines whether to enable new naming behavior.

      If true, hierarchies are named [Dimension].[Hierarchy]; if false, [Dimension.Hierarchy].

    • StatisticsProviders

      public final transient org.eigenbase.util.property.StringProperty StatisticsProviders

      Comma-separated list of classes to be used to get statistics about the number of rows in a table, or the number of distinct values in a column.

      If there is a value for mondrian.statistics.providers.DATABASE, where DAtABASE is the current database name (e.g. MYSQL or ORACLE), then that property overrides.

      Example:

      mondrian.statistics.providers=mondrian.spi.impl.JdbcStatisticsProvider

      mondrian.statistics.providers.MYSQL=mondrian.spi.impl.JdbcStatisticsProvider,mondrian.spi.impl.JdbcStatisticsProvider

      This would use JDBC's statistics (via the java.sql.DatabaseMetaData.getIndexInfo method) for most databases, but for connections to a MySQL database, would use external statistics first, and fall back to JDBC statistics only if external statistics were not available.

    • TestClass

      public final transient org.eigenbase.util.property.StringProperty TestClass

      String property that determines which test class to run.

      This is the name of the class. It must either implement junit.framework.Test or have a method public [static] junit.framework.Test suite().

      Example:

      mondrian.test.Class=mondrian.test.FoodMartTestCase
      See Also:
    • TestConnectString

      public final transient org.eigenbase.util.property.StringProperty TestConnectString

      Property containing the connect string which regression tests should use to connect to the database.

      Format is specified in Util.parseConnectString(String).

    • TestExpDependencies

      public final transient org.eigenbase.util.property.IntegerProperty TestExpDependencies

      Integer property that controls whether to test operators' dependencies, and how much time to spend doing it.

      If this property is positive, Mondrian's test framework allocates an expression evaluator which evaluates each expression several times, and makes sure that the results of the expression are independent of dimensions which the expression claims to be independent of.

      The default is 0.

    • TestHighCardinalityDimensionList

      public final transient org.eigenbase.util.property.StringProperty TestHighCardinalityDimensionList
      Property containing a list of dimensions in the Sales cube that should be treated as high-cardinality dimensions by the testing infrastructure. This allows us to run the full suite of tests with high-cardinality functionality enabled.
    • TestJdbcPassword

      public final transient org.eigenbase.util.property.StringProperty TestJdbcPassword
      Property containing the JDBC password of a test database. The default value is null, to cope with DBMSs that don't need this.
    • TestJdbcUser

      public final transient org.eigenbase.util.property.StringProperty TestJdbcUser
      Property containing the JDBC user of a test database. The default value is null, to cope with DBMSs that don't need this.
    • TestName

      public final transient org.eigenbase.util.property.StringProperty TestName

      String property that determines which tests are run.

      This is a regular expression as defined by Pattern. If this property is specified, only tests whose names match the pattern in its entirety will be run.

      See Also:
    • TestSeed

      public final transient org.eigenbase.util.property.IntegerProperty TestSeed

      Seed for random number generator used by some of the tests.

      Any value besides 0 or -1 gives deterministic behavior. The default value is 1234: most users should use this. Setting the seed to a different value can increase coverage, and therefore may uncover new bugs.

      If you set the value to 0, the system will generate its own pseudo-random seed.

      If you set the value to -1, Mondrian uses the next seed from an internal random-number generator. This is a little more deterministic than setting the value to 0.

    • TimeLimit

      public final transient org.eigenbase.util.property.IntegerProperty TimeLimit
      Property that returns the time limit for the test run in seconds. If the test is running after that time, it is terminated.
    • UseAggregates

      public final transient org.eigenbase.util.property.BooleanProperty UseAggregates

      Boolean property that controls whether Mondrian uses aggregate tables.

      If true, then Mondrian uses aggregate tables. This property is queried prior to each aggregate query so that changing the value of this property dynamically (not just at startup) is meaningful.

      Aggregates can be read from the database using the ReadAggregates property but will not be used unless this property is set to true.

    • VUsers

      public final transient org.eigenbase.util.property.IntegerProperty VUsers
      Not documented.
    • Warmup

      public final transient org.eigenbase.util.property.BooleanProperty Warmup
      Property that indicates whether this is a "warmup test".
    • WarnIfNoPatternForDialect

      public final transient org.eigenbase.util.property.StringProperty WarnIfNoPatternForDialect

      Property that controls whether warning messages should be printed if a SQL comparison test does not contain expected SQL statements for the specified dialect. The tests are skipped if no expected SQL statements are found for the current dialect.

      Possible values are the following:

      • "NONE": no warning (default)
      • "ANY": any dialect
      • "ACCESS"
      • "DERBY"
      • "LUCIDDB"
      • "MYSQL"
      • ... and any Dialect enum in SqlPattern.Dialect

      Specific tests can overwrite the default setting. The priority is:

      • Settings besides "ANY" in mondrian.properties file
      • < Any setting in the test
      • < "ANY"

    • XmlaSchemaRefreshInterval

      public final transient org.eigenbase.util.property.StringProperty XmlaSchemaRefreshInterval

      Interval at which to refresh the list of XML/A catalogs. (Usually known as the datasources.xml file.)

      It is not an active process; no threads will be created. It only serves as a rate limiter. The refresh process is triggered by requests to the doPost() servlet method.

      Values may have time unit suffixes such as 's' (second) or 'ms' (milliseconds). Default value is 3000 milliseconds (3 seconds). Default time unit is milliseconds.

      See also DynamicDatasourceXmlaServlet.

  • Method Details

    • instance

      public static MondrianProperties instance()
      Returns the singleton.
      Returns:
      Singleton instance