1 10 package mondrian.olap.fun; 11 12 import mondrian.calc.Calc; 13 import mondrian.calc.ExpCompiler; 14 import mondrian.calc.MemberCalc; 15 import mondrian.calc.impl.AbstractHierarchyCalc; 16 import mondrian.mdx.ResolvedFunCall; 17 import mondrian.olap.Exp; 18 import mondrian.olap.Hierarchy; 19 import mondrian.olap.Evaluator; 20 import mondrian.olap.Member; 21 22 29 public class MemberHierarchyFunDef extends FunDefBase { 30 static final MemberHierarchyFunDef instance = new MemberHierarchyFunDef(); 31 32 private MemberHierarchyFunDef() { 33 super("Hierarchy", "<Member>.Hierarchy", 34 "Returns a member's hierarchy.", "phm"); 35 } 36 37 public Calc compileCall(ResolvedFunCall call, ExpCompiler compiler) { 38 final MemberCalc memberCalc = 39 compiler.compileMember(call.getArg(0)); 40 return new CalcImpl(call, memberCalc); 41 } 42 43 public static class CalcImpl extends AbstractHierarchyCalc { 44 private final MemberCalc memberCalc; 45 46 public CalcImpl(Exp exp, MemberCalc memberCalc) { 47 super(exp, new Calc[] {memberCalc}); 48 this.memberCalc = memberCalc; 49 } 50 51 public Hierarchy evaluateHierarchy(Evaluator evaluator) { 52 Member member = memberCalc.evaluateMember(evaluator); 53 return member.getHierarchy(); 54 } 55 } 56 } 57 58 | Popular Tags |