001package gudusoft.gsqlparser.stmt.mssql;
002
003import gudusoft.gsqlparser.*;
004import gudusoft.gsqlparser.nodes.*;
005import gudusoft.gsqlparser.stmt.TStoredProcedureSqlStatement;
006
007import java.util.EnumSet;
008
009/**
010 * @deprecated As of v2.0.1.0, replaced by {@link gudusoft.gsqlparser.stmt.TCreateTriggerStmt}
011 *
012 * SQL SQL create trigger statement.
013 */
014public class TMssqlCreateTrigger extends TStoredProcedureSqlStatement {
015     public TMssqlCreateTrigger (EDbVendor dbvendor){
016        super(dbvendor);
017        sqlstatementtype = ESqlStatementType.sstmssqlcreatetrigger ;
018     }
019
020
021    void buildsql() {
022    }
023
024    void clear() {
025    }
026
027    String getasprettytext() {
028        return "";
029    }
030
031    void iterate(TVisitorAbs pvisitor) {
032    }
033
034    private boolean alterTrigger;
035
036    public void setAlterTrigger(boolean alterTrigger) {
037        this.alterTrigger = alterTrigger;
038    }
039
040    public boolean isAlterTrigger() {
041
042        return alterTrigger;
043    }
044
045    public TObjectName getStoredProcedureName(){
046        return triggerName;
047    }
048
049    private TTable onTable = null;
050
051    public TTable getOnTable() {
052        return onTable;
053    }
054
055
056    public TObjectName getTriggerName() {
057        return triggerName;
058    }
059
060    private TObjectName triggerName = null;
061
062    public void setTimingPoint(ETriggerTimingPoint timingPoint) {
063        this.timingPoint = timingPoint;
064    }
065
066    public void setDmlTypes(EnumSet<ETriggerDmlType> dmlTypes) {
067        this.dmlTypes = dmlTypes;
068    }
069
070    public ETriggerTimingPoint getTimingPoint() {
071
072        return timingPoint;
073    }
074
075    public EnumSet<ETriggerDmlType> getDmlTypes() {
076        return dmlTypes;
077    }
078
079    public int doParseStatement(TCustomSqlStatement psql) {
080        if (rootNode == null) return -1;
081        if(!(rootNode instanceof TCreateTriggerSqlNode)) return -1;
082        TCreateTriggerSqlNode createTriggerNode = (TCreateTriggerSqlNode)rootNode;
083
084        super.doParseStatement(psql);
085        this.triggerName = createTriggerNode.getTriggerName();
086        alterTrigger = createTriggerNode.isAlterTrigger();
087        this.fireMode = createTriggerNode.getFireMode();
088        timingPoint = createTriggerNode.getTimingPoint();
089
090        onTable = createTriggerNode.getOnTable();
091        onTable.setEffectType(ETableEffectType.tetTriggerOn);
092        tables.addTable(onTable);
093
094        for(int i=0;i<createTriggerNode.getDmlTpyes().size();i++){
095            this.getDmlTpyes().add( createTriggerNode.getDmlTpyes().getDummyItem(i).st1 );
096            if (createTriggerNode.getDmlTpyes().getDummyItem(i).st1.toString().equalsIgnoreCase("insert")){
097                dmlTypes.add(ETriggerDmlType.tdtInsert);
098            }else if (createTriggerNode.getDmlTpyes().getDummyItem(i).st1.toString().equalsIgnoreCase("delete")){
099                dmlTypes.add(ETriggerDmlType.tdtDelete);
100            }else if (createTriggerNode.getDmlTpyes().getDummyItem(i).st1.toString().equalsIgnoreCase("update")){
101                dmlTypes.add(ETriggerDmlType.tdtUpdate);
102            }else{
103                dmlTypes.add(ETriggerDmlType.tdtEvent);
104            }
105        }
106
107        if (createTriggerNode.getStmts() != null){
108           createTriggerNode.getStmts().doParse(this,ESqlClause.unknown);
109            for(int i=0;i<createTriggerNode.getStmts().size();i++){
110               this.getBodyStatements().add(createTriggerNode.getStmts().getStatementSqlNode(i).getStmt());
111            }
112        }
113
114        return 0;
115    }
116
117    private int fireMode = TBaseType.tfmFor;
118    private ETriggerTimingPoint timingPoint = ETriggerTimingPoint.ttpAfter;
119    private EnumSet <ETriggerDmlType> dmlTypes = EnumSet.noneOf(ETriggerDmlType.class);
120
121    /**
122     * @deprecated As of v1.7.2.5, replaced by {@link gudusoft.gsqlparser.ETriggerDmlType}
123     * @return insert/delete/update action
124     */
125    public TSourceTokenList getDmlTpyes() {
126        if (this.dmlTpyes == null){
127            this.dmlTpyes = new TSourceTokenList();
128        }
129        return this.dmlTpyes;
130    }
131
132    private TSourceTokenList dmlTpyes = null;
133
134    /**
135     * @deprecated As of v1.7.2.5, replaced by {@link gudusoft.gsqlparser.ETriggerTimingPoint}
136     * @return trigger timing point
137     */
138    public int getFireMode() {
139        return fireMode;
140    }
141
142    public void accept(TParseTreeVisitor v){
143        v.preVisit(this);
144
145        v.postVisit(this);
146    }
147    public void acceptChildren(TParseTreeVisitor v){
148        v.preVisit(this);
149        if (getBodyStatements().size() > 0) getBodyStatements().acceptChildren(v);
150        v.postVisit(this);
151    }
152
153    public void setOnTable(TTable onTable) {
154        this.onTable = onTable;
155    }
156
157    public void setTriggerName(TObjectName triggerName) {
158        this.triggerName = triggerName;
159    }
160
161    public void setFireMode(int fireMode) {
162        this.fireMode = fireMode;
163    }
164}