001package gudusoft.gsqlparser.nodes;
002
003import gudusoft.gsqlparser.EDbObjectType;
004import gudusoft.gsqlparser.ETableSource;
005import gudusoft.gsqlparser.ETriggerTimingPoint;
006import gudusoft.gsqlparser.TBaseType;
007
008/**
009 * Internal use in the parser.
010*/
011public class TCreateTriggerSqlNode extends TParseTreeNode {
012
013    public TTriggeringClause getTriggeringClause() {
014        return triggeringClause;
015    }
016
017    private TTriggeringClause triggeringClause;
018
019    private boolean alterTrigger = false;
020
021    public void setAlterTrigger(boolean alterTrigger) {
022        this.alterTrigger = alterTrigger;
023    }
024
025    public boolean isAlterTrigger() {
026
027        return alterTrigger;
028    }
029
030    private TObjectNameList followsTriggerList;
031
032    public void setFollowsTriggerList(TObjectNameList followsTriggerList) {
033        this.followsTriggerList = followsTriggerList;
034    }
035
036    public TObjectNameList getFollowsTriggerList() {
037
038        return followsTriggerList;
039    }
040
041    private TStatementListSqlNode stmts = null;
042
043    private TObjectName triggerName = null;
044    private TTable onTable = null;
045    private TExpression whenCondition = null; //plsql
046    private int fireMode = TBaseType.tfmFor;
047    private ETriggerTimingPoint timingPoint = ETriggerTimingPoint.ttpAfter;
048
049    public ETriggerTimingPoint getTimingPoint() {
050        return timingPoint;
051    }
052
053    public void setTimingPoint(ETriggerTimingPoint timingPoint) {
054
055        this.timingPoint = timingPoint;
056    }
057
058    private TFunctionCall functionCall;//postgresql
059
060    public void setFunctionCall(TFunctionCall functionCall) {
061        this.functionCall = functionCall;
062    }
063
064    public TFunctionCall getFunctionCall() {
065
066        return functionCall;
067    }
068
069    private TBlockSqlNode blcok = null;    // MySQL
070
071    public void setBlcok(TBlockSqlNode blcok) {
072        this.blcok = blcok;
073    }
074
075    public TBlockSqlNode getBlcok() {
076
077        return blcok;
078    }
079
080    public void setDmlTpyes(TDummyList dmlTpyes) {
081        this.dmlTpyes = dmlTpyes;
082    }
083
084    public TDummyList getDmlTpyes() {
085
086        return dmlTpyes;
087    }
088
089    private TDummyList dmlTpyes = null;
090
091    public void setFireMode(int fireMode) {
092        this.fireMode = fireMode;
093        switch (fireMode){
094            case TBaseType.tfmAfter:
095                timingPoint = ETriggerTimingPoint.ttpAfter;
096                break;
097            case TBaseType.tfmFor:
098                timingPoint = ETriggerTimingPoint.ttpFor;
099                break;
100            case TBaseType.tfmInsteadOf:
101                timingPoint = ETriggerTimingPoint.ttpTinsteadOf;
102                break;
103            default:
104                timingPoint = ETriggerTimingPoint.ttpBefore;
105                break;
106        }
107    }
108
109    public int getFireMode() {
110
111        return fireMode;
112    }
113
114    public TObjectName getTriggerName() {
115        return triggerName;
116    }
117
118    public void setTrigger_event_clause(TParseTreeNode trigger_event_clause) {
119        this.trigger_event_clause = trigger_event_clause;
120    }
121
122    /**
123     *  @deprecated As of v2.0.1.0, replaced by {@link #getTriggeringClause()}
124     *
125     * @return trigger clause
126     */
127    public TParseTreeNode getTrigger_event_clause() {
128        return trigger_event_clause;
129    }
130
131    private TParseTreeNode trigger_event_clause = null;//plsql, one of TNonDmlTriggerClause,TCompoundDmlTriggerClause and TSimpleDmlTriggerClause
132
133    public void setWhenCondition(TExpression whenCondition) {
134        this.whenCondition = whenCondition;
135    }
136
137    public TExpression getWhenCondition() {
138        return whenCondition;
139    }
140
141    public TStatementSqlNode getStmt() {
142        return stmt;
143    }
144
145    private TStatementSqlNode   stmt = null;//plsql,db2
146
147    public void setStmt(TStatementSqlNode stmt) {
148        this.stmt = stmt;
149    }
150
151    /**
152     * @deprecated As of v2.0.1.0,  use {@link #getTriggeringClause()} instead
153     * @return onTable
154     */
155    public TTable getOnTable() {
156        return onTable;
157    }
158
159    public TStatementListSqlNode getStmts() {
160
161        return stmts;
162    }
163
164    public void setStmts(TStatementListSqlNode stmts) {
165        this.stmts = stmts;
166    }
167
168    public void setTriggeringClause(TTriggeringClause triggeringClause) {
169        this.triggeringClause = triggeringClause;
170    }
171
172    public void init(Object arg1,Object arg2)
173    { // used by sql server
174        triggerName = (TObjectName)arg1;
175        //this.triggerName.setObjectType(TObjectName.ttobjTrigger);
176        this.triggerName.setDbObjectType(EDbObjectType.trigger);
177
178        onTable = new TTable();
179        ((TObjectName)arg2).setObjectType(TObjectName.ttobjTable);
180        onTable.setTableName((TObjectName)arg2);
181        onTable.setTableType( ETableSource.objectname);
182    }
183
184    public void init(Object arg1)
185    {
186        // used by plsql 
187        triggerName = (TObjectName)arg1;
188       // triggerName.setObjectType(TObjectName.ttobjTrigger);
189        triggerName.setDbObjectType(EDbObjectType.trigger);
190
191    }
192
193    private TTriggerAction triggerAction = null;
194
195    public TTriggerAction getTriggerAction() {
196        return triggerAction;
197    }
198
199    public void setTriggerAction(TTriggerAction triggerAction) {
200
201        this.triggerAction = triggerAction;
202    }
203}