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.
  • Method Details

    • create

      public static CrossJoinArg create(RolapEvaluator evaluator, List<RolapMember> args, boolean restrictMemberTypes, boolean exclude)
      Creates an instance of CrossJoinArg, 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 evaluator
      args - members in the list
      restrictMemberTypes - whether calculated members are allowed
      exclude - 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:
      getLevel in interface CrossJoinArg
    • getMembers

      public List<RolapMember> getMembers()
      Specified by:
      getMembers in interface CrossJoinArg
    • isPreferInterpreter

      public boolean isPreferInterpreter(boolean joinArg)
      Specified by:
      isPreferInterpreter in interface CrossJoinArg
    • addConstraint

      public void addConstraint(SqlQuery sqlQuery, RolapCube baseCube, AggStar aggStar)
      Specified by:
      addConstraint in interface CrossJoinArg
    • 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()
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object