public Member getCalculatedMember(List<Id.Segment> nameParts) { final String uniqueName = Util.implode(nameParts); for (Formula formula : calculatedMemberList) { final String formulaUniqueName = formula.getMdxMember().getUniqueName(); if (formulaUniqueName.equals(uniqueName) && getRole().canAccess(formula.getMdxMember())) { return formula.getMdxMember(); } } return null; }
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; } } }
@Override public void explain(PrintWriter pw) { final boolean profiling = getStatement().getProfileHandler() != null; final CalcWriter calcWriter = new CalcWriter(pw, profiling); for (Formula formula : formulas) { formula.getMdxMember(); // TODO: } if (slicerCalc != null) { pw.println("Axis (FILTER):"); slicerCalc.accept(calcWriter); pw.println(); } int i = -1; for (QueryAxis axis : axes) { ++i; pw.println("Axis (" + axis.getAxisName() + "):"); axisCalcs[i].accept(calcWriter); pw.println(); } pw.flush(); }
public List<Member> getCalculatedMembers() { List<Member> list = roleToAccessibleCalculatedMembers.get(getRole()); if (list == null) { list = new ArrayList<Member>(); for (Formula formula : calculatedMemberList) { Member member = formula.getMdxMember(); if (getRole().canAccess(member)) { list.add(member); } } // calculatedMembers array may not have been initialized if (list.size() > 0) { roleToAccessibleCalculatedMembers.put(getRole(), list); } } return list; }
final RolapMember member = (RolapMember) formula.getMdxMember();
&& formula.getMdxMember().getHierarchy().equals( hierarchy))
public OlapElement lookupChild( OlapElement parent, IdentifierSegment segment) { // Don't look for stored members, or look for dimensions, // hierarchies, levels at all. Only look for calculated members // and named sets defined against this cube. // Look up calc member. for (Formula formula : calculatedMemberList) { if (NameResolver.matches(formula, parent, segment)) { return formula.getMdxMember(); } } // Look up named set. if (parent == RolapCube.this) { for (Formula formula : namedSetList) { if (Util.matches(segment, formula.getName())) { return formula.getNamedSet(); } } } return null; } }
Formula formula = calculatedMemberList.get(i); if (formula.getName().equals(xmlCalcMember.name) && formula.getMdxMember().getHierarchy().equals( hierarchy))
final Member formulaMember = formula.getMdxMember(); if (formulaMember.getParentMember() != null) { if (parent instanceof Member) {
query.createValidator().validate(formula); calculatedMemberList.add(formula); return (RolapMember) formula.getMdxMember(); } finally { statement.close();
calcMember.getMdxMember()); break; final RolapMember calcMeasure = (RolapMember) formula.getMdxMember(); if (calcMeasure instanceof RolapHierarchy.RolapCalculatedMeasure && calcMeasuresWithBaseCube.containsKey(calcMeasure.getUniqueName())) {
formulaClone.createElement(query); formulaClone.accept(query.createValidator()); olapElement = formulaClone.getMdxMember();