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}