KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > sql99 > dml > InsertExecuterDefault


1 package com.daffodilwoods.daffodildb.server.sql99.dml;
2
3 import com.daffodilwoods.daffodildb.server.serversystem.*;
4 import com.daffodilwoods.daffodildb.server.serversystem.datatriggersystem.*;
5 import com.daffodilwoods.daffodildb.server.serversystem.dmlvalidation.statementtriggersystem.*;
6 import com.daffodilwoods.daffodildb.server.sessionsystem.*;
7 import com.daffodilwoods.daffodildb.server.sql99.*;
8 import com.daffodilwoods.daffodildb.server.sql99.common.*;
9 import com.daffodilwoods.daffodildb.server.sql99.utils.*;
10 import com.daffodilwoods.database.general.*;
11 import com.daffodilwoods.database.resource.*;
12 import java.util.*;
13 import com.daffodilwoods.daffodildb.server.datasystem.interfaces.*;
14
15 public class InsertExecuterDefault implements _Executer {
16
17    _StatementExecutionContext sec;
18    _DataTriggerTable dataTriggerTable;
19    _StatementTriggerTable statementTriggerTable;
20    _UserSession childUserSession;
21    _ServerSession serverSession;
22    TableDetails tableDetails;
23  _DropTableInfo dropTableInfo;
24    public InsertExecuterDefault(TableDetails tableDetails, _StatementExecutionContext ssec) throws DException {
25       this.tableDetails = tableDetails;
26       sec = ssec;
27       serverSession = sec.getServerSession();
28       performInitialisations();
29       dropTableInfo = ((_MergeTable)serverSession.getIndexTable(tableDetails.getQualifiedIdentifier() )).getDropTableInfo() ;
30    }
31
32    public Object JavaDoc execute(_VariableValues vv) throws com.daffodilwoods.database.resource.DException {
33      checkForDroppedTable();
34      childUserSession = sec.getServerSession().getUserSession();
35       childUserSession.startSavePoint();
36
37       int count = 0;
38       _TriggerExecutionContext tec = new TriggerExecutionContext();
39       sec.setUserSession(childUserSession);
40       sec.setTriggerExecutionContext(tec);
41       Object JavaDoc insertEvent = null;
42       try {
43          statementTriggerTable.fireBeforeInsertStatementLevelTriggers(sec);
44          insertEvent = dataTriggerTable.insertWithTriggersOnly(null, null, sec);
45          count++;
46          statementTriggerTable.fireAfterInsertStatementLevelTriggers(sec);
47       } catch (DException e) {
48         if(e.getDseCode().equalsIgnoreCase("DSE5582"))
49           throw new DException("DSE5582",null);
50         if (e.getDseCode().equalsIgnoreCase("DSE5583"))
51           throw new DException("DSE5583",null);
52          childUserSession.rollbackSavePoint(sec);
53          throw new DmlStatementException("DSE1275", new Object JavaDoc[] {tableDetails.getQualifiedTableName()}
54                                          , e);
55       }
56       catch (Exception JavaDoc e) {
57          e.printStackTrace();
58          childUserSession.rollbackSavePoint(sec);
59          throw new DException("DSE0", new Object JavaDoc[] {e.getMessage()});
60       }
61       childUserSession.commitSavePoint(sec);
62       if (sec.getAutoCommit() && serverSession.getAutoCommit() && !childUserSession.getSession().hasAnyChild()) {
63          serverSession.commit();
64       }
65       if (sec.getAutoGeneratedType()) {
66          DMLResult dmlResult = sec.getDMLResult();
67          dmlResult.setrowsEffected(count);
68          return dmlResult;
69       }
70
71       return new Integer JavaDoc(count);
72    }
73
74    public Object JavaDoc execute(Object JavaDoc[] obj) throws com.daffodilwoods.database.resource.DException {
75      checkForDroppedTable();
76      if (obj == null) {
77          return execute(new VariableValues(sec.getServerSession()));
78       }
79       _VariableValues vv = new VariableValues(sec.getServerSession());
80       return execute(vv);
81    }
82
83    private void performInitialisations() throws DException {
84       QualifiedIdentifier tableName = tableDetails.getQualifiedIdentifier();
85       dataTriggerTable = sec.getDataTriggerTable(tableName);
86       statementTriggerTable = sec.getStatementTriggerTable(tableName);
87    }
88
89    public Object JavaDoc executeForFresh(Object JavaDoc[] parm1) throws com.daffodilwoods.database.resource.DException {
90       return execute(parm1);
91    }
92
93
94      public void checkForDroppedTable() throws DException{
95          if (dropTableInfo.isTableDropped())
96            throw new DException("DSE5584", null);
97      }
98
99 }
100
Popular Tags