Package mondrian.rolap.sql
Class MemberListCrossJoinArg
- java.lang.Object
-
- mondrian.rolap.sql.MemberListCrossJoinArg
-
- All Implemented Interfaces:
CrossJoinArg
public class MemberListCrossJoinArg extends Object implements CrossJoinArg
Represents an enumeration {member1, member2, ...}. All members must to the same level and are non-calculated.
-
-
Field Summary
-
Fields inherited from interface mondrian.rolap.sql.CrossJoinArg
EMPTY_ARRAY
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddConstraint(SqlQuery sqlQuery, RolapCube baseCube, AggStar aggStar)static CrossJoinArgcreate(RolapEvaluator evaluator, List<RolapMember> args, boolean restrictMemberTypes, boolean exclude)Creates an instance ofCrossJoinArg, or returns null if the arguments are invalid.booleanequals(Object obj)RolapLevelgetLevel()List<RolapMember>getMembers()booleanhasAllMember()booleanhasCalcMembers()inthashCode()booleanisEmptyCrossJoinArg()Returns whether the input CJ arg is empty.booleanisPreferInterpreter(boolean joinArg)
-
-
-
Method Detail
-
create
public static CrossJoinArg create(RolapEvaluator evaluator, List<RolapMember> args, boolean restrictMemberTypes, boolean exclude)
Creates an instance ofCrossJoinArg, or returns null if the arguments are invalid. This method also records properties of the member list such as containing calc/non calc members, and containing the All member.If restrictMemberTypes is set, then the resulting argument could contain calculated members. The newly created CrossJoinArg is marked appropriately for special handling downstream.
If restrictMemberTypes is false, then the resulting argument contains non-calculated members of the same level (after filtering out any null members).
- Parameters:
evaluator- the current evaluatorargs- members in the listrestrictMemberTypes- whether calculated members are allowedexclude- Whether to exclude tuples that match the predicate- Returns:
- MemberListCrossJoinArg if member list is well formed, null if not.
-
getLevel
public RolapLevel getLevel()
- Specified by:
getLevelin interfaceCrossJoinArg
-
getMembers
public List<RolapMember> getMembers()
- Specified by:
getMembersin interfaceCrossJoinArg
-
isPreferInterpreter
public boolean isPreferInterpreter(boolean joinArg)
- Specified by:
isPreferInterpreterin interfaceCrossJoinArg
-
addConstraint
public void addConstraint(SqlQuery sqlQuery, RolapCube baseCube, AggStar aggStar)
- Specified by:
addConstraintin interfaceCrossJoinArg
-
isEmptyCrossJoinArg
public boolean isEmptyCrossJoinArg()
Returns whether the input CJ arg is empty.This is used to selectively push down empty input arg into the native evaluator.
- Returns:
- whether the input CJ arg is empty
-
hasCalcMembers
public boolean hasCalcMembers()
-
hasAllMember
public boolean hasAllMember()
-
-