public Level getParentLevel() { int parentDepth = depth - 1; Level[] levels = hierarchy.getLevels(); return (parentDepth >= 0) ? levels[parentDepth] : null; }
public Level getChildLevel() { int childDepth = depth + 1; Level[] levels = hierarchy.getLevels(); return (childDepth < levels.length) ? levels[childDepth] : null; }
Level nthLevel(Hierarchy hierarchy, int n) { Level[] levels = hierarchy.getLevels(); if (n >= levels.length || n < 0) { throw newEvalException( this, "Index '" + n + "' out of bounds"); } return levels[n]; } });
private boolean isBottomLeveRestricted() { for (HierarchyAccess hierarchyAccess : list) { if (hierarchyAccess.getBottomLevelDepth() == hierarchy.getLevels().length) { return true; } } return false; } }
public static int getHierarchyCardinality( SchemaReader schemaReader, Hierarchy hierarchy) { int cardinality = 0; Level[] levels = hierarchy.getLevels(); for (Level level1 : levels) { cardinality += schemaReader.getLevelCardinality(level1, true, true); } return cardinality; }
/** * Finds a named level in this hierarchy. Returns null if there is no * such level. */ public static Level lookupHierarchyLevel(Hierarchy hierarchy, String s) { final Level[] levels = hierarchy.getLevels(); for (Level level : levels) { if (level.getName().equalsIgnoreCase(s)) { return level; } } return null; }
void init(MondrianDef.CubeDimension xmlDimension) { if (xmlClosure != null) { final RolapDimension dimension = ((RolapHierarchy) hierarchy) .createClosedPeerDimension(this, xmlClosure, xmlDimension); closedPeerLevel = (RolapLevel) dimension.getHierarchies()[0].getLevels()[1]; } }
private void addFormulasToQuery() { LOGGER.debug("FormulaResolvingVisitor addFormulas"); List<Formula> formulas = new ArrayList<Formula>(); for (Level level : levels) { Formula memberFormula = createDefaultMemberFormula(level); formulas.add(memberFormula); formulas.add(createNamedSetFormula(level, memberFormula)); } for (Dimension dim : dimensions) { Level level = dim.getHierarchy().getLevels()[0]; formulas.add(createSentinelFormula(level)); } query.addFormulas(formulas.toArray(new Formula[formulas.size()])); }
public List<Level> getHierarchyLevels(Hierarchy hierarchy) { assert hierarchy != null; final Role.HierarchyAccess hierarchyAccess = role.getAccessDetails(hierarchy); final Level[] levels = hierarchy.getLevels(); if (hierarchyAccess == null) { return Arrays.asList(levels); } Level topLevel = levels[hierarchyAccess.getTopLevelDepth()]; Level bottomLevel = levels[hierarchyAccess.getBottomLevelDepth()]; List<Level> restrictedLevels = Arrays.asList(levels).subList( topLevel.getDepth(), bottomLevel.getDepth() + 1); assert restrictedLevels.size() >= 1 : "postcondition"; return restrictedLevels; }
public List<Member> getHierarchyRootMembers(Hierarchy hierarchy) { final Role.HierarchyAccess hierarchyAccess = role.getAccessDetails(hierarchy); final Level[] levels = hierarchy.getLevels(); final Level firstLevel; if (hierarchyAccess == null) { firstLevel = levels[0]; } else { firstLevel = levels[hierarchyAccess.getTopLevelDepth()]; } return getLevelMembers(firstLevel, true); }
List<Member> getMeasures() { Level measuresLevel = dimensions[0].getHierarchies()[0].getLevels()[0]; return getSchemaReader().getLevelMembers(measuresLevel, true); }
private void addSentinelMembers(List<Exp> args) { Exp prev = args.get(0); for (int i = 1; i < args.size(); i++) { Exp curr = args.get(i); if (prev.toString().equals(curr.toString())) { OlapElement element = null; if (curr instanceof NamedSetExpr) { element = ((NamedSetExpr) curr).getNamedSet(); } else if (curr instanceof MemberExpr) { element = ((MemberExpr) curr).getMember(); } if (element != null) { Level level = element.getHierarchy().getLevels()[0]; Id memberId = createSentinelId(level); Formula formula = query.findFormula(memberId.toString()); args.add(i++, Util.createExpr(formula.getMdxMember())); } } prev = curr; } } }
/** * Initializes the dimensionUniqueNames, hierarchyUniqueNames and * levelNames collections based on the contents of cube. These collections * will be used to help determine whether identifiers correspond to * a dimension/hierarchy/level. */ private void initOlapElementNames() { dimensionUniqueNames.addAll( getOlapElementNames(cube.getDimensions(), true)); for (Dimension dim : cube.getDimensions()) { hierarchyUniqueNames.addAll( getOlapElementNames(dim.getHierarchies(), true)); for (Hierarchy hier : dim.getHierarchies()) { levelNames.addAll(getOlapElementNames(hier.getLevels(), false)); } } }
/** * Returns the first level of a given type in this cube. * * @param levelType Level type * @return First level of given type, or null */ private Level getTimeLevel(LevelType levelType) { for (Dimension dimension : dimensions) { if (dimension.getDimensionType() == DimensionType.TimeDimension) { Hierarchy[] hierarchies = dimension.getHierarchies(); for (Hierarchy hierarchy : hierarchies) { Level[] levels = hierarchy.getLevels(); for (Level level : levels) { if (level.getLevelType() == levelType) { return level; } } } } } return null; }
for (HierarchyAccess hierarchyAccess : list) { if (hierarchyAccess.getBottomLevelDepth() == hierarchy.getLevels().length)
public NamedList<Member> getRootMembers() throws OlapException { final MondrianOlap4jConnection olap4jConnection = olap4jSchema.olap4jCatalog.olap4jDatabaseMetaData.olap4jConnection; final List<mondrian.olap.Member> levelMembers = olap4jConnection.getMondrianConnection().getSchemaReader() .withLocus() .getLevelMembers( hierarchy.getLevels()[0], true); return new AbstractNamedList<Member>() { public String getName(Object member) { return ((Member)member).getName(); } public Member get(int index) { return olap4jConnection.toOlap4j(levelMembers.get(index)); } public int size() { return levelMembers.size(); } }; }
for (Level level : hierarchy.getLevels()) { List<Member> members = getNonEmptyLevelMembers(
public CellRegion createMeasuresRegion(Cube cube) { Dimension measuresDimension = null; for (Dimension dim : cube.getDimensions()) { if (dim.isMeasures()) { measuresDimension = dim; break; } } if (measuresDimension == null) { throw new MondrianException( "No measures dimension found for cube " + cube.getName()); } final List<Member> measures = cube.getSchemaReader(null).withLocus().getLevelMembers( measuresDimension.getHierarchy().getLevels()[0], false); if (measures.size() == 0) { return new EmptyCellRegion(); } return new MemberCellRegion(measures, false); }
public Member evaluateMember(Evaluator evaluator) { Member member = memberCalc.evaluateMember(evaluator); // If the level argument is present, use it. Otherwise use the // level immediately after that of the member argument. Level level; if (levelCalc == null) { int targetDepth = member.getLevel().getDepth() + 1; Level[] levels = member.getHierarchy().getLevels(); if (levels.length <= targetDepth) { return member.getHierarchy().getNullMember(); } level = levels[targetDepth]; } else { level = levelCalc.evaluateLevel(evaluator); } // Shortcut if the level is above the member. if (level.getDepth() < member.getLevel().getDepth()) { return member.getHierarchy().getNullMember(); } // Shortcut if the level is the same as the member if (level == member.getLevel()) { return member; } return getDescendant( evaluator.getSchemaReader(), member, level, opening); } };