public interface Calc
Calc is the base class for all calculable expressions.
 Exp).
 Calc).
 <Member>.CurrentMember function) are made
 explicit in the physical language.
 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.
 Calc 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 specific TypeCalc interface.| Modifier and Type | Method and Description | 
|---|---|
void | 
accept(CalcWriter calcWriter)
Prints this expression, by accepting a visiting  
CalcWriter. | 
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)  | 
Object evaluate(Evaluator evaluator)
evaluator - Provides dimensional context in which to evaluate
                  this expressionboolean dependsOn(Hierarchy 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:[Measures].[Unit Sales]
 depends on all dimensions except [Measures].
 ([Measures].[Unit Sales],
 [Time].[1997]) > 1000
 depends on all hierarchies except [Measures] and [Time].
 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.
 hierarchy - HierarchyType getType()
void accept(CalcWriter calcWriter)
CalcWriter.calcWriter - WriterResultStyle getResultStyle()
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.
boolean isWrapperFor(Class<?> iface)
<T> T unwrap(Class<T> iface)
Copyright © 2017 Hitachi Vantara. All rights reserved.