001package gudusoft.gsqlparser.stmt;
002
003
004import gudusoft.gsqlparser.EDbObjectType;
005import gudusoft.gsqlparser.EDbVendor;
006import gudusoft.gsqlparser.ESqlStatementType;
007import gudusoft.gsqlparser.TCustomSqlStatement;
008import gudusoft.gsqlparser.nodes.*;
009
010import java.util.ArrayList;
011
012public class TDropProcedureStmt extends TCustomSqlStatement {
013    public ArrayList<TFunctionHeader> getProcedures() {
014        return procedures;
015    }
016
017    private ArrayList<TFunctionHeader> procedures;
018    public TDropProcedureStmt(EDbVendor dbvendor) {
019        super(dbvendor);
020        sqlstatementtype = ESqlStatementType.sstdropprocedure;
021    }
022
023    private boolean ifExists = false;
024
025    public boolean isIfExists() {
026        return ifExists;
027    }
028
029    private TObjectName procedureName = null;
030    private TObjectNameList procedureNameList = null;
031
032    public TObjectName getProcedureName() {
033        return procedureName;
034    }
035
036    public int doParseStatement(TCustomSqlStatement psql) {
037        if (rootNode == null) return -1;
038        super.doParseStatement(psql);
039        if (rootNode instanceof TDummy){
040            TDummy node = (TDummy) rootNode;
041            this.procedureName = (TObjectName) node.node1;
042            if (this.procedureName != null){
043                this.procedureName.setDbObjectType(EDbObjectType.procedure);
044            }
045
046            this.procedureNameList = node.objectNameList;
047            this.ifExists = node.ifExists;
048        }else if (rootNode instanceof TDropProcedureSqlNode){
049            TDropProcedureSqlNode sqlNode = (TDropProcedureSqlNode)rootNode;
050            procedureName = sqlNode.getProcedureName();
051            if (this.procedureName != null){
052                this.procedureName.setDbObjectType(EDbObjectType.procedure);
053            }
054
055            procedureNameList = sqlNode.getProcedureNameList();
056
057            // postgresql
058            procedures = sqlNode.getProcedures();
059            if (procedures != null){
060                this.procedureName = procedures.get(0).getFunctionName();
061                this.procedureName.setDbObjectType(EDbObjectType.procedure);
062            }
063
064            this.parameterDeclarations = sqlNode.getParameterDeclarations();
065
066        }
067
068        if (this.procedureNameList != null){
069            procedureName = procedureNameList.getObjectName(0);
070            this.procedureName.setDbObjectType(EDbObjectType.procedure);
071        }
072
073
074        return 0;
075    }
076
077    private TParameterDeclarationList parameterDeclarations;
078
079    public TParameterDeclarationList getParameterDeclarations() {
080        return parameterDeclarations;
081    }
082
083    public void accept(TParseTreeVisitor v) {
084        v.preVisit(this);
085        v.postVisit(this);
086    }
087
088    public void acceptChildren(TParseTreeVisitor v) {
089        v.preVisit(this);
090        v.postVisit(this);
091    }
092}