mondrian.rolap
Class RolapSchemaReader

java.lang.Object
  extended by mondrian.rolap.RolapSchemaReader
All Implemented Interfaces:
SchemaReader, RolapNativeSet.SchemaReaderWithMemberReaderAvailable

public abstract class RolapSchemaReader
extends Object
implements SchemaReader, RolapNativeSet.SchemaReaderWithMemberReaderAvailable

A RolapSchemaReader allows you to read schema objects while observing the access-control profile specified by a given role.

Since:
Feb 24, 2003
Author:
jhyde
 

Constructor Summary
RolapSchemaReader(Role role, RolapSchema schema)
           
 
Method Summary
 int compareMembersHierarchically(Member m1, Member m2)
          Compares a pair of Members according to their order in a prefix traversal.
 Member getCalculatedMember(List<Id.Segment> nameParts)
          Looks up a calculated member by name.
 List<Member> getCalculatedMembers()
          Returns the list of calculated members.
 List<Member> getCalculatedMembers(Hierarchy hierarchy)
          Returns a list of calculated members in a given hierarchy.
 List<Member> getCalculatedMembers(Level level)
          Returns a list of calculated members in a given level.
 int getChildrenCountFromCache(Member member)
          check, whether members children are cached, and if yes - return children count if no - return -1
abstract  Cube getCube()
           
 Cube[] getCubes()
          Returns the list of accessible cubes.
 DataSource getDataSource()
           
 OlapElement getElementChild(OlapElement parent, Id.Segment name)
           
 OlapElement getElementChild(OlapElement parent, Id.Segment name, MatchType matchType)
          Looks up the child of parent called s; returns null if no element is found.
 Member getHierarchyDefaultMember(Hierarchy hierarchy)
          Returns the default member of a hierarchy.
 List<Level> getHierarchyLevels(Hierarchy hierarchy)
          Returns the accessible levels of a hierarchy.
 List<Member> getHierarchyRootMembers(Hierarchy hierarchy)
          Returns an array of the root members of hierarchy.
 Member getLeadMember(Member member, int n)
          Returns a member n further along in the same level from member.
 int getLevelCardinality(Level level, boolean approximate, boolean materialize)
          Returns the number of members in a level, returning an approximation if acceptable.
 List<Member> getLevelMembers(Level level, boolean includeCalculated)
          Returns the members of a level, optionally including calculated members.
 List<Member> getLevelMembers(Level level, Evaluator context)
          Returns the members of a level, optionally filtering out members which are empty.
 Member getMemberByUniqueName(List<Id.Segment> uniqueNameParts, boolean failIfNotFound)
          Finds a member based upon its unique name, requiring an exact match.
 Member getMemberByUniqueName(List<Id.Segment> uniqueNameParts, boolean failIfNotFound, MatchType matchType)
          Finds a member based upon its unique name.
 List<Member> getMemberChildren(List<Member> members)
          Returns direct children of each element of members.
 List<Member> getMemberChildren(List<Member> members, Evaluator context)
          Returns direct children of each element of members which is not empty in context.
 List<Member> getMemberChildren(Member member)
          Returns direct children of member.
 List<Member> getMemberChildren(Member member, Evaluator context)
          Returns direct children of member, optimized for NON EMPTY.
 int getMemberDepth(Member member)
          Returns the depth of a member.
 Member getMemberParent(Member member)
          Returns the parent of member.
 void getMemberRange(Level level, Member startMember, Member endMember, List<Member> list)
          Appends to list all members between startMember and endMember (inclusive) which belong to level.
 MemberReader getMemberReader(Hierarchy hierarchy)
           
 NamedSet getNamedSet(List<Id.Segment> nameParts)
          Looks up a set by name.
 NativeEvaluator getNativeSetEvaluator(FunDef fun, Exp[] args, Evaluator evaluator, Calc calc)
          Returns an object which can evaluate an expression in native SQL, or null if this is not possible.
 Parameter getParameter(String name)
          Returns the definition of a parameter with a given name, or null if not found.
 Role getRole()
          Returns the access-control profile that this SchemaReader is implementing.
