Class RolapMemberBase
- java.lang.Object
-
- mondrian.olap.OlapElementBase
-
- mondrian.olap.MemberBase
-
- mondrian.rolap.RolapMemberBase
-
- All Implemented Interfaces:
Comparable
,Annotated
,Member
,OlapElement
,RolapMember
- Direct Known Subclasses:
DelegatingRolapMember
,RolapBaseCubeMeasure
,RolapCalculatedMember
,RolapVirtualCubeMeasure
,VisualTotalsFunDef.VisualTotalMember
public class RolapMemberBase extends MemberBase implements RolapMember
Basic implementation of a member in aRolapHierarchy
.- Since:
- 10 August, 2001
- Author:
- jhyde
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
RolapMemberBase.DefaultPropertyValueMapFactory
DefaultRolapMemberBase.PropertyValueMapFactory
implementation, used ifMondrianProperties.PropertyValueMapFactoryClass
is not set.static interface
RolapMemberBase.PropertyValueMapFactory
Interface definition for the pluggable factory used to decide which implementation ofMap
to use to store property string/value pairs for member properties.static class
RolapMemberBase.PropertyValueMapFactoryFactory
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
Constructors Modifier Constructor Description protected
RolapMemberBase()
protected
RolapMemberBase(RolapMember parentMember, RolapLevel level, Object key, String name, Member.MemberType memberType)
Creates a RolapMemberBase.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected boolean
childLevelHasApproxRowCount()
int
compareTo(Object o)
Compares this member to anotherRolapMemberBase
.boolean
containsAggregateFunction()
boolean
equals(Object o)
boolean
equals(OlapElement o)
static List<List<Member>>
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.Map<String,Annotation>
getAnnotationMap()
Returns a list of annotations.Object
getCaptionValue()
An object value to be formatted further by member formatter.Calc
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 dimensionsRolapHierarchy
getHierarchy()
static int
getHierarchyCardinality(SchemaReader schemaReader, Hierarchy hierarchy)
int
getHierarchyOrdinal()
Object
getKey()
RolapLevel
getLevel()
protected org.apache.logging.log4j.Logger
getLogger()
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.RolapMember
getParentMember()
Returns this member's parent, or null (not the 'null member', as returned byHierarchy.getNullMember()
) if it has no parent.Property[]
getProperties()
Returns the definitions of the properties this member may have.String
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.Object
getPropertyValue(String propertyName)
Returns the value of the property namedpropertyName
.Object
getPropertyValue(String propertyName, boolean matchCase)
Returns the value of the property namedpropertyName
, matching according to the required case-sensitivity.int
getSolveOrder()
Returns the solve order of this calculation.int
hashCode()
boolean
isAllMember()
Deprecated.UseMemberBase.isAll()
; will be removed in mondrian-4.0boolean
isCalculatedInQuery()
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
isParentChildLeaf()
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
setName(String name)
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 Detail
-
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 Detail
-
getLogger
protected org.apache.logging.log4j.Logger getLogger()
- Specified by:
getLogger
in classOlapElementBase
-
getLevel
public RolapLevel getLevel()
- Specified by:
getLevel
in interfaceMember
- Specified by:
getLevel
in interfaceRolapMember
- Overrides:
getLevel
in classMemberBase
-
getHierarchy
public RolapHierarchy getHierarchy()
- Specified by:
getHierarchy
in interfaceMember
- Specified by:
getHierarchy
in interfaceOlapElement
- Specified by:
getHierarchy
in interfaceRolapMember
- Overrides:
getHierarchy
in classMemberBase
-
getParentMember
public RolapMember 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
public Object getCaptionValue()
An object value to be formatted further by member formatter. Actually, acts like MemberBase#getCaption(), but using not formatted object values.
-
setCaptionValue
public void setCaptionValue(Object captionValue)
-
getAnnotationMap
public Map<String,Annotation> 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
public boolean equals(Object o)
- Overrides:
equals
in classOlapElementBase
-
equals
public boolean equals(OlapElement o)
- Overrides:
equals
in classOlapElementBase
-
setUniqueName
protected void setUniqueName(Object key)
-
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
public String getName()
- Specified by:
getName
in interfaceOlapElement
- Specified by:
getName
in classMemberBase
-
setName
public void setName(String name)
Description copied from interface:Member
Only allowable if the member is part of theWITH
clause of a query.
-
setProperty
public void setProperty(String name, Object value)
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
public Object getPropertyValue(String propertyName)
Description copied from interface:Member
Returns the value of the property namedpropertyName
. Name match is case-sensitive.- Specified by:
getPropertyValue
in interfaceMember
-
getPropertyValue
public Object getPropertyValue(String propertyName, boolean matchCase)
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
protected Object getPropertyFromMap(String propertyName, boolean matchCase)
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
public Property[] 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
public Comparable 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
public Object getKey()
- Specified by:
getKey
in interfaceRolapMember
-
compareTo
public int compareTo(Object o)
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
public String getPropertyFormattedValue(String propertyName)
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
public static List<List<Member>> 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.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
public static int getHierarchyCardinality(SchemaReader schemaReader, Hierarchy hierarchy)
-
setOrdinals
public static void setOrdinals(SchemaReader schemaReader, Member seedMember)
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
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.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
public Calc getCompiledExpression(mondrian.rolap.RolapEvaluatorRoot root)
-
getHierarchyOrdinal
public int getHierarchyOrdinal()
-
setContextIn
public void setContextIn(RolapEvaluator evaluator)
-
getSolveOrder
public abstract int getSolveOrder()
Returns the solve order of this calculation. Identifies which order calculations are expanded.- Returns:
- Solve order
-
-