Class MemberValueCalc

All Implemented Interfaces:
BooleanCalc, Calc, DateTimeCalc, DimensionCalc, DoubleCalc, HierarchyCalc, IntegerCalc, LevelCalc, MemberCalc, StringCalc, TupleCalc, VoidCalc

public class MemberValueCalc extends GenericCalc
Expression which evaluates a few member expressions, sets the dimensional context to the result of those expressions, then yields the value of the current measure in the current dimensional context.

The evaluator's context is preserved.

Note that a MemberValueCalc with 0 member expressions is equivalent to a ValueCalc; see also TupleValueCalc.

Since:
Sep 27, 2005
Author:
jhyde
  • Constructor Details

    • MemberValueCalc

      public MemberValueCalc(Exp exp, MemberCalc memberCalc, boolean nullCheck)
      Creates a MemberArrayValueCalc.

      Clients outside this package should use the create(mondrian.olap.Exp, mondrian.calc.MemberCalc[], boolean) factory method.

      Parameters:
      exp - Expression
      memberCalc - Compiled expression
      nullCheck - Whether to check for null values due to non-joining dimensions in a virtual cube
  • Method Details

    • create

      public static GenericCalc create(Exp exp, MemberCalc[] memberCalcs, boolean nullCheck)
      Parameters:
      exp - Expression
      memberCalcs - Array of members to evaluate
      nullCheck - Whether to check for null values due to non-joining dimensions in a virtual cube
      Returns:
      Compiled expression to evaluate each member expression, set evaluator context to each resulting member, then evaluate the current context
    • evaluate

      public Object evaluate(Evaluator evaluator)
      Description copied from interface: Calc
      Evaluates this expression.
      Parameters:
      evaluator - Provides dimensional context in which to evaluate this expression
      Returns:
      Result of expression evaluation
    • getCalcs

      public Calc[] getCalcs()
      Description copied from class: AbstractCalc
      Returns this expression's child expressions.
      Overrides:
      getCalcs in class AbstractCalc
    • dependsOn

      public boolean dependsOn(Hierarchy hierarchy)
      Description copied from interface: Calc
      Returns whether this expression depends upon a given hierarchy.

      If it does not depend on the hierarchy, then re-evaluating the expression with a different member of this context must produce the same answer.

      Some examples:

      • The expression
        [Measures].[Unit Sales]
        depends on all dimensions except [Measures].
      • The boolean expression
        ([Measures].[Unit Sales], [Time].[1997]) > 1000
        depends on all hierarchies except [Measures] and [Time].
      • The list expression
        Filter([Store].[USA].Children, [Measures].[Unit Sales] < 50)
        depends upon all hierarchies except [Store] and [Measures]. How so? Normally the scalar expression would depend upon all hierarchies except [Measures], but the Filter function sets the [Store] context before evaluating the scalar expression, so it is not inherited from the surrounding context.

      Specified by:
      dependsOn in interface Calc
      Overrides:
      dependsOn in class AbstractCalc
      Parameters:
      hierarchy - Hierarchy
      Returns:
      Whether this expression's result depends upon the current member of the hierarchy