Package mondrian.olap

Class MemberBase

    • Field Detail

      • parentMember

        protected Member parentMember
      • level

        protected final Level level
      • uniqueName

        protected String uniqueName
      • flags

        protected final int flags
        Combines member type and other properties, such as whether the member is the 'all' or 'null' member of its hierarchy and whether it is a measure or is calculated, into an integer field.

        The fields are:

        • bits 0, 1, 2 (FLAG_TYPE_MASK) are member type;
        • bit 3 (FLAG_HIDDEN) is set if the member is hidden;
        • bit 4 (FLAG_ALL) is set if this is the all member of its hierarchy;
        • bit 5 (FLAG_NULL) is set if this is the null member of its hierarchy;
        • bit 6 (FLAG_CALCULATED) is set if this is a calculated member.
        • bit 7 (FLAG_MEASURE) is set if this is a measure.

        NOTE: jhyde, 2007/8/10. It is necessary to cache whether the member is 'all', 'calculated' or 'null' in the member's state, because these properties are used so often. If we used a virtual method call - say we made each subclass implement 'boolean isNull()' - it would be slower. We use one flags field rather than 4 boolean fields to save space.

    • Constructor Detail

      • MemberBase

        protected MemberBase()
    • Method Detail

      • getQualifiedName

        public String getQualifiedName()
        Description copied from interface: OlapElement
        Returns the name of this element qualified by its class, for example "hierarchy 'Customers'".
        Specified by:
        getQualifiedName in interface OlapElement
      • getParentUniqueName

        public String getParentUniqueName()
        Description copied from interface: Member
        Returns name of parent member, or empty string (not null) if we are the root.
        Specified by:
        getParentUniqueName in interface Member
      • getDimension

        public Dimension 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
      • isMeasure

        public boolean isMeasure()
        Description copied from interface: Member
        Returns whether this is a member of the measures dimension.
        Specified by:
        isMeasure in interface Member
      • isAll

        public boolean isAll()
        Description copied from interface: Member
        Returns whether this is the 'all' member.
        Specified by:
        isAll in interface Member
      • isNull

        public boolean isNull()
        Description copied from interface: Member
        Returns whether this is the 'null member'.
        Specified by:
        isNull in interface Member
      • isCalculated

        public boolean isCalculated()
        Description copied from interface: Member
        Returns whether this member is computed using either a with member clause in an mdx query or a calculated member defined in cube.
        Specified by:
        isCalculated in interface Member
      • isEvaluated

        public boolean isEvaluated()
        Description copied from interface: Member
        Returns whether this member should be evaluated within the Evaluator.

        Normally Member.isCalculated() and Member.isEvaluated() should return the same value, but in situations where mondrian would like to treat the two concepts separately such in role based security, these values may differ.

        Specified by:
        isEvaluated in interface Member
        Returns:
        true if evaluated
      • isChildOrEqualTo

        public boolean isChildOrEqualTo​(Member member)
        Description copied from interface: Member
        Returns whether member is equal to, a child, or a descendent of this Member.
        Specified by:
        isChildOrEqualTo in interface Member
      • isChildOrEqualTo

        public boolean isChildOrEqualTo​(String uniqueName)
        Returns whether this Member's unique name is equal to, a child of, or a descendent of a member whose unique name is uniqueName.
      • computeCalculated

        protected boolean computeCalculated​(Member.MemberType memberType)
        Computes the value to be returned by isCalculated(), so it can be cached in a variable.
        Parameters:
        memberType - Member type
        Returns:
        Whether this member is calculated
      • getExpression

        public Exp getExpression()
        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
      • getAncestorMembers

        public List<Member> getAncestorMembers()
        Description copied from interface: Member
        Returns a list of the ancestor members of this member.
        Specified by:
        getAncestorMembers in interface Member
      • getOrdinal

        public int getOrdinal()
        Returns the ordinal of this member within its hierarchy. The default implementation returns -1.
        Specified by:
        getOrdinal in interface Member
      • getOrderKey

        public Comparable getOrderKey()
        Returns the order key of this member among its siblings. The default implementation returns null.
        Specified by:
        getOrderKey in interface Member
      • isHidden

        public boolean isHidden()
        Description copied from interface: Member
        Returns whether this member is 'hidden', as per the rules which define a ragged hierarchy.
        Specified by:
        isHidden in interface Member
      • getDataMember

        public Member 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
      • getPropertyFormattedValue

        public String getPropertyFormattedValue​(String propertyName)
        Description copied from interface: Member
        Returns the formatted value of the property named propertyName.
        Specified by:
        getPropertyFormattedValue in interface Member
      • isParentChildPhysicalMember

        public boolean isParentChildPhysicalMember()
        Specified by:
        isParentChildPhysicalMember in interface Member
        Returns:
        True when the member is part of a Parent-Child hierarchy and it is a physical member. In a Parent Child Hierarchy without a closure table, each member needs to be treated as calculated. We need a way to distinguish between true calculated members and physical members that exist in the source data
      • isParentChildLeaf

        public boolean isParentChildLeaf()
        Specified by:
        isParentChildLeaf in interface Member
        Returns:
        True when the member is a leaf member, meaning it has no children
      • isOnSameHierarchyChain

        public boolean isOnSameHierarchyChain​(Member otherMember)
        Description copied from interface: Member
        Returns true if this member is on the same hierarchy chain as otherMember.
        Specified by:
        isOnSameHierarchyChain in interface Member
        Returns:
      • isOnSameHierarchyChainInternal

        public boolean isOnSameHierarchyChainInternal​(MemberBase otherMember)