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.TStatementList; 010import gudusoft.gsqlparser.nodes.TPTNodeList; 011import gudusoft.gsqlparser.nodes.TParseTreeNode; 012import gudusoft.gsqlparser.nodes.TParseTreeVisitor; 013import gudusoft.gsqlparser.nodes.mdx.TMdxExpNode; 014import gudusoft.gsqlparser.nodes.mdx.TMdxScopeNode; 015import gudusoft.gsqlparser.nodes.mdx.TMdxSelectNode; 016 017public class TMdxScope extends TCustomSqlStatement { 018 019 private TMdxScopeNode scopeNode; 020 private TStatementList statementList = new TStatementList(); 021 022 public TMdxScope(EDbVendor dbvendor) { 023 super(dbvendor); 024 sqlstatementtype = ESqlStatementType.sstmdxscope; 025 } 026 027 public int doParseStatement(TCustomSqlStatement psql) { 028 if (rootNode == null) return -1; 029 super.doParseStatement(psql); 030 scopeNode = (TMdxScopeNode)rootNode; 031 032 if (scopeNode.getStatementList() == null) return 0; 033 034 for(int i=0;i<scopeNode.getStatementList().size();i++){ 035 if (scopeNode.getStatementList().elementAt(i) instanceof TMdxExpNode){ 036 TMdxExpression expression = new TMdxExpression(EDbVendor.dbvmdx); 037 expression.rootNode = scopeNode.getStatementList().elementAt(i); 038 expression.doParseStatement(this); 039 statementList.add(expression); 040 }else if (scopeNode.getStatementList().elementAt(i) instanceof TMdxSelectNode){ 041 TMdxSelect select = new TMdxSelect(EDbVendor.dbvmdx); 042 select.rootNode = scopeNode.getStatementList().elementAt(i); 043 select.doParseStatement(this); 044 statementList.add(select); 045 }else if (scopeNode.getStatementList().elementAt(i) instanceof TMdxScopeNode){ 046 TMdxScope scope = new TMdxScope(EDbVendor.dbvmdx); 047 scope.rootNode = scopeNode.getStatementList().elementAt(i); 048 scope.doParseStatement(this); 049 statementList.add(scope); 050 } 051 } 052 053 return 0; 054 } 055 056 public void accept(TParseTreeVisitor v){ 057 v.preVisit(this); 058 //getExprList().accept(v); 059 //getStatementList().accept(v); 060 v.postVisit(this); 061 } 062 063 public void acceptChildren(TParseTreeVisitor v){ 064 v.preVisit(this); 065 getExprList().acceptChildren(v); 066 getStatementList().acceptChildren(v); 067 v.postVisit(this); 068 } 069 070 public TPTNodeList<TMdxExpNode> getExprList(){ 071 return scopeNode.getExprList(); 072 } 073 074 public TStatementList getStatementList(){ 075 return statementList; 076 } 077 //private TPTNodeList <TParseTreeNode> statementList; 078 079 080 081}