mondrian.rolap
Class RolapUtil

java.lang.Object
  extended by mondrian.rolap.RolapUtil

public class RolapUtil
extends Object

Utility methods for classes in the mondrian.rolap package.

Since:
22 December, 2001
Author:
jhyde

Nested Class Summary
(package private) static interface RolapUtil.ExecuteQueryHook
           
static class RolapUtil.RolapUtilComparable
           
(package private) static class RolapUtil.Semaphore
          A Semaphore is a primitive for process synchronization.
static class RolapUtil.TeeWriter
          Writes to a string and also to an underlying writer.
 
Field Summary
(package private) static org.apache.log4j.Logger LOGGER
           
static org.apache.log4j.Logger MDX_LOGGER
           
static org.apache.log4j.Logger MONITOR_LOGGER
           
static org.apache.log4j.Logger PROFILE_LOGGER
           
static Comparator ROLAP_COMPARATOR
          A comparator singleton instance which can handle the presence of RolapUtil.RolapUtilComparable instances in a collection.
static org.apache.log4j.Logger SQL_LOGGER
           
static String sqlNullLiteral
           
static Comparable<?> sqlNullValue
          Special value represents a null key.
static Object valueNotReadyException
          Special cell value indicates that the value is not in cache yet.
 
Constructor Summary
RolapUtil()
           
 
Method Summary
static void alertNonNative(String functionName, String reason)
          Raises an alert that native SQL evaluation could not be used in a case where it might have been beneficial, but some limitation in Mondrian's implementation prevented it.
static MondrianDef.Relation convertInlineTableToRelation(MondrianDef.InlineTable inlineTable, Dialect dialect)
           
static ExpCompiler createDependencyTestingCompiler(ExpCompiler compiler)
          Creates a compiler which will generate programs which will test whether the dependencies declared via Calc.dependsOn(Hierarchy) are accurate.
static Evaluator createEvaluator(Statement statement)
          Creates a dummy evaluator.
static ExpCompiler createProfilingCompiler(ExpCompiler compiler)
           
static SqlStatement executeQuery(DataSource dataSource, String sql, List<SqlStatement.Type> types, int maxRowCount, int firstRowOrdinal, Locus locus, int resultSetType, int resultSetConcurrency)
          Executes a query.
static SqlStatement executeQuery(DataSource dataSource, String sql, Locus locus)
          Executes a query, printing to the trace log if tracing is enabled.
static Member findBestMemberMatch(List<? extends Member> members, RolapMember parent, RolapLevel level, Id.Segment searchName, MatchType matchType, boolean caseInsensitive)
          Locates a member specified by its member name, from an array of members.
static RolapUtil.ExecuteQueryHook getHook()
          Sets the query-execution hook used by tests.
(package private) static RolapUtil.Semaphore getQuerySemaphore()
          Gets the semaphore which controls how many people can run queries simultaneously.
static void loadDrivers(String jdbcDrivers)
          Loads a set of JDBC drivers.
static SchemaReader locusSchemaReader(RolapConnection connection, SchemaReader schemaReader)
          Wraps a schema reader in a proxy so that each call to schema reader has a locus for profiling purposes.
(package private) static RolapMember lookupMember(MemberReader reader, List<Id.Segment> uniqueNameParts, boolean failIfNotFound)
           
static String mdxNullLiteral()
           
static void reloadNullLiteral()
           
static void setHook(RolapUtil.ExecuteQueryHook hook)
           
static RolapMember strip(RolapMember member)
           
(package private) static RolapMember[] toArray(List<RolapMember> v)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

MDX_LOGGER

public static final org.apache.log4j.Logger MDX_LOGGER

SQL_LOGGER

public static final org.apache.log4j.Logger SQL_LOGGER

MONITOR_LOGGER

public static final org.apache.log4j.Logger MONITOR_LOGGER

PROFILE_LOGGER

public static final org.apache.log4j.Logger PROFILE_LOGGER

LOGGER

static final org.apache.log4j.Logger LOGGER

valueNotReadyException

public static final Object valueNotReadyException
Special cell value indicates that the value is not in cache yet.


sqlNullValue

public static final Comparable<?> sqlNullValue
Special value represents a null key.


ROLAP_COMPARATOR

public static final Comparator ROLAP_COMPARATOR
A comparator singleton instance which can handle the presence of RolapUtil.RolapUtilComparable instances in a collection.


sqlNullLiteral

public static final String sqlNullLiteral
See Also:
Constant Field Values
Constructor Detail

RolapUtil

public RolapUtil()
Method Detail

locusSchemaReader

public static SchemaReader locusSchemaReader(RolapConnection connection,
                                             SchemaReader schemaReader)
Wraps a schema reader in a proxy so that each call to schema reader has a locus for profiling purposes.

