Package mondrian.calc

Class ExpCompiler.Factory

java.lang.Object
mondrian.util.ObjectFactory<ExpCompiler>
mondrian.calc.ExpCompiler.Factory
Enclosing interface:
ExpCompiler

public static final class ExpCompiler.Factory extends ObjectFactory<ExpCompiler>
The ExpCompiler.Factory is used to access ExpCompiler implementations. Each call returns a new instance. This factory supports overriding the default instance by use of a ThreadLocal and by defining a System property with the ExpCompiler class name.
  • Method Details

    • getExpCompiler

      public static ExpCompiler getExpCompiler(Evaluator evaluator, Validator validator) throws CreationException
      Create a ExpCompiler instance, each call returns a new compiler.
      Parameters:
      evaluator - the Evaluator to use with the compiler
      validator - the Validator to use with the compiler
      Returns:
      the new ExpCompiler compiler
      Throws:
      CreationException - if the compiler can not be created
    • getExpCompiler

      public static ExpCompiler getExpCompiler(Evaluator evaluator, Validator validator, List<ResultStyle> resultStyles) throws CreationException
      Parameters:
      evaluator - the Evaluator to use with the compiler
      validator - the Validator to use with the compiler
      resultStyles - the initial ResultStyle array for the compiler
      Returns:
      the new ExpCompiler compiler
      Throws:
      CreationException - if the compiler can not be created
    • getThreadLocalClassName

      public static String getThreadLocalClassName()
      Get the class name of a ExpCompiler implementation or null.
      Returns:
      the class name or null.
    • setThreadLocalClassName

      public static void setThreadLocalClassName(String className)
      Sets the class name of a ExpCompiler implementation. This should be called (obviously) before calling the ExpCompiler.Factory getExpCompiler method to get the ExpCompiler implementation. Generally, this is only used for testing.
      Parameters:
      className - Class name
    • clearThreadLocalClassName

      public static void clearThreadLocalClassName()
      Clears the class name (regardless of whether a class name was set). When a class name is set using setThreadLocalClassName, the setting whould be done in a try-block and a call to this clear method should be in the finally-clause of that try-block.
    • getClassName

      protected String getClassName()
      Get the class name set in the ThreadLocal or null.
      Overrides:
      getClassName in class ObjectFactory<ExpCompiler>
      Returns:
      class name or null.
    • getStringProperty

      protected org.eigenbase.util.property.StringProperty getStringProperty()
      Return the ExpCompiler.Factory</code property name.
      Specified by:
      getStringProperty in class ObjectFactory<ExpCompiler>
      Returns:
      ExpCompiler.Factory property name
    • getDefault

      protected ExpCompiler getDefault(Class[] parameterTypes, Object[] parameterValues) throws CreationException
      The ExpCompiler.Factory's implementation of the ObjectFactory's abstract method which returns the default ExpCompiler instance.
      Specified by:
      getDefault in class ObjectFactory<ExpCompiler>
      Parameters:
      parameterTypes - array of classes: Evaluator, Validator and ResultStyle
      parameterValues - the Evaluator, Validator and ResultStyle values
      Returns:
      ExpCompiler instance
      Throws:
      CreationException - if the ExpCompiler can not be created.
    • getFactory

      public static ExpCompiler.Factory getFactory()
      Get the underlying Factory object.

      This is for testing only.

      Returns:
      the ExpCompiler.Factory object
    • removeContext

      public Object removeContext()
      Get the current override contect.

      This is for testing only.

      Overrides:
      removeContext in class ObjectFactory<ExpCompiler>
      Returns:
      the override context object.
    • restoreContext

      public void restoreContext(Object context)
      Restore the current overrides.

      This is for testing only.

      Overrides:
      restoreContext in class ObjectFactory<ExpCompiler>
      Parameters:
      context - the current override object.