public List<RolapMember> getRootMembers() { int topLevelDepth = hierarchyAccess.getTopLevelDepth(); if (topLevelDepth > 0) { RolapLevel topLevel = (RolapLevel) getHierarchy().getLevels()[topLevelDepth]; final List<RolapMember> memberList = getMembersInLevel(topLevel, 0, Integer.MAX_VALUE); if (memberList.isEmpty()) { throw MondrianResource.instance() .HierarchyHasNoAccessibleMembers .ex(getHierarchy().getUniqueName()); } return memberList; } return super.getRootMembers(); }
public List<RolapMember> getMembersInLevel( RolapLevel level, int startOrdinal, int endOrdinal, TupleConstraint constraint) { if (hierarchyAccess != null) { final int depth = level.getDepth(); if (depth < hierarchyAccess.getTopLevelDepth()) { return Collections.emptyList(); } if (depth > hierarchyAccess.getBottomLevelDepth()) { return Collections.emptyList(); } } final List<RolapMember> membersInLevel = memberReader.getMembersInLevel(level, startOrdinal, endOrdinal, constraint); List<RolapMember> filteredMembers = new ArrayList<RolapMember>(); filterMembers(membersInLevel, filteredMembers); return filteredMembers; }