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 this.ifExists = sqlNode.isIfExists(); 051 procedureName = sqlNode.getProcedureName(); 052 if (this.procedureName != null){ 053 this.procedureName.setDbObjectType(EDbObjectType.procedure); 054 } 055 056 procedureNameList = sqlNode.getProcedureNameList(); 057 058 // postgresql 059 procedures = sqlNode.getProcedures(); 060 if (procedures != null){ 061 this.procedureName = procedures.get(0).getFunctionName(); 062 this.procedureName.setDbObjectType(EDbObjectType.procedure); 063 } 064 065 this.parameterDeclarations = sqlNode.getParameterDeclarations(); 066 067 } 068 069 if (this.procedureNameList != null){ 070 procedureName = procedureNameList.getObjectName(0); 071 this.procedureName.setDbObjectType(EDbObjectType.procedure); 072 } 073 074 075 return 0; 076 } 077 078 private TParameterDeclarationList parameterDeclarations; 079 080 public TParameterDeclarationList getParameterDeclarations() { 081 return parameterDeclarations; 082 } 083 084 public void accept(TParseTreeVisitor v) { 085 v.preVisit(this); 086 v.postVisit(this); 087 } 088 089 public void acceptChildren(TParseTreeVisitor v) { 090 v.preVisit(this); 091 v.postVisit(this); 092 } 093}