001package gudusoft.gsqlparser.stmt;
002
003import gudusoft.gsqlparser.EDbVendor;
004import gudusoft.gsqlparser.ESqlStatementType;
005import gudusoft.gsqlparser.TCustomSqlStatement;
006import gudusoft.gsqlparser.TSourceToken;
007import gudusoft.gsqlparser.nodes.*;
008
009public class TDropSchemaSqlStatement extends TCustomSqlStatement {
010
011    private TObjectName schemaName;
012    private TSourceToken dropBehavior;
013    private TObjectNameList schemaNameList;
014
015    public TObjectNameList getSchemaNameList() {
016        return schemaNameList;
017    }
018
019    public TDropSchemaSqlStatement(EDbVendor dbvendor) {
020        super(dbvendor);
021        sqlstatementtype = ESqlStatementType.sstdropschema;
022    }
023
024    public TObjectName getSchemaName() {
025        return schemaName;
026    }
027
028    public TSourceToken getDropBehavior() {
029        return dropBehavior;
030    }
031
032    public int doParseStatement(TCustomSqlStatement psql) {
033        if (rootNode == null) return -1;
034        super.doParseStatement(psql);
035        if (rootNode instanceof TDummy){
036            TDummy node = (TDummy)rootNode;
037            schemaName =(TObjectName)node.node1;
038            dropBehavior =(TSourceToken)(node.st1);
039            if (node.list1 != null){
040                schemaNameList  = (TObjectNameList)node.list1;
041                schemaName = schemaNameList.getObjectName(0);
042            }
043        }else{
044            TDropSchemaSqlNode node = (TDropSchemaSqlNode)rootNode;
045            schemaName = node.getSchemaName();
046            dropBehavior = node.getDropBehavior();
047            schemaNameList  = node.getSchemaNameList();
048        }
049
050        return 0;
051    }
052    public void accept(TParseTreeVisitor v){
053        v.preVisit(this);
054        v.postVisit(this);
055    }
056
057    public void acceptChildren(TParseTreeVisitor v){
058        v.preVisit(this);
059        v.postVisit(this);
060    }
061
062    public void setSchemaName(TObjectName schemaName) {
063        this.schemaName = schemaName;
064    }
065}