(package private)  RolapSchema getSchema()
           
 boolean isDrillable(Member member)
          Returns whether a member has visible children.
 boolean isVisible(Member member)
          Returns whether a member is visible.
 OlapElement lookupCompound(OlapElement parent, List<Id.Segment> names, boolean failIfNotFound, int category)
          Looks up an MDX object by name.
 OlapElement lookupCompound(OlapElement parent, List<Id.Segment> names, boolean failIfNotFound, int category, MatchType matchType)
          Looks up an MDX object by name, specifying how to match if no object exactly matches the name.
 Member lookupMemberChildByName(Member parent, Id.Segment childName)
           
 Member lookupMemberChildByName(Member parent, Id.Segment childName, MatchType matchType)
          Finds a child of a member with a given name.
 Member substitute(Member member)
          Substitutes a member with an equivalent member which enforces the access control policy of this SchemaReader.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RolapSchemaReader

RolapSchemaReader(Role role,
                  RolapSchema schema)
Method Detail

getRole

public Role getRole()
Description copied from interface: SchemaReader
Returns the access-control profile that this SchemaReader is implementing.

Specified by:
getRole in interface SchemaReader

getHierarchyRootMembers

public List<Member> getHierarchyRootMembers(Hierarchy hierarchy)
Description copied from interface: SchemaReader
Returns an array of the root members of hierarchy.

Specified by:
getHierarchyRootMembers in interface SchemaReader
Parameters:
hierarchy - Hierarchy
See Also:
SchemaReader.getCalculatedMembers(Hierarchy)

getMemberReader

public MemberReader getMemberReader(Hierarchy hierarchy)
Specified by:
getMemberReader in interface RolapNativeSet.SchemaReaderWithMemberReaderAvailable

substitute

public Member substitute(Member member)
Description copied from interface: SchemaReader
Substitutes a member with an equivalent member which enforces the access control policy of this SchemaReader.

Specified by:
substitute in interface SchemaReader

getMemberRange

public void getMemberRange(Level level,
                           Member startMember,
                           Member endMember,
                           List<Member> list)
Description copied from interface: SchemaReader
Appends to list all members between startMember and endMember (inclusive) which belong to level.

Specified by:
getMemberRange in interface SchemaReader

compareMembersHierarchically

public int compareMembersHierarchically(Member m1,
                                        Member m2)
Description copied from interface: SchemaReader
Compares a pair of Members according to their order in a prefix traversal. (that is, it is an ancestor or a earlier), is a sibling, or comes later in a prefix traversal.

Specified by:
compareMembersHierarchically in interface SchemaReader
Returns:
A negative integer if m1 is an ancestor, an earlier sibling of an ancestor, or a descendent of an earlier sibling, of m2; zero if m1 is a sibling of m2; a positive integer if m1 comes later in the prefix traversal then m2.

getMemberParent

public Member getMemberParent(Member member)
Description copied from interface: SchemaReader
Returns the parent of member.

Specified by:
getMemberParent in interface SchemaReader
Parameters:
member - Member
Returns:
null if member is a root member

getMemberDepth

public int getMemberDepth(Member member)
Description copied from interface: SchemaReader
Returns the depth of a member.

This may not be the same as member.getLevel(). getDepth() for three reasons:

  1. Access control. The most senior visible member has level 0. If the client is not allowed to see the "All" and "Nation" levels of the "Store" hierarchy, then members of the "State" level will have depth 0.
  2. Parent-child hierarchies. Suppose Fred reports to Wilma, and Wilma reports to no one. "All Employees" has depth 0, Wilma has depth 1, and Fred has depth 2. Fred and Wilma are both in the "Employees" level, which has depth 1.
  3. Ragged hierarchies. If Israel has only one, hidden, province then the depth of Tel Aviv, Israel is 2, whereas the depth of another city, San Francisco, CA, USA is 3.

Specified by:
getMemberDepth in interface SchemaReader

getMemberChildren

public List<Member> getMemberChildren(Member member)
Description copied from interface: SchemaReader
Returns direct children of member.

Specified by:
getMemberChildren in interface SchemaReader

getMemberChildren

public List<Member> getMemberChildren(Member member,
                                      Evaluator context)
Description copied from interface: SchemaReader
Returns direct children of member, optimized for NON EMPTY.

If context == null then there is no context and all members are returned - then its identical to SchemaReader.getMemberChildren(Member). If context is not null, the resulting members may be restricted to those members that have a non empty row in the fact table for context. Wether or not optimization is possible depends on the SchemaReader implementation.

Specified by:
getMemberChildren in interface SchemaReader

getChildrenCountFromCache

