001package gudusoft.gsqlparser.stmt;
002
003import gudusoft.gsqlparser.*;
004import gudusoft.gsqlparser.nodes.TParseTreeVisitor;
005import gudusoft.gsqlparser.stmt.TBlockSqlStatement;
006import gudusoft.gsqlparser.stmt.TSelectSqlStatement;
007import gudusoft.gsqlparser.nodes.TForSqlNode;
008import gudusoft.gsqlparser.nodes.TObjectName;
009
010public class TForStmt extends TBlockSqlStatement {
011     public TForStmt(EDbVendor dbvendor){
012        super(dbvendor);
013        sqlstatementtype = ESqlStatementType.sstForStmt ;
014        }
015
016    void buildsql() {
017    }
018
019    void clear() {
020    }
021
022    String getasprettytext() {
023        return "";
024    }
025
026    void iterate(TVisitorAbs pvisitor) {
027    }
028
029    public TObjectName getCursorName() {
030        return cursorName;
031    }
032
033    public TObjectName getLoopName() {
034        return loopName;
035    }
036
037    public TSelectSqlStatement getSubquery() {
038        return subquery;
039    }
040
041    public int doParseStatement(TCustomSqlStatement psql) {
042    if (rootNode == null) return -1;
043    super.doParseStatement(psql);
044
045    TForSqlNode forSqlNode = (TForSqlNode)rootNode;
046     this.loopName = forSqlNode.getLoopName();
047     this.cursorName = forSqlNode.getCursorName();
048     if (forSqlNode.getSelectNode() != null){
049         this.subquery = new TSelectSqlStatement(EDbVendor.dbvdb2);
050         this.subquery.rootNode = forSqlNode.getSelectNode();
051         this.subquery.doParseStatement(this);
052     }
053
054     if (forSqlNode.getStmtListNode() != null){
055         forSqlNode.getStmtListNode().doParse(this,ESqlClause.unknown);
056         for(int i=0;i<forSqlNode.getStmtListNode().size();i++){
057             this.getBodyStatements().add(forSqlNode.getStmtListNode().getStatementSqlNode(i).getStmt());
058         }
059     }
060
061    return 0;
062}
063
064    private TObjectName loopName = null;
065    private TObjectName cursorName = null;
066    private TSelectSqlStatement subquery = null;
067
068    public void accept(TParseTreeVisitor v){
069        v.preVisit(this);
070        v.postVisit(this);
071    }
072
073    public void acceptChildren(TParseTreeVisitor v){
074        v.preVisit(this);
075        if (subquery != null) subquery.accept(v);
076        if (getBodyStatements().size() > 0) getBodyStatements().accept(v);
077        v.postVisit(this);
078    }
079
080    public void setLoopName(TObjectName loopName) {
081        this.loopName = loopName;
082    }
083
084    public void setCursorName(TObjectName cursorName) {
085        this.cursorName = cursorName;
086    }
087
088    public void setSubquery(TSelectSqlStatement subquery) {
089        this.subquery = subquery;
090    }
091}