KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > mondrian > olap > fun > HierarchyDimensionFunDef


1 /*
2 // $Id: //open/mondrian/src/main/mondrian/olap/fun/HierarchyDimensionFunDef.java#1 $
3 // This software is subject to the terms of the Common Public License
4 // Agreement, available at the following URL:
5 // http://www.opensource.org/licenses/cpl.html.
6 // Copyright (C) 2006-2006 Julian Hyde
7 // All Rights Reserved.
8 // You must accept the terms of that agreement to use this software.
9 */

10 package mondrian.olap.fun;
11
12 import mondrian.calc.Calc;
13 import mondrian.calc.ExpCompiler;
14 import mondrian.calc.HierarchyCalc;
15 import mondrian.calc.impl.AbstractDimensionCalc;
16 import mondrian.mdx.ResolvedFunCall;
17 import mondrian.olap.Exp;
18 import mondrian.olap.Dimension;
19 import mondrian.olap.Evaluator;
20 import mondrian.olap.Hierarchy;
21
22 /**
23  * Definition of the <code>&lt;Hierarchy&gt;.Dimension</code> MDX builtin function.
24  *
25  * @author jhyde
26  * @version $Id: //open/mondrian/src/main/mondrian/olap/fun/HierarchyDimensionFunDef.java#1 $
27  * @since Mar 23, 2006
28  */

29 public class HierarchyDimensionFunDef extends FunDefBase {
30     static final HierarchyDimensionFunDef instance = new HierarchyDimensionFunDef();
31
32     private HierarchyDimensionFunDef() {
33         super("Dimension", "<Hierarchy>.Dimension",
34                 "Returns the dimension that contains a specified hierarchy.",
35                 "pdh");
36     }
37
38     public Calc compileCall(ResolvedFunCall call, ExpCompiler compiler) {
39         final HierarchyCalc hierarchyCalc =
40                 compiler.compileHierarchy(call.getArg(0));
41         return new CalcImpl(call, hierarchyCalc);
42     }
43
44     public static class CalcImpl extends AbstractDimensionCalc {
45         private final HierarchyCalc hierarchyCalc;
46
47         public CalcImpl(Exp exp, HierarchyCalc hierarchyCalc) {
48             super(exp, new Calc[] {hierarchyCalc});
49             this.hierarchyCalc = hierarchyCalc;
50         }
51
52         public Dimension evaluateDimension(Evaluator evaluator) {
53             Hierarchy hierarchy =
54                     hierarchyCalc.evaluateHierarchy(evaluator);
55             return hierarchy.getDimension();
56         }
57     }
58 }
59
60 // End HierarchyDimensionFunDef.java
61
Popular Tags