mondrian.calc.impl
Class MemberValueCalc

java.lang.Object
  extended by mondrian.calc.impl.AbstractCalc
      extended by mondrian.calc.impl.GenericCalc
          extended by mondrian.calc.impl.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

Field Summary
 
Fields inherited from class mondrian.calc.impl.AbstractCalc
exp, type
 
Constructor Summary
MemberValueCalc(Exp exp, MemberCalc memberCalc, boolean nullCheck)
          Creates a MemberArrayValueCalc.
 
Method Summary
static GenericCalc create(Exp exp, MemberCalc[] memberCalcs, boolean nullCheck)
          Creates a ValueCalc, MemberValueCalc or MemberArrayValueCalc.
 boolean dependsOn(Hierarchy hierarchy)
          Returns whether this expression depends upon a given hierarchy.
 Object evaluate(Evaluator evaluator)
          Evaluates this expression.
 Calc[] getCalcs()
          Returns this expression's child expressions.
 
Methods inherited from class mondrian.calc.impl.GenericCalc
evaluateBoolean, evaluateDateTime, evaluateDimension, evaluateDouble, evaluateHierarchy, evaluateInteger, evaluateLevel, evaluateMember, evaluateString, evaluateTuple, evaluateVoid, numberToDouble
 
Methods inherited from class mondrian.calc.impl.AbstractCalc
accept, anyDepends, anyDependsButFirst, butDepends, collectArguments, getArguments, getName, getResultStyle, getType, isWrapperFor, simplifyEvaluator, unwrap
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface mondrian.calc.Calc
accept, getResultStyle, getType, isWrapperFor, unwrap
 

Constructor Detail

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 Detail

create

public static GenericCalc create(Exp exp,
                                 MemberCalc[] memberCalcs,
                                 boolean nullCheck)
Creates a ValueCalc, MemberValueCalc or MemberArrayValueCalc.

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:

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

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