EmptyValue

JVM_INSTANCE_UUID

Unique id for this JVM instance. Part of a key that ensures that if
two JVMs in the same cluster have a data-source with the same
identity-hash-code, they will be treated as different data-sources,
and therefore caches will not be incorrectly shared.

JdbcVersion

Retrowoven

Whether the code base has re-engineered using retroweaver.
If this is the case, some functionality is not available, but a lot of
things are available via UtilCompatible.
Retroweaver has some problems involving EnumSet.

createRandom

seed - Seed for random number generator.
If 0, generate a seed from the system clock and print the value
chosen. (This is effectively non-deterministic.)
If -1, generate a seed from an internal random number generator.
(This is deterministic, but ensures that different tests have
different seeds.)

Returns:

A random number generator.

isValidProperty

Returns whether a property is valid for a member of a given level.
It is valid if the property is defined at the level or at
an ancestor level, or if the property is a standard property such as
"FORMATTED_VALUE".

nonDbTimeMillis

Returns the system time less the time spent accessing the database.
Use this method to figure out how long an operation took: call this
method before an operation and after an operation, and the difference
is the amount of non-database time spent.

castToIterable

Casts a collection to iterable.
Under JDK 1.4, Collection objects do not implement
Iterable, so this method inserts a casting wrapper. (Since
Iterable does not exist under JDK 1.4, they will have been compiled
under JDK 1.5 or later, then retrowoven to 1.4 class format. References
to Iterable will have been replaced with references to
com.rc.retroweaver.runtime.Retroweaver_.

Under later JDKs this method is trivial. This method can be deleted
when we discontinue support for JDK 1.4.

checkCJResultLimit

Check the resultSize against the result limit setting. Throws
LimitExceededDuringCrossjoin exception if limit exceeded.
When it is called from RolapNativeSet.checkCrossJoin(), it is only
possible to check the known input size, because the final CJ result
will come from the DB(and will be checked against the limit when
fetching from the JDBC result set, in SqlTupleReader.prepareTuples())

This method is intended to allow legacy applications (such as JPivot
and Mondrian's XMLA server) to continue to create connections using
Mondrian's legacy connection API even when they are handed an olap4j
connect string.

getDimensionCube

Tries to find the cube from which a dimension is taken.
It considers private dimensions, shared dimensions and virtual
dimensions. If it can't determine with certitude the origin
of the dimension, it returns null.

getClosestResource

Similar to ClassLoader.getResource(String), except the lookup
is in reverse order.
i.e. returns the resource from the supplied classLoader or the
one closest to it in the hierarchy, instead of the closest to the root
class loader

Parameters:

classLoader - The class loader to fetch from

name - The resource name

Returns:

A URL object for reading the resource, or null if the resource
could not be found or the invoker doesn't have adequate privileges to get
the resource.

falseFunctor

toNullValuesMap

Transforms a list into a map for which all the keys return
a null value associated to it.

The list passed as an argument will be used to back
the map returned and as many methods are overridden as
possible to make sure that we don't iterate over the backing
list when creating it and when performing operations like
.size(), entrySet() and contains().