Package mondrian.calc
Interface Calc
-
- All Known Subinterfaces:
BooleanCalc
,DateTimeCalc
,DimensionCalc
,DoubleCalc
,HierarchyCalc
,IntegerCalc
,IterCalc
,LevelCalc
,ListCalc
,MemberCalc
,StringCalc
,TupleCalc
,VoidCalc
- All Known Implementing Classes:
AbstractBooleanCalc
,AbstractCalc
,AbstractDateTimeCalc
,AbstractDimensionCalc
,AbstractDoubleCalc
,AbstractHierarchyCalc
,AbstractIntegerCalc
,AbstractIterCalc
,AbstractLevelCalc
,AbstractListCalc
,AbstractMemberCalc
,AbstractStringCalc
,AbstractTupleCalc
,AbstractVoidCalc
,AggregateFunDef.AggregateCalc
,CacheCalc
,ConstantCalc
,GenericCalc
,GenericIterCalc
,HierarchyCurrentMemberFunDef.CalcImpl
,HierarchyCurrentMemberFunDef.FixedCalcImpl
,HierarchyDimensionFunDef.CalcImpl
,IterableListCalc
,LevelHierarchyFunDef.CalcImpl
,MemberArrayValueCalc
,MemberHierarchyFunDef.CalcImpl
,MemberLevelFunDef.CalcImpl
,MemberOrderKeyFunDef.CalcImpl
,MemberValueCalc
,NativizeSetFunDef.NativeListCalc
,SetFunDef.ExprIterCalc
,SetFunDef.SetListCalc
,TupleFunDef.CalcImpl
,TupleValueCalc
,ValueCalc
public interface Calc
Calc
is the base class for all calculable expressions.Logical and physical expression languages
Mondrian has two expression languages:- The logical language of parsed MDX fragments (
Exp
). - The phyiscal language of compiled expressions (
Calc
).
<Member>.CurrentMember
function) are made explicit in the physical language.Compilation
Expressions are generally created from using an expression compiler (ExpCompiler
). There are often more than one evaluation strategy for a given expression, and compilation process gives us an opportunity to choose the optimal one.Implementing expressions
TheCalc
interface has sub-interfaces for various types:IntegerCalc
,BooleanCalc
,DoubleCalc
,StringCalc
are scalar expressions;MemberCalc
,LevelCalc
,HierarchyCalc
,DimensionCalc
yield elements of the OLAP model. Each of these sub-interfaces has an abstract implementation:AbstractIntegerCalc
,AbstractBooleanCalc
,AbstractDoubleCalc
,AbstractStringCalc
,AbstractMemberCalc
,AbstractLevelCalc
,AbstractHierarchyCalc
,AbstractDimensionCalc
.GenericCalc
is an adapter which implements all of these interfaces and will try to convert any given result to the correct type. Use it sparingly: if you know the expected result type, it is better to write a class which implements a specificTypeCalc
interface.- Since:
- Sep 26, 2005
- Author:
- jhyde
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description void
accept(CalcWriter calcWriter)
Prints this expression, by accepting a visitingCalcWriter
.boolean
dependsOn(Hierarchy hierarchy)
Returns whether this expression depends upon a given hierarchy.Object
evaluate(Evaluator evaluator)
Evaluates this expression.ResultStyle
getResultStyle()
Returns style in which the result of evaluating this expression is returned.Type
getType()
Returns the type of this expression.boolean
isWrapperFor(Class<?> iface)
<T> T
unwrap(Class<T> iface)
-
-
-
Method Detail
-
evaluate
Object evaluate(Evaluator evaluator)
Evaluates this expression.- Parameters:
evaluator
- Provides dimensional context in which to evaluate this expression- Returns:
- Result of expression evaluation
-
dependsOn
boolean dependsOn(Hierarchy hierarchy)
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
depends on all dimensions except[Measures].[Unit Sales]
[Measures]
. - The boolean expression
depends on all hierarchies except [Measures] and [Time].([Measures].[Unit Sales], [Time].[1997]) > 1000
- The list expression
depends upon all hierarchies except [Store] and [Measures]. How so? Normally the scalar expression would depend upon all hierarchies except [Measures], but theFilter([Store].[USA].Children, [Measures].[Unit Sales] < 50)
Filter
function sets the [Store] context before evaluating the scalar expression, so it is not inherited from the surrounding context.
- Parameters:
hierarchy
- Hierarchy- Returns:
- Whether this expression's result depends upon the current member of the hierarchy
- The expression
-
getType
Type getType()
Returns the type of this expression.
-
accept
void accept(CalcWriter calcWriter)
Prints this expression, by accepting a visitingCalcWriter
.- Parameters:
calcWriter
- Writer
-
getResultStyle
ResultStyle getResultStyle()
Returns style in which the result of evaluating this expression is returned.One application of this method is for the compiler to figure out whether the compiled expression is returning a mutable list. If a mutable list is required, the compiler can create a mutable copy.
-
isWrapperFor
boolean isWrapperFor(Class<?> iface)
-
unwrap
<T> T unwrap(Class<T> iface)
-
-