Package mondrian.rolap
Class SmartRestrictedMemberReader
- java.lang.Object
-
- mondrian.rolap.DelegatingMemberReader
-
- mondrian.rolap.RestrictedMemberReader
-
- mondrian.rolap.SmartRestrictedMemberReader
-
- All Implemented Interfaces:
MemberReader
,MemberSource
class SmartRestrictedMemberReader extends RestrictedMemberReader
ASmartRestrictedMemberReader
is a subclass ofRestrictedMemberReader
which caches the access rights per children's list. We place them in this throw-away object to speed up partial rollup calculations.The speed improvement is noticeable when dealing with very big dimensions with a lot of branches (like a parent-child hierarchy) because the 'partial' rollup policy forces us to navigate the tree and find the lowest level to rollup to and then figure out all of the children on which to constraint the SQL query.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class mondrian.rolap.RestrictedMemberReader
RestrictedMemberReader.MultiCardinalityDefaultMember
-
-
Field Summary
Fields Modifier and Type Field Description (package private) java.util.concurrent.locks.ReadWriteLock
lock
(package private) java.util.Map<RolapMember,mondrian.rolap.SmartRestrictedMemberReader.AccessAwareMemberList>
memberToChildren
-
Fields inherited from class mondrian.rolap.RestrictedMemberReader
role
-
Fields inherited from class mondrian.rolap.DelegatingMemberReader
memberReader
-
-
Constructor Summary
Constructors Constructor Description SmartRestrictedMemberReader(MemberReader memberReader, Role role)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.Map<? extends Member,Access>
getMemberChildren(RolapMember member, java.util.List<RolapMember> children, MemberChildrenConstraint constraint)
Populates a list of the children of a Member, optionally applying a constraint.-
Methods inherited from class mondrian.rolap.RestrictedMemberReader
getDefaultMember, getLeadMember, getMemberChildren, getMemberChildren, getMemberChildren, getMemberParent, getMembersInLevel, getMembersInLevel, getRootMembers, setCache
-
Methods inherited from class mondrian.rolap.DelegatingMemberReader
compare, desubstitute, getHierarchy, getLevelMemberCount, getMemberBuilder, getMemberByKey, getMemberCount, getMemberRange, getMembers, lookupMember, substitute
-
-
-
-
Field Detail
-
memberToChildren
final java.util.Map<RolapMember,mondrian.rolap.SmartRestrictedMemberReader.AccessAwareMemberList> memberToChildren
-
lock
final java.util.concurrent.locks.ReadWriteLock lock
-
-
Constructor Detail
-
SmartRestrictedMemberReader
SmartRestrictedMemberReader(MemberReader memberReader, Role role)
-
-
Method Detail
-
getMemberChildren
public java.util.Map<? extends Member,Access> getMemberChildren(RolapMember member, java.util.List<RolapMember> children, MemberChildrenConstraint constraint)
Description copied from interface:MemberReader
Populates a list of the children of a Member, optionally applying a constraint.- Specified by:
getMemberChildren
in interfaceMemberReader
- Overrides:
getMemberChildren
in classRestrictedMemberReader
- Parameters:
member
- Members whose children to findchildren
- List to populate with membersconstraint
- Constraint- Returns:
- After populating the list passed as an argument,
this method returns a map of the members it just populated
along with the Access information applicable. If no access
control applies to the member, the map will contain
null
values.
-
-