001package gudusoft.gsqlparser.stmt.db2; 002 003import gudusoft.gsqlparser.*; 004import gudusoft.gsqlparser.nodes.*; 005import gudusoft.gsqlparser.stmt.TStoredProcedureSqlStatement; 006 007/** 008 * Create trigger. 009 * 010 * @deprecated As of v2.0.1.0, replaced by {@link gudusoft.gsqlparser.stmt.TCreateTriggerStmt} 011 */ 012public class TDb2CreateTrigger extends TStoredProcedureSqlStatement { 013 public TDb2CreateTrigger (EDbVendor dbvendor){ 014 super(dbvendor); 015 sqlstatementtype = ESqlStatementType.sstdb2createtrigger ; 016 } 017 018 void buildsql() { 019 } 020 021 void clear() { 022 } 023 024 025 026 String getasprettytext() { 027 return ""; 028 } 029 030 void iterate(TVisitorAbs pvisitor) { 031 } 032 033 public TObjectName getStoredProcedureName(){ 034 return triggerName; 035 } 036 037 public TObjectName getTriggerName() { 038 return triggerName; 039 } 040 041 private TObjectName triggerName = null; 042 private TTable onTable = null; 043 044 public TTable getOnTable() { 045 return onTable; 046 } 047 048 public int doParseStatement(TCustomSqlStatement psql) { 049 if (rootNode == null) return -1; 050 TCreateTriggerSqlNode createTriggerNode = (TCreateTriggerSqlNode)rootNode; 051 052 super.doParseStatement(psql); 053 this.triggerName = createTriggerNode.getTriggerName(); 054 onTable = createTriggerNode.getOnTable(); 055 tables.addTable(onTable); 056 057 TTriggerAction triggerAction = createTriggerNode.getTriggerAction(); 058 this.whenExpr = triggerAction.getWhenExpr(); 059 if (triggerAction.getStmtNode() != null){ 060 triggerAction.getStmtNode().doParse(this,ESqlClause.unknown); 061 this.getBodyStatements().add(triggerAction.getStmtNode().getStmt()); 062 }else if (triggerAction.getCompoundSqlNode() != null){ 063 TCompoundSqlNode compoundSqlNode = triggerAction.getCompoundSqlNode(); 064 if (compoundSqlNode.getDeclareStmts() != null){ 065 compoundSqlNode.getDeclareStmts().doParse(this,ESqlClause.unknown); 066 067 // push variable declare into symbolTable, and add to declareStatements 068 for(int i=0;i<compoundSqlNode.getDeclareStmts().size();i++){ 069 this.getTopStatement().getSymbolTable().push( new TSymbolTableItem(TObjectName.ttobjVariable,this,compoundSqlNode.getDeclareStmts().getStatementSqlNode(i).getStmt() )); 070 this.getDeclareStatements().add(compoundSqlNode.getDeclareStmts().getStatementSqlNode(i).getStmt()); 071 } 072 } 073 074 if (compoundSqlNode.getStmts() != null){ 075 compoundSqlNode.getStmts().doParse(this,ESqlClause.unknown); 076 077 for(int i= 0; i<compoundSqlNode.getStmts().size();i++){ 078 this.getBodyStatements().add(compoundSqlNode.getStmts().getStatementSqlNode(i).getStmt()); 079 } 080 } 081 082 if (compoundSqlNode.getDeclareStmts() != null){ 083 // pop variable declare from symbolTable 084 for(int i=0;i<compoundSqlNode.getDeclareStmts().size();i++){ 085 this.getTopStatement().getSymbolTable().pop(); 086 } 087 } 088 } 089 090 return 0; 091 } 092 093 private TExpression whenExpr = null; 094 095 public TExpression getWhenExpr() { 096 return whenExpr; 097 } 098 099 public void accept(TParseTreeVisitor v){ 100 v.preVisit(this); 101 102 if (whenExpr != null) whenExpr.accept(v); 103 //if (this.getParameterDeclarations() != null) getParameterDeclarations().accept(v); 104 if (this.getDeclareStatements().size() > 0) this.getDeclareStatements().accept(v); 105 if ( this.getBodyStatements().size() > 0) getBodyStatements().accept(v); 106 107 v.postVisit(this); 108 } 109 110 public void setTriggerName(TObjectName triggerName) { 111 this.triggerName = triggerName; 112 } 113 114 public void setOnTable(TTable onTable) { 115 this.onTable = onTable; 116 } 117 118 public void setWhenExpr(TExpression whenExpr) { 119 this.whenExpr = whenExpr; 120 } 121}