001 /* 002 // $Id: //open/mondrian/src/main/mondrian/mdx/HierarchyExpr.java#5 $ 003 // This software is subject to the terms of the Common Public License 004 // Agreement, available at the following URL: 005 // http://www.opensource.org/licenses/cpl.html. 006 // Copyright (C) 2006-2006 Julian Hyde 007 // All Rights Reserved. 008 // You must accept the terms of that agreement to use this software. 009 */ 010 package mondrian.mdx; 011 012 import mondrian.olap.*; 013 import mondrian.olap.type.HierarchyType; 014 import mondrian.olap.type.Type; 015 import mondrian.calc.*; 016 import mondrian.calc.impl.ConstantCalc; 017 018 /** 019 * Usage of a {@link mondrian.olap.Hierarchy} as an MDX expression. 020 * 021 * @author jhyde 022 * @version $Id: //open/mondrian/src/main/mondrian/mdx/HierarchyExpr.java#5 $ 023 * @since Sep 26, 2005 024 */ 025 public class HierarchyExpr extends ExpBase implements Exp { 026 private final Hierarchy hierarchy; 027 028 /** 029 * Creates a hierarchy expression. 030 * 031 * @param hierarchy Hierarchy 032 * @pre hierarchy != null 033 */ 034 public HierarchyExpr(Hierarchy hierarchy) { 035 Util.assertPrecondition(hierarchy != null, "hierarchy != null"); 036 this.hierarchy = hierarchy; 037 } 038 039 /** 040 * Returns the hierarchy. 041 * 042 * @post return != null 043 */ 044 public Hierarchy getHierarchy() { 045 return hierarchy; 046 } 047 048 public String toString() { 049 return hierarchy.getUniqueName(); 050 } 051 052 public Type getType() { 053 return HierarchyType.forHierarchy(hierarchy); 054 } 055 056 public HierarchyExpr clone() { 057 return new HierarchyExpr(hierarchy); 058 } 059 060 public int getCategory() { 061 return Category.Hierarchy; 062 } 063 064 public Exp accept(Validator validator) { 065 return this; 066 } 067 068 public Calc accept(ExpCompiler compiler) { 069 return ConstantCalc.constantHierarchy(hierarchy); 070 } 071 072 public Object accept(MdxVisitor visitor) { 073 return visitor.visit(this); 074 } 075 } 076 077 // End HierarchyExpr.java