Class RolapMemberBase
- All Implemented Interfaces:
Comparable
,Annotated
,Member
,OlapElement
,RolapMember
- Direct Known Subclasses:
DelegatingRolapMember
,RolapBaseCubeMeasure
,RolapCalculatedMember
,RolapVirtualCubeMeasure
,VisualTotalsFunDef.VisualTotalMember
RolapHierarchy
.- Since:
- 10 August, 2001
- Author:
- jhyde
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic final class
DefaultRolapMemberBase.PropertyValueMapFactory
implementation, used ifMondrianProperties.PropertyValueMapFactoryClass
is not set.static interface
Interface definition for the pluggable factory used to decide which implementation ofMap
to use to store property string/value pairs for member properties.static final class
Creates the PropertyValueMapFactory which is in turn used to create property-value maps for member properties.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 inherited from class mondrian.olap.MemberBase
flags, level, parentMember, uniqueName
Fields inherited from class mondrian.olap.OlapElementBase
caption, visible
-
Constructor Summary
ModifierConstructorDescriptionprotected
protected
RolapMemberBase
(RolapMember parentMember, RolapLevel level, Object key, String name, Member.MemberType memberType) Creates a RolapMemberBase. -
Method Summary
Modifier and TypeMethodDescriptionprotected boolean
int
Compares this member to anotherRolapMemberBase
.boolean
boolean
boolean
getAllMembers
(SchemaReader schemaReader, Hierarchy hierarchy) Returns a list of member lists where the first member list is the root members while the last member array is the leaf members.Returns a list of annotations.An object value to be formatted further by member formatter.getCompiledExpression
(mondrian.rolap.RolapEvaluatorRoot root) int
getDepth()
returns the depth of this member, which is not the level's depth in case of parent child dimensionsstatic int
getHierarchyCardinality
(SchemaReader schemaReader, Hierarchy hierarchy) int
getKey()
getLevel()
protected org.apache.logging.log4j.Logger
getName()
Returns the order key of this member among its siblings.int
Returns the ordinal of this member within its hierarchy.Returns this member's parent, or null (not the 'null member', as returned byHierarchy.getNullMember()
) if it has no parent.Property[]
Returns the definitions of the properties this member may have.getPropertyFormattedValue
(String propertyName) Returns the formatted value of the property namedpropertyName
.protected Object
getPropertyFromMap
(String propertyName, boolean matchCase) Returns the value of a property by looking it up in the property map.getPropertyValue
(String propertyName) Returns the value of the property namedpropertyName
.getPropertyValue
(String propertyName, boolean matchCase) Returns the value of the property namedpropertyName
, matching according to the required case-sensitivity.int
Returns the solve order of this calculation.int
hashCode()
boolean
Deprecated.boolean
Returns whether this member is computed from aWITH MEMBER
clause in an MDX query.boolean
isHidden()
Returns whether this member is 'hidden', as per the rules which define a ragged hierarchy.boolean
protected static String
keyToString
(Object key) Converts a key to a string to be used as part of the member's name and unique name.void
setCaptionValue
(Object captionValue) void
setContextIn
(RolapEvaluator evaluator) void
Only allowable if the member is part of theWITH
clause of a query.protected void
setOrdinal
(int ordinal, boolean forced) static void
setOrdinals
(SchemaReader schemaReader, Member seedMember) Sets member ordinal values using a Bottom-up/Top-down algorithm.void
setProperty
(String name, Object value) Sets a property of this member to a given value.protected void
setUniqueName
(Object key) Methods inherited from class mondrian.olap.MemberBase
computeCalculated, getAncestorMembers, getCaption, getDataMember, getDescription, getDimension, getExpression, getMemberType, getParentUniqueName, getQualifiedName, getSolveOrder, getUniqueName, isAll, isCalculated, isChildOrEqualTo, isChildOrEqualTo, isEvaluated, isMeasure, isNull, isOnSameHierarchyChain, isOnSameHierarchyChainInternal, isParentChildPhysicalMember, lookupChild
Methods inherited from class mondrian.olap.OlapElementBase
clone, computeHashCode, getLocalized, isVisible, setCaption, toString
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface mondrian.olap.Member
getAncestorMembers, getDataMember, getExpression, getMemberType, getParentUniqueName, getSolveOrder, isAll, isCalculated, isChildOrEqualTo, isEvaluated, isMeasure, isNull, isOnSameHierarchyChain, isParentChildPhysicalMember
Methods inherited from interface mondrian.olap.OlapElement
getCaption, getDescription, getDimension, getLocalized, getQualifiedName, getUniqueName, isVisible, lookupChild
-
Constructor Details
-
RolapMemberBase
protected RolapMemberBase(RolapMember parentMember, RolapLevel level, Object key, String name, Member.MemberType memberType) Creates a RolapMemberBase.- Parameters:
parentMember
- Parent memberlevel
- Level this member belongs tokey
- Key to this member in the underlying RDBMSname
- Name of this membermemberType
- Type of member
-
RolapMemberBase
protected RolapMemberBase()
-
-
Method Details
-
getLogger
protected org.apache.logging.log4j.Logger getLogger()- Specified by:
getLogger
in classOlapElementBase
-
getLevel
- Specified by:
getLevel
in interfaceMember
- Specified by:
getLevel
in interfaceRolapMember
- Overrides:
getLevel
in classMemberBase
-
getHierarchy
- Specified by:
getHierarchy
in interfaceMember
- Specified by:
getHierarchy
in interfaceOlapElement
- Specified by:
getHierarchy
in interfaceRolapMember
- Overrides:
getHierarchy
in classMemberBase
-
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
- Specified by:
getParentMember
in interfaceRolapMember
- Overrides:
getParentMember
in classMemberBase
-
getCaptionValue
An object value to be formatted further by member formatter. Actually, acts like MemberBase#getCaption(), but using not formatted object values. -
setCaptionValue
-
getAnnotationMap
Description copied from interface:Annotated
Returns a list of annotations.The map may be empty, never null.
- Specified by:
getAnnotationMap
in interfaceAnnotated
- Returns:
- Map from annotation name to annotations.
-
hashCode
public int hashCode()- Overrides:
hashCode
in classOlapElementBase
-
equals
- Overrides:
equals
in classOlapElementBase
-
equals
- Overrides:
equals
in classOlapElementBase
-
setUniqueName
-
isCalculatedInQuery
public boolean isCalculatedInQuery()Description copied from interface:Member
Returns whether this member is computed from aWITH MEMBER
clause in an MDX query.- Specified by:
isCalculatedInQuery
in interfaceMember
-
getName
- Specified by:
getName
in interfaceOlapElement
- Specified by:
getName
in classMemberBase
-
setName
Description copied from interface:Member
Only allowable if the member is part of theWITH
clause of a query. -
setProperty
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 interfaceMember
-
getPropertyValue
Description copied from interface:Member
Returns the value of the property namedpropertyName
. Name match is case-sensitive.- Specified by:
getPropertyValue
in interfaceMember
-
getPropertyValue
Description copied from interface:Member
Returns the value of the property namedpropertyName
, matching according to the required case-sensitivity.- Specified by:
getPropertyValue
in interfaceMember
-
getPropertyFromMap
Returns the value of a property by looking it up in the property map.- Parameters:
propertyName
- Name of propertymatchCase
- Whether to match name case-sensitive- Returns:
- Property value
-
childLevelHasApproxRowCount
protected boolean childLevelHasApproxRowCount() -
isAllMember
public boolean isAllMember()Deprecated.UseMemberBase.isAll()
; will be removed in mondrian-4.0- Specified by:
isAllMember
in interfaceRolapMember
-
getProperties
Description copied from interface:Member
Returns the definitions of the properties this member may have.- Specified by:
getProperties
in interfaceMember
-
getOrdinal
public int getOrdinal()Description copied from class:MemberBase
Returns the ordinal of this member within its hierarchy. The default implementation returns -1.- Specified by:
getOrdinal
in interfaceMember
- Overrides:
getOrdinal
in classMemberBase
-
getOrderKey
Description copied from class:MemberBase
Returns the order key of this member among its siblings. The default implementation returns null.- Specified by:
getOrderKey
in interfaceMember
- Overrides:
getOrderKey
in classMemberBase
-
setOrdinal
protected void setOrdinal(int ordinal, boolean forced) -
getKey
- Specified by:
getKey
in interfaceRolapMember
-
compareTo
Compares this member to anotherRolapMemberBase
.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
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, useFunUtil.compareHierarchically(mondrian.olap.Member, mondrian.olap.Member, boolean)
.- Specified by:
compareTo
in interfaceComparable
- Returns:
- -1 if this is less, 0 if this is the same, 1 if this is greater
-
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 interfaceMember
- Overrides:
isHidden
in classMemberBase
-
getDepth
public int getDepth()Description copied from interface:Member
returns the depth of this member, which is not the level's depth in case of parent child dimensions -
getPropertyFormattedValue
Description copied from interface:Member
Returns the formatted value of the property namedpropertyName
.- Specified by:
getPropertyFormattedValue
in interfaceMember
- Overrides:
getPropertyFormattedValue
in classMemberBase
-
isParentChildLeaf
public boolean isParentChildLeaf()- Specified by:
isParentChildLeaf
in interfaceMember
- Overrides:
isParentChildLeaf
in classMemberBase
- Returns:
- True when the member is a leaf member, meaning it has no children
-
getAllMembers
Returns a list of member lists where the first member list is the root members while the last member array is the leaf members.If you know that you will need to get all or most of the members of a hierarchy, then calling this which gets all of the hierarchy's members all at once is much faster than getting members one at a time.
- Parameters:
schemaReader
- Schema readerhierarchy
- Hierarchy- Returns:
- List of arrays of members
-
getHierarchyCardinality
-
setOrdinals
Sets member ordinal values using a Bottom-up/Top-down algorithm.Gets an array of members for each level and traverses array for the lowest level, setting each member's parent's parent's etc. member's ordinal if not set working back down to the leaf member and then going to the next leaf member and traversing up again.
The above algorithm only works for a hierarchy that has all of its leaf members in the same level (that is, a non-ragged hierarchy), which is the norm. After all member ordinal values have been set, traverses the array of members, making sure that all members' ordinals have been set. If one is found that is not set, then one must to a full Top-down setting of the ordinals.
The Bottom-up/Top-down algorithm is MUCH faster than the Top-down algorithm.
- Parameters:
schemaReader
- Schema readerseedMember
- Member
-
keyToString
Converts a key to a string to be used as part of the member's name and unique name.Usually, it just calls
Object.toString()
. But if the key is an integer value represented in a floating-point column, we'd prefer the integer value. For example, one member of the[Sales].[Store SQFT]
dimension comes out "20319.0" but we'd like it to be "20319". -
containsAggregateFunction
public boolean containsAggregateFunction() -
getCompiledExpression
-
getHierarchyOrdinal
public int getHierarchyOrdinal() -
setContextIn
-
getSolveOrder
int getSolveOrder()Returns the solve order of this calculation. Identifies which order calculations are expanded.- Returns:
- Solve order
-
MemberBase.isAll()
; will be removed in mondrian-4.0