001package gudusoft.gsqlparser.stmt;
002/*
003 * Date: 13-1-23
004 */
005
006import gudusoft.gsqlparser.EDbVendor;
007import gudusoft.gsqlparser.ESqlStatementType;
008import gudusoft.gsqlparser.TCustomSqlStatement;
009import gudusoft.gsqlparser.TSourceToken;
010import gudusoft.gsqlparser.nodes.*;
011
012import java.util.ArrayList;
013
014public class TCreateSequenceStmt extends TCustomSqlStatement {
015
016    public TCreateSequenceStmt(EDbVendor dbvendor) {
017        super(dbvendor);
018        sqlstatementtype = ESqlStatementType.sstcreatesequence;
019    }
020
021    private TObjectName sequenceName = null;
022    private ArrayList<TSequenceOption> options = null;
023
024    public ArrayList <TSequenceOption> getOptions() {
025        return options;
026    }
027
028    public TObjectName getSequenceName() {
029        return sequenceName;
030    }
031
032    public int doParseStatement(TCustomSqlStatement psql) {
033        if (rootNode == null) return -1;
034        super.doParseStatement(psql);
035        TCreateSequenceSqlNode node = (TCreateSequenceSqlNode)rootNode;
036
037        this.sequenceName = node.getSequenceName();
038        if (getSqlEnv().getDefaultCatalogName() != null){
039            if (sequenceName.getDatabaseToken() == null){
040                sequenceName.setDatabaseToken(new TSourceToken(getSqlEnv().getDefaultCatalogName()));
041            }
042        }
043        this.options = node.getOptions();
044
045        return 0;
046    }
047
048    public void accept(TParseTreeVisitor v){
049        v.preVisit(this);
050        v.postVisit(this);
051    }
052
053    public void acceptChildren(TParseTreeVisitor v){
054        v.preVisit(this);
055        if (options != null){
056            for(TSequenceOption option: options){
057                option.acceptChildren(v);
058            }
059        }
060        v.postVisit(this);
061    }
062
063    public void setSequenceName(TObjectName sequenceName) {
064        this.sequenceName = sequenceName;
065    }
066
067    public void setOptions(ArrayList<TSequenceOption> options) {
068        this.options = options;
069    }
070}