001package gudusoft.gsqlparser.stmt.mdx; 002/* 003 * Date: 11-12-29 004 */ 005 006import gudusoft.gsqlparser.TCustomSqlStatement; 007import gudusoft.gsqlparser.EDbVendor; 008import gudusoft.gsqlparser.ESqlStatementType; 009import gudusoft.gsqlparser.nodes.TPTNodeList; 010import gudusoft.gsqlparser.nodes.TParseTreeVisitor; 011import gudusoft.gsqlparser.nodes.mdx.TMdxDrillthroughNode; 012import gudusoft.gsqlparser.nodes.mdx.TMdxExpNode; 013 014public class TMdxDrillthrough extends TCustomSqlStatement { 015 016 private TMdxDrillthroughNode drillthroughNode; 017 private TMdxSelect subQuery; 018 019 public TMdxDrillthrough(EDbVendor dbvendor) { 020 super(dbvendor); 021 sqlstatementtype = ESqlStatementType.sstmdxdrillthrough; 022 } 023 public int doParseStatement(TCustomSqlStatement psql) { 024 if (rootNode == null) return -1; 025 super.doParseStatement(psql); 026 027 drillthroughNode = (TMdxDrillthroughNode)rootNode; 028 subQuery = new TMdxSelect(EDbVendor.dbvmdx); 029 subQuery.rootNode = drillthroughNode.getSelectNode(); 030 subQuery.doParseStatement(this); 031 032 return 0; 033 } 034 035 public TMdxSelect getSubQuery(){ 036 return subQuery; 037 } 038 039 public TPTNodeList<TMdxExpNode> getReturnAttrs(){ 040 return drillthroughNode.getReturnAttrs(); 041 }; 042 043 public void accept(TParseTreeVisitor v){ 044 v.preVisit(this); 045 v.postVisit(this); 046 } 047 048 public void acceptChildren(TParseTreeVisitor v){ 049 v.preVisit(this); 050 subQuery.accept(v); 051 if (getReturnAttrs() != null){ 052 getReturnAttrs().acceptChildren(v); 053 } 054 v.postVisit(this); 055 } 056 057}