Class MemberBase
- java.lang.Object
-
- mondrian.olap.OlapElementBase
-
- mondrian.olap.MemberBase
-
- All Implemented Interfaces:
Comparable
,Annotated
,Member
,OlapElement
- Direct Known Subclasses:
RolapMemberBase
public abstract class MemberBase extends OlapElementBase implements Member
MemberBase
is a partial implementation ofMember
.- Since:
- 6 August, 2001
- Author:
- jhyde
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface mondrian.olap.Member
Member.MemberType
-
Nested classes/interfaces inherited from interface mondrian.olap.OlapElement
OlapElement.LocalizedProperty
-
-
Field Summary
Fields Modifier and Type Field Description protected 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.protected Level
level
protected Member
parentMember
protected String
uniqueName
-
Fields inherited from class mondrian.olap.OlapElementBase
caption, visible
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
MemberBase()
protected
MemberBase(Member parentMember, Level level, Member.MemberType memberType)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected boolean
computeCalculated(Member.MemberType memberType)
Computes the value to be returned byisCalculated()
, so it can be cached in a variable.List<Member>
getAncestorMembers()
Returns a list of the ancestor members of this member.String
getCaption()
Returns the display name of this catalog element.Member
getDataMember()
Returns the system-generated data member that is associated with a nonleaf member of a dimension.String
getDescription()
Dimension
getDimension()
Returns the dimension of a this expression, or null if no dimension is defined.Exp
getExpression()
Returns the expression by which this member is calculated.Hierarchy
getHierarchy()
Level
getLevel()
Member.MemberType
getMemberType()
Returns the type of member.abstract String
getName()
Comparable
getOrderKey()
Returns the order key of this member among its siblings.int
getOrdinal()
Returns the ordinal of this member within its hierarchy.Member
getParentMember()
Returns this member's parent, or null (not the 'null member', as returned byHierarchy.getNullMember()
) if it has no parent.String
getParentUniqueName()
Returns name of parent member, or empty string (not null) if we are the root.String
getPropertyFormattedValue(String propertyName)
Returns the formatted value of the property namedpropertyName
.String
getQualifiedName()
Returns the name of this element qualified by its class, for example "hierarchy 'Customers'".int
getSolveOrder()
String
getUniqueName()
boolean
isAll()
Returns whether this is the 'all' member.boolean
isCalculated()
Returns whether this member is computed using either awith member
clause in an mdx query or a calculated member defined in cube.boolean
isChildOrEqualTo(String uniqueName)
Returns whether thisMember
's unique name is equal to, a child of, or a descendent of a member whose unique name isuniqueName
.boolean
isChildOrEqualTo(Member member)
Returns whethermember
is equal to, a child, or a descendent of thisMember
.boolean
isEvaluated()
Returns whether this member should be evaluated within the Evaluator.boolean
isHidden()
Returns whether this member is 'hidden', as per the rules which define a ragged hierarchy.boolean
isMeasure()
Returns whether this is a member of the measures dimension.boolean
isNull()
Returns whether this is the 'null member'.boolean
isOnSameHierarchyChain(Member otherMember)
Returns true if this member is on the same hierarchy chain asotherMember
.boolean
isOnSameHierarchyChainInternal(MemberBase otherMember)
boolean
isParentChildLeaf()
boolean
isParentChildPhysicalMember()
OlapElement
lookupChild(SchemaReader schemaReader, Id.Segment childName, MatchType matchType)
Looks up a child element, returning null if it does not exist.-
Methods inherited from class mondrian.olap.OlapElementBase
clone, computeHashCode, equals, equals, getLocalized, getLogger, hashCode, isVisible, setCaption, toString
-
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface mondrian.olap.Annotated
getAnnotationMap
-
Methods inherited from interface java.lang.Comparable
compareTo
-
Methods inherited from interface mondrian.olap.Member
getDepth, getProperties, getPropertyValue, getPropertyValue, isCalculatedInQuery, setName, setProperty
-
Methods inherited from interface mondrian.olap.OlapElement
getLocalized, isVisible
-
-
-
-
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.
- bits 0, 1, 2 (
-
-
Constructor Detail
-
MemberBase
protected MemberBase(Member parentMember, Level level, Member.MemberType memberType)
-
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 interfaceOlapElement
-
getName
public abstract String getName()
- Specified by:
getName
in interfaceOlapElement
-
getUniqueName
public String getUniqueName()
- Specified by:
getUniqueName
in interfaceOlapElement
-
getCaption
public String getCaption()
Description copied from class:OlapElementBase
Returns the display name of this catalog element. If no caption is defined, the name is returned.- Specified by:
getCaption
in interfaceOlapElement
- Overrides:
getCaption
in classOlapElementBase
-
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 interfaceMember
-
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:
has dimension[Sales].children
[Sales]
.Example 2:
has dimension [Promotion Media].order(except([Promotion Media].[Media Type].members, {[Promotion Media].[Media Type].[No Media]}), [Measures].[Unit Sales], DESC)
Example 3:
has no dimension (well, actually it is [Product] x [Gender], but we can't represent that, so we return null);CrossJoin([Product].[Product Department].members, [Gender].members)
- Specified by:
getDimension
in interfaceOlapElement
-
getHierarchy
public Hierarchy getHierarchy()
- Specified by:
getHierarchy
in interfaceMember
- Specified by:
getHierarchy
in interfaceOlapElement
-
getMemberType
public Member.MemberType getMemberType()
Description copied from interface:Member
Returns the type of member.- Specified by:
getMemberType
in interfaceMember
-
getDescription
public String getDescription()
- Specified by:
getDescription
in interfaceOlapElement
-
isMeasure
public boolean isMeasure()
Description copied from interface:Member
Returns whether this is a member of the measures dimension.
-
isAll
public boolean isAll()
Description copied from interface:Member
Returns whether this is the 'all' member.
-
isNull
public boolean isNull()
Description copied from interface:Member
Returns whether this is the 'null member'.
-
isCalculated
public boolean isCalculated()
Description copied from interface:Member
Returns whether this member is computed using either awith member
clause in an mdx query or a calculated member defined in cube.- Specified by:
isCalculated
in interfaceMember
-
isEvaluated
public boolean isEvaluated()
Description copied from interface:Member
Returns whether this member should be evaluated within the Evaluator.Normally
Member.isCalculated()
andMember.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 interfaceMember
- Returns:
- true if evaluated
-
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 interfaceOlapElement
-
getParentMember
public Member getParentMember()
Description copied from interface:Member
Returns this member's parent, or null (not the 'null member', as returned byHierarchy.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 interfaceMember
-
isChildOrEqualTo
public boolean isChildOrEqualTo(Member member)
Description copied from interface:Member
Returns whethermember
is equal to, a child, or a descendent of thisMember
.- Specified by:
isChildOrEqualTo
in interfaceMember
-
isChildOrEqualTo
public boolean isChildOrEqualTo(String uniqueName)
Returns whether thisMember
's unique name is equal to, a child of, or a descendent of a member whose unique name isuniqueName
.
-
computeCalculated
protected boolean computeCalculated(Member.MemberType memberType)
Computes the value to be returned byisCalculated()
, so it can be cached in a variable.- Parameters:
memberType
- Member type- Returns:
- Whether this member is calculated
-
getSolveOrder
public int getSolveOrder()
- Specified by:
getSolveOrder
in interfaceMember
-
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 interfaceMember
-
getAncestorMembers
public List<Member> getAncestorMembers()
Description copied from interface:Member
Returns a list of the ancestor members of this member.- Specified by:
getAncestorMembers
in interfaceMember
-
getOrdinal
public int getOrdinal()
Returns the ordinal of this member within its hierarchy. The default implementation returns -1.- Specified by:
getOrdinal
in interfaceMember
-
getOrderKey
public Comparable getOrderKey()
Returns the order key of this member among its siblings. The default implementation returns null.- Specified by:
getOrderKey
in interfaceMember
-
isHidden
public boolean isHidden()
Description copied from interface:Member
Returns whether this member is 'hidden', as per the rules which define a ragged hierarchy.
-
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 interfaceMember
-
getPropertyFormattedValue
public String getPropertyFormattedValue(String propertyName)
Description copied from interface:Member
Returns the formatted value of the property namedpropertyName
.- Specified by:
getPropertyFormattedValue
in interfaceMember
-
isParentChildPhysicalMember
public boolean isParentChildPhysicalMember()
- Specified by:
isParentChildPhysicalMember
in interfaceMember
- 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 interfaceMember
- 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 asotherMember
.- Specified by:
isOnSameHierarchyChain
in interfaceMember
- Returns:
-
isOnSameHierarchyChainInternal
public boolean isOnSameHierarchyChainInternal(MemberBase otherMember)
-
-