public int getChildrenCountFromCache(Member member)
check, whether members children are cached, and if yes - return children count if no - return -1

Specified by:
getChildrenCountFromCache in interface SchemaReader

getLevelCardinality

public int getLevelCardinality(Level level,
                               boolean approximate,
                               boolean materialize)
Description copied from interface: SchemaReader
Returns the number of members in a level, returning an approximation if acceptable.

Specified by:
getLevelCardinality in interface SchemaReader
Parameters:
level - Level
approximate - Whether an approximation is acceptable
materialize - Whether to go to disk if no approximation for the count is available and the members are not in cache. If false, returns Integer.MIN_VALUE if value is not in cache.

getMemberChildren

public List<Member> getMemberChildren(List<Member> members)
Description copied from interface: SchemaReader
Returns direct children of each element of members.

Specified by:
getMemberChildren in interface SchemaReader
Parameters:
members - Array of members
Returns:
array of child members

getMemberChildren

public List<Member> getMemberChildren(List<Member> members,
                                      Evaluator context)
Description copied from interface: SchemaReader
Returns direct children of each element of members which is not empty in context.

Specified by:
getMemberChildren in interface SchemaReader
Parameters:
members - Array of members
context - Evaluation context
Returns:
array of child members

getCube

public abstract Cube getCube()

getElementChild

public OlapElement getElementChild(OlapElement parent,
                                   Id.Segment name)
Specified by:
getElementChild in interface SchemaReader

getElementChild

public OlapElement getElementChild(OlapElement parent,
                                   Id.Segment name,
                                   MatchType matchType)
Description copied from interface: SchemaReader
Looks up the child of parent called s; returns null if no element is found.

Specified by:
getElementChild in interface SchemaReader

getMemberByUniqueName

public final Member getMemberByUniqueName(List<Id.Segment> uniqueNameParts,
                                          boolean failIfNotFound)
Description copied from interface: SchemaReader
Finds a member based upon its unique name, requiring an exact match.

This method is equivalent to calling SchemaReader.getMemberByUniqueName(java.util.List, boolean, MatchType) with MatchType.EXACT.

Specified by:
getMemberByUniqueName in interface SchemaReader
Parameters:
uniqueNameParts - Unique name of member
failIfNotFound - Whether to throw an error, as opposed to returning null, if there is no such member.
Returns:
The member, or null if not found

getMemberByUniqueName

public Member getMemberByUniqueName(List<Id.Segment> uniqueNameParts,
                                    boolean failIfNotFound,
                                    MatchType matchType)
Description copied from interface: SchemaReader
Finds a member based upon its unique name.

Specified by:
getMemberByUniqueName in interface SchemaReader
Parameters:
uniqueNameParts - Unique name of member
failIfNotFound - Whether to throw an error, as opposed to returning null, if there is no such member.
matchType - indicates the match mode; if not specified, EXACT
Returns:
The member, or null if not found

lookupCompound

public OlapElement lookupCompound(OlapElement parent,
                                  List<Id.Segment> names,
                                  boolean failIfNotFound,
                                  int category)
Description copied from interface: SchemaReader
Looks up an MDX object by name.

Resolves a name such as '[Products].[Product Department].[Produce]' by resolving the components ('Products', and so forth) one at a time.

Specified by:
lookupCompound in interface SchemaReader
Parameters:
parent - Parent element to search in
names - Exploded compound name, such as {"Products", "Product Department", "Produce"}
failIfNotFound - If the element is not found, determines whether to return null or throw an error
category - Type of returned element, a Category value; Category.Unknown if it doesn't matter.

lookupCompound

public OlapElement lookupCompound(OlapElement parent,
                                  List<Id.Segment> names,
                                  boolean failIfNotFound,
                                  int category,
                                  MatchType matchType)
Description copied from interface: SchemaReader
Looks up an MDX object by name, specifying how to match if no object exactly matches the name.

Resolves a name such as '[Products].[Product Department].[Produce]' by resolving the components ('Products', and so forth) one at a time.

Specified by:
lookupCompound in interface SchemaReader
Parameters:
parent - Parent element to search in
names - Exploded compound name, such as {"Products", "Product Department", "Produce"}
failIfNotFound - If the element is not found, determines whether to return null or throw an error
category - Type of returned element, a Category value; Category.Unknown if it doesn't matter.
matchType - indicates the match mode; if not specified, EXACT

