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 TObjectName procedureName = null;
024    private TObjectNameList procedureNameList = null;
025
026    public TObjectName getProcedureName() {
027        return procedureName;
028    }
029
030    public int doParseStatement(TCustomSqlStatement psql) {
031        if (rootNode == null) return -1;
032        super.doParseStatement(psql);
033        if (rootNode instanceof TDummy){
034            TDummy node = (TDummy) rootNode;
035            this.procedureName = (TObjectName) node.node1;
036            if (this.procedureName != null){
037                this.procedureName.setDbObjectType(EDbObjectType.procedure);
038            }
039
040            this.procedureNameList = node.objectNameList;
041        }else if (rootNode instanceof TDropProcedureSqlNode){
042            TDropProcedureSqlNode sqlNode = (TDropProcedureSqlNode)rootNode;
043            procedureName = sqlNode.getProcedureName();
044            if (this.procedureName != null){
045                this.procedureName.setDbObjectType(EDbObjectType.procedure);
046            }
047
048            procedureNameList = sqlNode.getProcedureNameList();
049
050            // postgresql
051            procedures = sqlNode.getProcedures();
052            if (procedures != null){
053                this.procedureName = procedures.get(0).getFunctionName();
054                this.procedureName.setDbObjectType(EDbObjectType.procedure);
055            }
056
057            this.parameterDeclarations = sqlNode.getParameterDeclarations();
058
059        }
060
061        if (this.procedureNameList != null){
062            procedureName = procedureNameList.getObjectName(0);
063            this.procedureName.setDbObjectType(EDbObjectType.procedure);
064        }
065
066
067        return 0;
068    }
069
070    private TParameterDeclarationList parameterDeclarations;
071
072    public TParameterDeclarationList getParameterDeclarations() {
073        return parameterDeclarations;
074    }
075
076    public void accept(TParseTreeVisitor v) {
077        v.preVisit(this);
078        v.postVisit(this);
079    }
080
081    public void acceptChildren(TParseTreeVisitor v) {
082        v.preVisit(this);
083        v.postVisit(this);
084    }
085}