KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > serversystem > triggerInfo > TriggerExecuterInfo


1 package com.daffodilwoods.daffodildb.server.serversystem.triggerInfo;
2
3 import java.util.BitSet JavaDoc;
4 import com.daffodilwoods.daffodildb.server.datadictionarysystem._TriggerCharacteristics;
5 import com.daffodilwoods.daffodildb.server.sql99.ddl.descriptors.TriggerDescriptor;
6 import com.daffodilwoods.database.resource.DException;
7 import com.daffodilwoods.daffodildb.server.serversystem.StatementExecutionContext;
8 import com.daffodilwoods.database.general.QualifiedIdentifier;
9 import com.daffodilwoods.daffodildb.server.serversystem._StatementExecutionContext;
10 import java.util.ArrayList JavaDoc;
11 import java.util.Arrays JavaDoc;
12
13 public class TriggerExecuterInfo {
14
15 private BitSet JavaDoc bitset;
16
17 private _Triggers[] beforeInsertTrigger = null;
18
19 private _Triggers[] afterInsertTrigger = null;
20
21 private _Triggers[] beforeUpdateTrigger = null;
22
23 private _Triggers[] afterUpdateTrigger = null;
24
25 private _Triggers[] beforeDeleteTrigger = null;
26
27 private _Triggers[] afterDeleteTrigger = null;
28
29   public TriggerExecuterInfo() {
30     bitset = new BitSet JavaDoc(6);
31
32    }
33
34    public _Triggers[] getBeforeInsertTrigger(_TriggerCharacteristics triggerCharacteristics, _StatementExecutionContext statementExecutionContext,QualifiedIdentifier tableName) throws DException{
35      if(bitset.get(0) )
36        return beforeInsertTrigger;
37      TriggerDescriptor[] triggerDescriptor = (TriggerDescriptor[])triggerCharacteristics.getBeforeInsertTriggers() ;
38      if(triggerDescriptor == null){
39         bitset.set(0) ;
40        return null;}
41      beforeInsertTrigger = new Trigger[triggerDescriptor.length];
42      for (int i = 0; i < triggerDescriptor.length; i++) {
43        beforeInsertTrigger[i] = new Trigger( triggerDescriptor[i], statementExecutionContext ,tableName );
44      }
45      bitset.set(0) ;
46      return beforeInsertTrigger;
47    }
48
49    public _Triggers[] getAfterInsertTrigger(_TriggerCharacteristics triggerCharacteristics, _StatementExecutionContext statementExecutionContext,QualifiedIdentifier tableName) throws DException{
50      if(bitset.get(1) ){
51        return afterInsertTrigger;
52      }
53      TriggerDescriptor[] triggerDescriptor = (TriggerDescriptor[])triggerCharacteristics.getAfterInsertTriggers() ;
54        if(triggerDescriptor == null){
55           bitset.set(1) ;
56        return null;
57      }
58       afterInsertTrigger = new Trigger[triggerDescriptor.length];
59       for (int i = 0; i < triggerDescriptor.length; i++) {
60            afterInsertTrigger[i] = new Trigger( triggerDescriptor[i], statementExecutionContext ,tableName );
61        }
62         bitset.set(1) ;
63        return afterInsertTrigger;
64    }
65
66    public _Triggers[] getBeforeUpdateTrigger(_TriggerCharacteristics triggerCharacteristics, _StatementExecutionContext statementExecutionContext,QualifiedIdentifier tableName,int[] cols) throws DException{
67
68     if(!bitset.get(2) ){
69       TriggerDescriptor[] triggerDescriptor = (TriggerDescriptor[]) triggerCharacteristics.getBeforeUpdateTriggers(null);
70
71       if (triggerDescriptor == null){
72          bitset.set(2);
73         return null;}
74       beforeUpdateTrigger = new Trigger[triggerDescriptor.length];
75       for (int i = 0; i < triggerDescriptor.length; i++) {
76         beforeUpdateTrigger[i] = new Trigger(triggerDescriptor[i],
77                                              statementExecutionContext,
78                                              tableName);
79       }
80     }
81     if (beforeUpdateTrigger == null){
82        bitset.set(2);
83       return null;
84     }
85     ArrayList JavaDoc tempTriggerList =new ArrayList JavaDoc(Arrays.asList( beforeUpdateTrigger)) ;
86     ArrayList JavaDoc triggersToReturn = new ArrayList JavaDoc();
87     for (int i = 0; i < cols.length; i++) {
88       for (int j = tempTriggerList.size()-1; j >= 0 ; j--) {
89         if(((Trigger)tempTriggerList.get(j)).isColumnIndeded(cols[i]) ){
90           triggersToReturn.add( tempTriggerList.get(j));
91           tempTriggerList.remove(j) ;
92         }
93       }
94     }
95      bitset.set(2);
96     return triggersToReturn.size() == 0 ? null : (_Triggers[])triggersToReturn.toArray(new _Triggers[0]) ;
97   }
98
99
100   public _Triggers[] getAfterUpdateTrigger(_TriggerCharacteristics triggerCharacteristics, _StatementExecutionContext statementExecutionContext,QualifiedIdentifier tableName,int[] cols) throws DException{
101     if(!bitset.get(3) ){
102        TriggerDescriptor[] triggerDescriptor = (TriggerDescriptor[]) triggerCharacteristics.getAfterUpdateTriggers(null) ;
103        if (triggerDescriptor == null){
104          bitset.set(3);
105          return null;
106        }
107        afterUpdateTrigger = new Trigger[triggerDescriptor.length];
108        for (int i = 0; i < triggerDescriptor.length; i++) {
109          afterUpdateTrigger[i] = new Trigger(triggerDescriptor[i],
110                                               statementExecutionContext,
111                                               tableName);
112        }
113      }
114      if (afterUpdateTrigger == null){
115        bitset.set(3);
116        return null;
117      }
118
119
120      ArrayList JavaDoc tempTriggerList = new ArrayList JavaDoc(Arrays.asList(afterUpdateTrigger)) ;
121      ArrayList JavaDoc triggersToReturn = new ArrayList JavaDoc();
122      for (int i = 0; i < cols.length; i++) {
123        for (int j = tempTriggerList.size()-1; j >= 0 ; j--) {
124          if(((Trigger)tempTriggerList.get(j)).isColumnIndeded(cols[i]) ){
125            triggersToReturn.add( tempTriggerList.get(j));
126            tempTriggerList.remove(j) ;
127          }
128        }
129      }
130      bitset.set(3);
131      return triggersToReturn.size() == 0 ? null : (_Triggers[])triggersToReturn.toArray(new _Triggers[0]) ;
132
133   }
134
135    public _Triggers[] getBeforeDeleteTrigger(_TriggerCharacteristics triggerCharacteristics, _StatementExecutionContext statementExecutionContext,QualifiedIdentifier tableName) throws DException{
136      if(bitset.get(4) )
137      return beforeDeleteTrigger;
138    TriggerDescriptor[] triggerDescriptor = (TriggerDescriptor[])triggerCharacteristics.getBeforeDeleteTriggers() ;
139
140    if(triggerDescriptor == null){
141      bitset.set(4) ;
142      return null;
143    }
144    beforeDeleteTrigger = new Trigger[triggerDescriptor.length];
145    for (int i = 0; i < triggerDescriptor.length; i++) {
146      beforeDeleteTrigger[i] = new Trigger( triggerDescriptor[i], statementExecutionContext ,tableName );
147    }
148
149          bitset.set(4) ;
150      return beforeDeleteTrigger ;
151    }
152
153    public _Triggers[] getAfterDeleteTrigger(_TriggerCharacteristics triggerCharacteristics,
154                                           _StatementExecutionContext statementExecutionContext,
155                                           QualifiedIdentifier tableName) throws DException {
156      if (bitset.get(5))
157        return afterDeleteTrigger;
158      TriggerDescriptor[] triggerDescriptor = (TriggerDescriptor[])
159          triggerCharacteristics.getAfterDeleteTriggers();
160
161      if (triggerDescriptor == null){
162       bitset.set(5);
163       return null;
164      }
165      afterDeleteTrigger = new Trigger[triggerDescriptor.length];
166      for (int i = 0; i < triggerDescriptor.length; i++) {
167        afterDeleteTrigger[i] = new Trigger(triggerDescriptor[i],statementExecutionContext, tableName);
168      }
169
170       bitset.set(5);
171      return afterDeleteTrigger;
172    }
173
174
175
176 }
177
Popular Tags