Class RolapCubeMember

All Implemented Interfaces:
Comparable, Annotated, Member, OlapElement, RolapMember, RolapMemberInCube
Direct Known Subclasses:
RolapHierarchy.LimitedRollupMember

public class RolapCubeMember extends DelegatingRolapMember implements RolapMemberInCube
RolapCubeMember wraps RolapMembers and binds them to a specific cube. RolapCubeMember wraps or overrides RolapMember methods that directly reference the wrapped Member. Methods that only contain calls to other methods do not need wrapped.
Author:
Will Gorman, 19 October 2007
  • Field Details

  • Constructor Details

    • RolapCubeMember

      public RolapCubeMember(RolapCubeMember parent, RolapMember member, RolapCubeLevel cubeLevel)
      Creates a RolapCubeMember.
      Parameters:
      parent - Parent member
      member - Member of underlying (non-cube) hierarchy
      cubeLevel - Level
  • Method Details

    • getUniqueName

      public String getUniqueName()
      Specified by:
      getUniqueName in interface OlapElement
      Overrides:
      getUniqueName in class DelegatingRolapMember
    • getRolapMember

      public final RolapMember getRolapMember()
      Returns the underlying member. This is a member of a shared dimension and does not belong to a cube.
      Returns:
      Underlying member
    • getCube

      public final RolapCube getCube()
      Description copied from interface: RolapMemberInCube
      Returns the cube this cube member belongs to.

      This method is not in the RolapMember interface, because regular members may be shared, and therefore do not belong to a specific cube.

      Specified by:
      getCube in interface RolapMemberInCube
      Returns:
      Cube this cube member belongs to, never null
    • getDataMember

      public final RolapCubeMember getDataMember()
      Description copied from interface: Member
      Returns the system-generated data member that is associated with a nonleaf member of a dimension.

      Returns this member if this member is a leaf member, or if the nonleaf member does not have an associated data member.

      Specified by:
      getDataMember in interface Member
      Overrides:
      getDataMember in class DelegatingRolapMember
    • compareTo

      public int compareTo(Object o)
      Description copied from class: RolapMemberBase
      Compares this member to another RolapMemberBase.

      The method first compares on keys; null keys always collate last. If the keys are equal, it compares using unique name.

      This method does not consider RolapMemberBase.ordinal field, because ordinal is only unique within a parent. If you want to compare members which may be at any position in the hierarchy, use FunUtil.compareHierarchically(mondrian.olap.Member, mondrian.olap.Member, boolean).

      Specified by:
      compareTo in interface Comparable
      Overrides:
      compareTo in class DelegatingRolapMember
      Returns:
      -1 if this is less, 0 if this is the same, 1 if this is greater
    • toString

      public String toString()
      Overrides:
      toString in class OlapElementBase
    • hashCode

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

      public boolean equals(Object o)
      Overrides:
      equals in class RolapMemberBase
    • equals

      public boolean equals(OlapElement o)
      Overrides:
      equals in class RolapMemberBase
    • getHierarchy

      public final RolapCubeHierarchy getHierarchy()
      Specified by:
      getHierarchy in interface Member
      Specified by:
      getHierarchy in interface OlapElement
      Specified by:
      getHierarchy in interface RolapMember
      Overrides:
      getHierarchy in class DelegatingRolapMember
    • getDimension

      public final RolapCubeDimension getDimension()
      Description copied from interface: OlapElement
      Returns the dimension of a this expression, or null if no dimension is defined. Applicable only to set expressions.

      Example 1:

       [Sales].children
       
      has dimension [Sales].

      Example 2:

       order(except([Promotion Media].[Media Type].members,
                    {[Promotion Media].[Media Type].[No Media]}),
             [Measures].[Unit Sales], DESC)
       
      has dimension [Promotion Media].

      Example 3:

       CrossJoin([Product].[Product Department].members,
                 [Gender].members)
       
      has no dimension (well, actually it is [Product] x [Gender], but we can't represent that, so we return null);

      Specified by:
      getDimension in interface OlapElement
      Overrides:
      getDimension in class DelegatingRolapMember
    • getLevel

      public final RolapCubeLevel getLevel()

      This method is central to how RolapCubeMember works. It allows a member from the cache to be used within different usages of the same shared dimension. The cache member is the same, but the RolapCubeMembers wrapping the cache member report that they belong to different levels, and hence different hierarchies, dimensions, and cubes.

      Specified by:
      getLevel in interface Member
      Specified by:
      getLevel in interface RolapMember
      Overrides:
      getLevel in class DelegatingRolapMember
    • setProperty

      public void setProperty(String name, Object value)
      Description copied from class: RolapMemberBase
      Sets a property of this member to a given value.

      WARNING: Setting system properties such as "$name" may have nasty side-effects.

      Specified by:
      setProperty in interface Member
      Overrides:
      setProperty in class DelegatingRolapMember
    • getPropertyValue

      public Object getPropertyValue(String propertyName, boolean matchCase)
      Description copied from interface: Member
      Returns the value of the property named propertyName, matching according to the required case-sensitivity.
      Specified by:
      getPropertyValue in interface Member
      Overrides:
      getPropertyValue in class DelegatingRolapMember
    • getPropertyValue

      public Object getPropertyValue(String propertyName)
      Description copied from interface: Member
      Returns the value of the property named propertyName. Name match is case-sensitive.
      Specified by:
      getPropertyValue in interface Member
      Overrides:
      getPropertyValue in class DelegatingRolapMember
    • getParentMember

      public final RolapCubeMember getParentMember()
      Description copied from interface: Member
      Returns this member's parent, or null (not the 'null member', as returned by Hierarchy.getNullMember()) if it has no parent.

      In an access-control context, a member may have no visible parents, so use SchemaReader.getMemberParent(mondrian.olap.Member).

      Specified by:
      getParentMember in interface Member
      Specified by:
      getParentMember in interface RolapMember
      Overrides:
      getParentMember in class DelegatingRolapMember
    • getExpression

      public Exp getExpression()
      Description copied from class: MemberBase
      Returns the expression by which this member is calculated. The expression is not null if and only if the member is not calculated.
      Specified by:
      getExpression in interface Member
      Overrides:
      getExpression in class DelegatingRolapMember
    • lookupChild

      public OlapElement lookupChild(SchemaReader schemaReader, Id.Segment childName, MatchType matchType)
      Description copied from interface: OlapElement
      Looks up a child element, returning null if it does not exist.
      Specified by:
      lookupChild in interface OlapElement
      Overrides:
      lookupChild in class DelegatingRolapMember
    • setContextIn

      void setContextIn(RolapEvaluator evaluator)
      Pushes this calculated member or tuple onto the stack of evaluation contexts, and sets the context to the default member of the hierarchy.
      Parameters:
      evaluator - Evaluator
    • getSolveOrder

      int getSolveOrder()
      Returns the solve order of this calculation. Identifies which order calculations are expanded.
      Returns:
      Solve order
    • getHierarchyOrdinal

      int getHierarchyOrdinal()
      Returns the ordinal of this calculation; to resolve ties.
      Returns:
      Ordinal or calculation
    • isCalculatedInQuery

      boolean isCalculatedInQuery()
      Returns whether this calculation is a member is computed from a WITH MEMBER clause in an MDX query.
      Returns:
      whether this calculation is computed in an MDX query
    • getCompiledExpression

      Calc getCompiledExpression(mondrian.rolap.RolapEvaluatorRoot root)
      Returns the compiled expression to evaluate the scalar value of the current cell. This method will be called frequently, so the implementation should probably compile once and cache the result.
      Parameters:
      root - Root evaluation context
      Returns:
      Compiled scalar expression
    • containsAggregateFunction

      boolean containsAggregateFunction()
      Returns whether this calculation contains an aggregate function.
      Returns:
      Whether this calculation contains an aggregate function.