mondrian.calc.impl
Class TupleValueCalc

java.lang.Object
  extended by mondrian.calc.impl.AbstractCalc
      extended by mondrian.calc.impl.GenericCalc
          extended by mondrian.calc.impl.TupleValueCalc
All Implemented Interfaces:
BooleanCalc, Calc, DateTimeCalc, DimensionCalc, DoubleCalc, HierarchyCalc, IntegerCalc, LevelCalc, MemberCalc, StringCalc, TupleCalc, VoidCalc

public class TupleValueCalc
extends GenericCalc

Expression which evaluates a tuple expression, sets the dimensional context to the result of that expression, then yields the value of the current measure in the current dimensional context.

The evaluator's context is preserved.

Since:
Sep 27, 2005
Version:
$Id: //open/mondrian/src/main/mondrian/calc/impl/TupleValueCalc.java#10 $
Author:
jhyde
See Also:
ValueCalc, MemberValueCalc

Field Summary
 
Fields inherited from class mondrian.calc.impl.AbstractCalc
exp, type
 
Constructor Summary
TupleValueCalc(Exp exp, TupleCalc tupleCalc)
          Creates a TupleValueCalc.
 
Method Summary
 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.
 Calc optimize()
          Optimizes the scalar evaluation of a tuple.
 
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, getArguments, getName, getResultStyle, getType, simplifyEvaluator
 
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
 

Constructor Detail

TupleValueCalc

public TupleValueCalc(Exp exp,
                      TupleCalc tupleCalc)
Creates a TupleValueCalc.

Parameters:
exp - Expression
tupleCalc - Compiled expression to evaluate the tuple
Method Detail

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

optimize

public Calc optimize()
Optimizes the scalar evaluation of a tuple. It evaluates the members of the tuple, sets the context to these members, and evaluates the scalar result in one step, without generating a tuple.

This is useful when evaluating calculated members:

WITH MEMBER [Measures].[Sales last quarter]
   AS ' ([Measures].[Unit Sales], [Time].PreviousMember '

Returns:
optimized expression

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