KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > serversystem > datatriggersystem > DataTriggerTable


1 package com.daffodilwoods.daffodildb.server.serversystem.datatriggersystem;
2
3 import java.sql.*;
4
5 import com.daffodilwoods.daffodildb.server.datadictionarysystem.*;
6 import com.daffodilwoods.daffodildb.server.datasystem.utility.*;
7 import com.daffodilwoods.daffodildb.server.serversystem.*;
8 import com.daffodilwoods.daffodildb.server.serversystem.dmlvalidation.constraintsystem.*;
9 import com.daffodilwoods.daffodildb.server.serversystem.dmlvalidation.triggersystem.*;
10 import com.daffodilwoods.daffodildb.server.sessionsystem.*;
11 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator.*;
12 import com.daffodilwoods.database.general.*;
13 import com.daffodilwoods.database.resource.*;
14
15 public class DataTriggerTable implements _DataTriggerTable {
16   private _TriggerTable triggerTable;
17   private _ConstraintTable constraintTableImm;
18   private _ConstraintTable constraintTableDeff;
19   private _DefaultValueGetter defaultValueGetter;
20   private QualifiedIdentifier tableName;
21
22   public DataTriggerTable(_TriggerTable triggerTable, _ConstraintTable constraintTableImme,_ConstraintTable constraintTableDeffe,_DefaultValueGetter defaultValueGetter, QualifiedIdentifier tableName ) throws DException {
23     this.triggerTable = triggerTable;
24     constraintTableDeff = constraintTableDeffe;
25     constraintTableImm = constraintTableImme;
26     this.defaultValueGetter = defaultValueGetter;
27     this.tableName = tableName;
28   }
29
30   public Object JavaDoc insert(int[] columns , Object JavaDoc[] values, _StatementExecutionContext sec ) throws DException {
31      return insert(columns,values,sec, sec.getUserSession().getSession().getImmediateConstriantsForChecking());
32   }
33
34   public Object JavaDoc insertForAlreadyInsertedRecord( _Iterator iter , int[] columns , Object JavaDoc[] values, _StatementExecutionContext statementExecutionContext , boolean fireTriggers ) throws DException {
35       _UserSession userSession = statementExecutionContext.getUserSession();
36       _UserSessionTable userSessionTable = userSession.getUserSessionTable(tableName);
37       defaultValueGetter.updateDefaultValues(columns,values,statementExecutionContext.getServerSession());
38       RecordVersion recordVersion=null;
39      _PrivilegeTable privilegeTable = ((UserSessionTable)userSessionTable).getPrivilegeTable();
40           boolean insertRight = privilegeTable.hasTablePrivileges(_PrivilegeTable.INSERT);
41         if (columns == null && !insertRight)
42            throw new PrivilegeException("DSE340", new Object JavaDoc[] {"INSERT", tableName});
43         insertRight = privilegeTable.hasColumnPrivileges(_PrivilegeTable.INSERT, columns);
44         if (!insertRight )
45            throw new PrivilegeException("DSE340", new Object JavaDoc[] {"INSERT", tableName});
46
47          recordVersion = userSessionTable.updateWithoutRights(iter, columns, values);
48       statementExecutionContext.setRecordVersion( recordVersion );
49       if( fireTriggers ){
50         triggerTable.FireBeforeInsertRowLevelTriggers( statementExecutionContext );
51         _ServerSession globalSession = userSession.getSession().getSessionDatabase().getGlobalSession();
52         statementExecutionContext.setOperationTypePerformSameOperation(true);
53         constraintTableImm.checkInsertConstraints( globalSession,statementExecutionContext , columns );
54         statementExecutionContext.setOperationTypePerformSameOperation(false);
55         constraintTableDeff.checkInsertConstraints( globalSession,statementExecutionContext , columns );
56          triggerTable.FireAfterInsertRowLevelTriggers(statementExecutionContext);
57       }
58       return recordVersion;
59    }
60
61    public Object JavaDoc insertWithTriggersOnly(int[] columns, Object JavaDoc[] values, _StatementExecutionContext statementExecutionContext) throws DException {
62       _UserSession userSession = statementExecutionContext.getUserSession();
63       _UserSessionTable userSessionTable = userSession.getUserSessionTable(tableName);
64       Object JavaDoc[] newValues = defaultValueGetter.addDefaultValues( columns, values ,statementExecutionContext.getServerSession() );
65       int[] columnsToInsert = (int[]) newValues[0];
66       Object JavaDoc[] valuesToInsert = (Object JavaDoc[]) newValues[1];
67       RecordVersion recordVersion = null;
68       if (statementExecutionContext.getUserRight())
69          recordVersion = userSessionTable.insert(columnsToInsert, valuesToInsert);
70       else
71          recordVersion = userSessionTable.insertWithoutRights(columnsToInsert, valuesToInsert);
72       statementExecutionContext.setRecordVersion(recordVersion);
73       statementExecutionContext.updateDMLResult(tableName, columns,recordVersion);
74       triggerTable.FireBeforeInsertRowLevelTriggers(statementExecutionContext);
75       if (userSession.getSession().getImmediateConstriantsForChecking()) {
76          _ServerSession globalSession = userSession.getSession().getSessionDatabase().getGlobalSession();
77          statementExecutionContext.setOperationTypePerformSameOperation(true);
78          constraintTableImm.checkInsertConstraints(globalSession, statementExecutionContext, columnsToInsert);
79          statementExecutionContext.setOperationTypePerformSameOperation(false);
80          constraintTableDeff.checkInsertConstraints(globalSession, statementExecutionContext, columnsToInsert);
81       }
82       triggerTable.FireAfterInsertRowLevelTriggers(statementExecutionContext);
83       return recordVersion;
84    }
85
86    public Object JavaDoc insert(int[] columns, Object JavaDoc[] values, _StatementExecutionContext statementExecutionContext, boolean checkConstraints) throws DException {
87     _UserSession userSession = statementExecutionContext.getUserSession();
88     _UserSessionTable userSessionTable = userSession.getUserSessionTable(tableName);
89     Object JavaDoc[] newValues = defaultValueGetter.addDefaultValues( columns, values ,statementExecutionContext.getServerSession() );
90     int[] columnsToInsert = (int[]) newValues[0];
91     Object JavaDoc[] valuesToInsert = (Object JavaDoc[]) newValues[1];
92     if(columnsToInsert == null){
93       columnsToInsert = SystemFieldsCharacteristics.IS ;// new int[]{SystemFields.invalidSessionId};
94
valuesToInsert = new Object JavaDoc[]{SystemFields.maxIntegerValue};
95    }
96    RecordVersion recordVersion = null;
97    if (statementExecutionContext.getUserRight())
98       recordVersion = userSessionTable.insert(columnsToInsert, valuesToInsert);
99    else
100       recordVersion = userSessionTable.insertWithoutRights(columnsToInsert, valuesToInsert);
101     statementExecutionContext.setRecordVersion( recordVersion );
102     statementExecutionContext.updateDMLResult(tableName, columns, recordVersion);
103     if(checkConstraints ){
104         triggerTable.FireBeforeInsertRowLevelTriggers( statementExecutionContext );
105        _ServerSession globalSession = userSession.getSession().getSessionDatabase().getGlobalSession();
106        statementExecutionContext.setOperationTypePerformSameOperation(true);
107        constraintTableImm.checkInsertConstraints( globalSession,statementExecutionContext , columnsToInsert );
108        statementExecutionContext.setOperationTypePerformSameOperation(false);
109        constraintTableDeff.checkInsertConstraints( globalSession,statementExecutionContext , columnsToInsert );
110        triggerTable.FireAfterInsertRowLevelTriggers( statementExecutionContext );
111     }
112     return recordVersion ;
113    }
114
115    public Object JavaDoc insertVersion(int[] columns, Object JavaDoc[] values, _StatementExecutionContext statementExecutionContext, boolean checkConstraints, Date date) throws DException {
116       _UserSession userSession = statementExecutionContext.getUserSession();
117
118       _UserSessionTable userSessionTable = userSession.getUserSessionTable(tableName);
119       Object JavaDoc[] newValues = defaultValueGetter.addDefaultValues(columns, values, statementExecutionContext.getServerSession());
120       int[] columnsToInsert = (int[]) newValues[0];
121       Object JavaDoc[] valuesToInsert = (Object JavaDoc[]) newValues[1];
122       RecordVersion recordVersion = userSessionTable.insertVersion(columnsToInsert, valuesToInsert, date);
123
124       statementExecutionContext.setRecordVersion(recordVersion);
125       triggerTable.FireBeforeInsertRowLevelTriggers(statementExecutionContext);
126       if (checkConstraints) {
127          _ServerSession globalSession = userSession.getSession().getSessionDatabase().getGlobalSession();
128          statementExecutionContext.setOperationTypePerformSameOperation(true);
129          constraintTableImm.checkInsertConstraints(globalSession, statementExecutionContext, columnsToInsert);
130          statementExecutionContext.setConstraintTypeDeferred(false);
131          constraintTableDeff.checkInsertConstraints(globalSession, statementExecutionContext, columnsToInsert);
132       }
133       triggerTable.FireAfterInsertRowLevelTriggers(statementExecutionContext);
134       return recordVersion;
135    }
136
137   public Object JavaDoc update( _Iterator iterator, int[] columns, Object JavaDoc[] values, _StatementExecutionContext statementExecutionContext ) throws DException {
138     _UserSession userSession = statementExecutionContext.getUserSession();
139     defaultValueGetter.updateDefaultValues(columns,values,statementExecutionContext.getServerSession());
140     _UserSessionTable userSessionTable = userSession.getUserSessionTable( tableName );
141     RecordVersion recordVersion = null;
142     if (statementExecutionContext.getUserRight())
143        recordVersion = userSessionTable.update(iterator, columns, values);
144     else
145        recordVersion = userSessionTable.updateWithoutRights(iterator, columns, values);
146     statementExecutionContext.setRecordVersion(recordVersion);
147     triggerTable.FireBeforeUpdateRowLevelTriggers( columns ,statementExecutionContext );
148     _ServerSession globalSession = userSession.getSession().getSessionDatabase().getGlobalSession();
149       if (statementExecutionContext.getUserSession().getSession().getImmediateConstriantsForChecking()) {
150          statementExecutionContext.setOperationTypePerformSameOperation(true);
151          constraintTableImm.checkUpdateConstraints(globalSession, statementExecutionContext, columns);
152          statementExecutionContext.setOperationTypePerformSameOperation(false);
153          constraintTableDeff.checkUpdateConstraints(globalSession, statementExecutionContext, columns);
154       }
155       triggerTable.FireAfterUpdateRowLevelTriggers(columns, statementExecutionContext);
156       return recordVersion;
157    }
158
159    public Object JavaDoc updateVersion(_Iterator iterator, int[] columns, Object JavaDoc[] values, _StatementExecutionContext statementExecutionContext, Date date) throws DException {
160       _UserSession userSession = statementExecutionContext.getUserSession();
161       defaultValueGetter.updateDefaultValues(columns, values, statementExecutionContext.getServerSession());
162       _UserSessionTable userSessionTable = userSession.getUserSessionTable(tableName);
163       RecordVersion recordVersion = userSessionTable.updateVersion(iterator, columns, values, date);
164       statementExecutionContext.setRecordVersion(recordVersion);
165       triggerTable.FireBeforeUpdateRowLevelTriggers(columns, statementExecutionContext);
166       _ServerSession globalSession = userSession.getSession().getSessionDatabase().getGlobalSession();
167       if (statementExecutionContext.isConstraintCheckedForDefferable()) {
168          statementExecutionContext.setOperationTypePerformSameOperation(true);
169          constraintTableImm.checkUpdateConstraints(globalSession, statementExecutionContext, columns);
170          statementExecutionContext.setOperationTypePerformSameOperation(false);
171          constraintTableDeff.checkUpdateConstraints(globalSession, statementExecutionContext, columns);
172       }
173       triggerTable.FireAfterUpdateRowLevelTriggers(columns, statementExecutionContext);
174       return recordVersion;
175    }
176
177    public Object JavaDoc delete(_Iterator iterator, _StatementExecutionContext statementExecutionContext) throws DException {
178       _UserSession userSession = statementExecutionContext.getUserSession();
179     _UserSessionTable userSessionTable = userSession.getUserSessionTable(tableName);
180      RecordVersion recordVersion=null;
181      if (statementExecutionContext.getUserRight())
182         recordVersion = userSessionTable.delete(iterator);
183      else
184         recordVersion = userSessionTable.deleteWithoutRights(iterator);
185
186     statementExecutionContext.setRecordVersion( recordVersion );
187     triggerTable.FireBeforeDeleteRowLevelTriggers( statementExecutionContext );
188     _ServerSession globalSession = userSession.getSession().getSessionDatabase().getGlobalSession();
189     if( statementExecutionContext.getUserSession().getSession().getImmediateConstriantsForChecking() ){
190         statementExecutionContext.setOperationTypePerformSameOperation( true );
191         constraintTableImm.checkDeleteConstraints( globalSession, statementExecutionContext );
192         statementExecutionContext.setOperationTypePerformSameOperation( false );
193         constraintTableDeff.checkDeleteConstraints( globalSession, statementExecutionContext );
194     }
195     triggerTable.FireAfterDeleteRowLevelTriggers( statementExecutionContext );
196     return recordVersion ;
197   }
198
199   public Object JavaDoc deleteVersion( _Iterator iterator, java.sql.Date JavaDoc date ,_StatementExecutionContext statementExecutionContext ) throws DException {
200     _UserSession userSession = statementExecutionContext.getUserSession();
201     _UserSessionTable userSessionTable = userSession.getUserSessionTable(tableName);
202     RecordVersion recordVersion = userSessionTable.deleteVersion(iterator,date);
203     statementExecutionContext.setRecordVersion( recordVersion );
204      triggerTable.FireBeforeDeleteRowLevelTriggers( statementExecutionContext );
205     _ServerSession globalSession = userSession.getSession().getSessionDatabase().getGlobalSession();
206     if( statementExecutionContext.isConstraintCheckedForDefferable() ){
207         statementExecutionContext.setOperationTypePerformSameOperation( true );
208         constraintTableImm.checkDeleteConstraints( globalSession, statementExecutionContext );
209         statementExecutionContext.setOperationTypePerformSameOperation( false );
210         constraintTableDeff.checkDeleteConstraints( globalSession, statementExecutionContext );
211     }
212     triggerTable.FireAfterDeleteRowLevelTriggers( statementExecutionContext );
213     return recordVersion ;
214   }
215
216 }
217
Popular Tags