Package mondrian.calc.impl
Class AbstractExpCompiler
- java.lang.Object
-
- mondrian.calc.impl.AbstractExpCompiler
-
- All Implemented Interfaces:
ExpCompiler
- Direct Known Subclasses:
BetterExpCompiler
public class AbstractExpCompiler extends Object implements ExpCompiler
Abstract implementation of theExpCompiler
interface.- Since:
- Sep 29, 2005
- Author:
- jhyde
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface mondrian.calc.ExpCompiler
ExpCompiler.Factory
-
-
Constructor Summary
Constructors Constructor Description AbstractExpCompiler(Evaluator evaluator, Validator validator)
Creates an AbstractExpCompilerAbstractExpCompiler(Evaluator evaluator, Validator validator, List<ResultStyle> resultStyles)
Creates an AbstractExpCompiler which is constrained to produce one of a set of result styles.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Calc
compile(Exp exp)
Compiles an expression.Calc
compileAs(Exp exp, Type resultType, List<ResultStyle> preferredResultTypes)
Compiles an expression to a given result type.BooleanCalc
compileBoolean(Exp exp)
Compiles an expression which yields aboolean
result.DateTimeCalc
compileDateTime(Exp exp)
Compiles an expression which yields aDate
result.DimensionCalc
compileDimension(Exp exp)
Compiles an expression which yields aDimension
result.DoubleCalc
compileDouble(Exp exp)
Compiles an expression which yields adouble
result.HierarchyCalc
compileHierarchy(Exp exp)
Compiles an expression which yields aHierarchy
result.IntegerCalc
compileInteger(Exp exp)
Compiles an expression which yields anint
result.IterCalc
compileIter(Exp exp)
Compiles an expression which yields an immutableIterable
result.LevelCalc
compileLevel(Exp exp)
Compiles an expression which yields aLevel
result.ListCalc
compileList(Exp exp)
Compiles an expression which yields an immutableTupleList
result.ListCalc
compileList(Exp exp, boolean mutable)
Compiles an expression which yieldsTupleList
result.MemberCalc
compileMember(Exp exp)
Compiles an expression which yields aMember
result.Calc
compileScalar(Exp exp, boolean specific)
Compiles an expression to yield a scalar result.StringCalc
compileString(Exp exp)
Compiles an expression which yields aString
result.TupleCalc
compileTuple(Exp exp)
Compiles an expression which yields a tuple result.List<ResultStyle>
getAcceptableResultStyles()
Returns a list of theResultStyle
s acceptable to the caller.Evaluator
getEvaluator()
Returns the evaluator to be used for evaluating expressions during the compilation process.Validator
getValidator()
Returns the validator which was used to validate this expression.ParameterSlot
registerParameter(Parameter parameter)
Implements a parameter, returning a unique slot which will hold the parameter's value.ListCalc
toList(IterCalc calc)
Converts an iterable over tuples to a list of tuples.
-
-
-
Constructor Detail
-
AbstractExpCompiler
public AbstractExpCompiler(Evaluator evaluator, Validator validator)
Creates an AbstractExpCompiler- Parameters:
evaluator
- Evaluatorvalidator
- Validator
-
AbstractExpCompiler
public AbstractExpCompiler(Evaluator evaluator, Validator validator, List<ResultStyle> resultStyles)
Creates an AbstractExpCompiler which is constrained to produce one of a set of result styles.- Parameters:
evaluator
- Evaluatorvalidator
- ValidatorresultStyles
- List of result styles, preferred first, must not be
-
-
Method Detail
-
getEvaluator
public Evaluator getEvaluator()
Description copied from interface:ExpCompiler
Returns the evaluator to be used for evaluating expressions during the compilation process.- Specified by:
getEvaluator
in interfaceExpCompiler
-
getValidator
public Validator getValidator()
Description copied from interface:ExpCompiler
Returns the validator which was used to validate this expression.- Specified by:
getValidator
in interfaceExpCompiler
- Returns:
- validator
-
compile
public Calc compile(Exp exp)
Compiles an expression. Uses the current ResultStyle to compile the expression.- Specified by:
compile
in interfaceExpCompiler
- Parameters:
exp
- Expression- Returns:
- Compiled expression
-
compileAs
public Calc compileAs(Exp exp, Type resultType, List<ResultStyle> preferredResultTypes)
Compiles an expression to a given result type.If
resultType
is not null, casts the expression to that type. Throws an exception if that conversion is not allowed by the type system.The
preferredResultStyles
parameter specifies a list of desired result styles. It must not be null, but may be empty. Uses a new ResultStyle to compile the expression.- Specified by:
compileAs
in interfaceExpCompiler
- Parameters:
exp
- ExpressionresultType
- Desired result type, or null to use expression's current typepreferredResultTypes
- List of result types, in descending order of preference. Never null.- Returns:
- Compiled expression, or null if none can satisfy
-
compileMember
public MemberCalc compileMember(Exp exp)
Description copied from interface:ExpCompiler
Compiles an expression which yields aMember
result.- Specified by:
compileMember
in interfaceExpCompiler
-
compileLevel
public LevelCalc compileLevel(Exp exp)
Description copied from interface:ExpCompiler
Compiles an expression which yields aLevel
result.- Specified by:
compileLevel
in interfaceExpCompiler
-
compileDimension
public DimensionCalc compileDimension(Exp exp)
Description copied from interface:ExpCompiler
Compiles an expression which yields aDimension
result.- Specified by:
compileDimension
in interfaceExpCompiler
-
compileHierarchy
public HierarchyCalc compileHierarchy(Exp exp)
Description copied from interface:ExpCompiler
Compiles an expression which yields aHierarchy
result.- Specified by:
compileHierarchy
in interfaceExpCompiler
-
compileInteger
public IntegerCalc compileInteger(Exp exp)
Description copied from interface:ExpCompiler
Compiles an expression which yields anint
result. The expression is implicitly converted into a scalar.- Specified by:
compileInteger
in interfaceExpCompiler
-
compileString
public StringCalc compileString(Exp exp)
Description copied from interface:ExpCompiler
Compiles an expression which yields aString
result. The expression is implicitly converted into a scalar.- Specified by:
compileString
in interfaceExpCompiler
-
compileDateTime
public DateTimeCalc compileDateTime(Exp exp)
Description copied from interface:ExpCompiler
Compiles an expression which yields aDate
result. The expression is implicitly converted into a scalar.- Specified by:
compileDateTime
in interfaceExpCompiler
-
compileList
public ListCalc compileList(Exp exp)
Description copied from interface:ExpCompiler
Compiles an expression which yields an immutableTupleList
result.Always equivalent to
.ExpCompiler.compileList(mondrian.olap.Exp)
(exp, false)- Specified by:
compileList
in interfaceExpCompiler
-
compileList
public ListCalc compileList(Exp exp, boolean mutable)
Description copied from interface:ExpCompiler
Compiles an expression which yieldsTupleList
result.Such an expression is generally a list of
Member
objects or a list of tuples (each represented by aMember
array).- Specified by:
compileList
in interfaceExpCompiler
- Parameters:
exp
- Expressionmutable
- Whether resulting list is mutable
-
toList
public ListCalc toList(IterCalc calc)
Converts an iterable over tuples to a list of tuples.- Parameters:
calc
- Calc- Returns:
- List calculation.
-
compileIter
public IterCalc compileIter(Exp exp)
Description copied from interface:ExpCompiler
Compiles an expression which yields an immutableIterable
result.- Specified by:
compileIter
in interfaceExpCompiler
- Parameters:
exp
- Expression- Returns:
- Calculator which yields an Iterable
-
compileBoolean
public BooleanCalc compileBoolean(Exp exp)
Description copied from interface:ExpCompiler
Compiles an expression which yields aboolean
result.- Specified by:
compileBoolean
in interfaceExpCompiler
- Parameters:
exp
- Expression- Returns:
- Calculator which yields a boolean
-
compileDouble
public DoubleCalc compileDouble(Exp exp)
Description copied from interface:ExpCompiler
Compiles an expression which yields adouble
result.- Specified by:
compileDouble
in interfaceExpCompiler
- Parameters:
exp
- Expression- Returns:
- Calculator which yields a double
-
compileTuple
public TupleCalc compileTuple(Exp exp)
Description copied from interface:ExpCompiler
Compiles an expression which yields a tuple result.- Specified by:
compileTuple
in interfaceExpCompiler
- Parameters:
exp
- Expression- Returns:
- Calculator which yields a tuple
-
compileScalar
public Calc compileScalar(Exp exp, boolean specific)
Description copied from interface:ExpCompiler
Compiles an expression to yield a scalar result.If the expression yields a member or tuple, the calculator will automatically apply that member or tuple to the current dimensional context and return the value of the current measure.
- Specified by:
compileScalar
in interfaceExpCompiler
- Parameters:
exp
- Expressionspecific
- Whether to try to use the specific compile method for scalar types. For example, ifspecific
is true andexp
is a string expression, callsExpCompiler.compileString(mondrian.olap.Exp)
- Returns:
- Calculation which returns the scalar value of the expression
-
registerParameter
public ParameterSlot registerParameter(Parameter parameter)
Description copied from interface:ExpCompiler
Implements a parameter, returning a unique slot which will hold the parameter's value.- Specified by:
registerParameter
in interfaceExpCompiler
- Parameters:
parameter
- Parameter- Returns:
- Slot
-
getAcceptableResultStyles
public List<ResultStyle> getAcceptableResultStyles()
Description copied from interface:ExpCompiler
Returns a list of theResultStyle
s acceptable to the caller.- Specified by:
getAcceptableResultStyles
in interfaceExpCompiler
-
-