Parameters:
connection - Connection
schemaReader - Schema reader
Returns:
Wrapped schema reader

getHook

public static RolapUtil.ExecuteQueryHook getHook()
Sets the query-execution hook used by tests. This method and setHook(mondrian.rolap.RolapUtil.ExecuteQueryHook) are synchronized to ensure a memory barrier.

Returns:
Query execution hook

setHook

public static void setHook(RolapUtil.ExecuteQueryHook hook)

mdxNullLiteral

public static String mdxNullLiteral()

reloadNullLiteral

public static void reloadNullLiteral()

toArray

static RolapMember[] toArray(List<RolapMember> v)

lookupMember

static RolapMember lookupMember(MemberReader reader,
                                List<Id.Segment> uniqueNameParts,
                                boolean failIfNotFound)

executeQuery

public static SqlStatement executeQuery(DataSource dataSource,
                                        String sql,
                                        Locus locus)
Executes a query, printing to the trace log if tracing is enabled.

If the query fails, it wraps the SQLException in a runtime exception with message as description, and closes the result set.

If it succeeds, the caller must call the SqlStatement.close() method of the returned SqlStatement.

Parameters:
dataSource - DataSource
sql - SQL string
locus - Locus of execution
Returns:
ResultSet

executeQuery

public static SqlStatement executeQuery(DataSource dataSource,
                                        String sql,
                                        List<SqlStatement.Type> types,
                                        int maxRowCount,
                                        int firstRowOrdinal,
                                        Locus locus,
                                        int resultSetType,
                                        int resultSetConcurrency)
Executes a query.

If the query fails, it wraps the SQLException in a runtime exception with message as description, and closes the result set.

If it succeeds, the caller must call the SqlStatement.close() method of the returned SqlStatement.

Parameters:
dataSource - DataSource
sql - SQL string
types - Suggested types of columns, or null; if present, must have one element for each SQL column; each not-null entry overrides deduced JDBC type of the column
maxRowCount - Maximum number of rows to retrieve, <= 0 if unlimited
firstRowOrdinal - Ordinal of row to skip to (1-based), or 0 to start from beginning
locus - Execution context of this statement
resultSetType - Result set type, or -1 to use default
resultSetConcurrency - Result set concurrency, or -1 to use default
Returns:
ResultSet

alertNonNative

public static void alertNonNative(String functionName,
                                  String reason)
                           throws NativeEvaluationUnsupportedException
Raises an alert that native SQL evaluation could not be used in a case where it might have been beneficial, but some limitation in Mondrian's implementation prevented it. (Do not call this in cases where native evaluation would have been wasted effort.)

Parameters:
functionName - name of function for which native evaluation was skipped
reason - reason why native evaluation was skipped
Throws:
NativeEvaluationUnsupportedException

loadDrivers

public static void loadDrivers(String jdbcDrivers)
Loads a set of JDBC drivers.

Parameters:
jdbcDrivers - A string consisting of the comma-separated names of JDBC driver classes. For example "sun.jdbc.odbc.JdbcOdbcDriver,com.mysql.jdbc.Driver".

createDependencyTestingCompiler

public static ExpCompiler createDependencyTestingCompiler(ExpCompiler compiler)
Creates a compiler which will generate programs which will test whether the dependencies declared via Calc.dependsOn(Hierarchy) are accurate.


findBestMemberMatch

public static Member findBestMemberMatch(List<? extends Member> members,
                                         RolapMember parent,
                                         RolapLevel level,
                                         Id.Segment searchName,
                                         MatchType matchType,
                                         boolean caseInsensitive)
Locates a member specified by its member name, from an array of members. If an exact match isn't found, but a matchType of BEFORE or AFTER is specified, then the closest matching member is returned.

Parameters:
members - array of members to search from
parent - parent member corresponding to the member being searched for
level - level of the member
searchName - member name
matchType - match type
caseInsensitive - if true, use case insensitive search (if applicable) when when doing exact searches
Returns:
matching member (if it exists) or the closest matching one in the case of a BEFORE or AFTER search

convertInlineTableToRelation

public static MondrianDef.Relation convertInlineTableToRelation(MondrianDef.InlineTable inlineTable,
                                                                Dialect dialect)

strip

public static RolapMember strip(RolapMember member)

createProfilingCompiler

public static ExpCompiler createProfilingCompiler(ExpCompiler compiler)

getQuerySemaphore

static RolapUtil.Semaphore getQuerySemaphore()
Gets the semaphore which controls how many people can run queries simultaneously.


createEvaluator

public static Evaluator createEvaluator(Statement statement)
Creates a dummy evaluator.


Get Mondrian at SourceForge.net. Fast, secure and free Open Source software downloads