lookupMemberChildByName

public Member lookupMemberChildByName(Member parent,
                                      Id.Segment childName)
Specified by:
lookupMemberChildByName in interface SchemaReader

lookupMemberChildByName

public Member lookupMemberChildByName(Member parent,
                                      Id.Segment childName,
                                      MatchType matchType)
Description copied from interface: SchemaReader
Finds a child of a member with a given name.

Specified by:
lookupMemberChildByName in interface SchemaReader

getCalculatedMember

public Member getCalculatedMember(List<Id.Segment> nameParts)
Description copied from interface: SchemaReader
Looks up a calculated member by name. If the name is not found in the current scope, returns null.

Specified by:
getCalculatedMember in interface SchemaReader

getNamedSet

public NamedSet getNamedSet(List<Id.Segment> nameParts)
Description copied from interface: SchemaReader
Looks up a set by name. If the name is not found in the current scope, returns null.

Specified by:
getNamedSet in interface SchemaReader

getLeadMember

public Member getLeadMember(Member member,
                            int n)
Description copied from interface: SchemaReader
Returns a member n further along in the same level from member.

Specified by:
getLeadMember in interface SchemaReader

getLevelMembers

public List<Member> getLevelMembers(Level level,
                                    boolean includeCalculated)
Description copied from interface: SchemaReader
Returns the members of a level, optionally including calculated members.

Specified by:
getLevelMembers in interface SchemaReader

getLevelMembers

public List<Member> getLevelMembers(Level level,
                                    Evaluator context)
Description copied from interface: SchemaReader
Returns the members of a level, optionally filtering out members which are empty.

Specified by:
getLevelMembers in interface SchemaReader
Parameters:
level - Level
context - Context for filtering
Returns:
Members of this level

getHierarchyLevels

public List<Level> getHierarchyLevels(Hierarchy hierarchy)
Description copied from interface: SchemaReader
Returns the accessible levels of a hierarchy.

Specified by:
getHierarchyLevels in interface SchemaReader

getHierarchyDefaultMember

public Member getHierarchyDefaultMember(Hierarchy hierarchy)
Description copied from interface: SchemaReader
Returns the default member of a hierarchy. If the default member is in an inaccessible level, returns the nearest ascendant/descendant member.

Specified by:
getHierarchyDefaultMember in interface SchemaReader

isDrillable

public boolean isDrillable(Member member)
Description copied from interface: SchemaReader
Returns whether a member has visible children.

Specified by:
isDrillable in interface SchemaReader

isVisible

public boolean isVisible(Member member)
Description copied from interface: SchemaReader
Returns whether a member is visible.

Specified by:
isVisible in interface SchemaReader

getCubes

public Cube[] getCubes()
Description copied from interface: SchemaReader
Returns the list of accessible cubes.

Specified by:
getCubes in interface SchemaReader

getCalculatedMembers

public List<Member> getCalculatedMembers(Hierarchy hierarchy)
Description copied from interface: SchemaReader
Returns a list of calculated members in a given hierarchy.

Specified by:
getCalculatedMembers in interface SchemaReader

getCalculatedMembers

public List<Member> getCalculatedMembers(Level level)
Description copied from interface: SchemaReader
Returns a list of calculated members in a given level.

Specified by:
getCalculatedMembers in interface SchemaReader

getCalculatedMembers

public List<Member> getCalculatedMembers()
Description copied from interface: SchemaReader
Returns the list of calculated members.

Specified by:
getCalculatedMembers in interface SchemaReader

getNativeSetEvaluator

public NativeEvaluator getNativeSetEvaluator(FunDef fun,
                                             Exp[] args,
                                             Evaluator evaluator,
                                             Calc calc)
Description copied from interface: SchemaReader
Returns an object which can evaluate an expression in native SQL, or null if this is not possible.

Specified by:
getNativeSetEvaluator in interface SchemaReader
Parameters:
fun - Function
args - Arguments to the function
evaluator - Evaluator, provides context

getParameter

public Parameter getParameter(String name)
Description copied from interface: SchemaReader
Returns the definition of a parameter with a given name, or null if not found.

Specified by:
getParameter in interface SchemaReader

getDataSource

public DataSource getDataSource()
Specified by:
getDataSource in interface SchemaReader

getSchema

RolapSchema getSchema()

SourceForge.net_Logo