KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > hsqldb > Transaction


1 /* Copyright (c) 1995-2000, The Hypersonic SQL Group.
2  * All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are met:
6  *
7  * Redistributions of source code must retain the above copyright notice, this
8  * list of conditions and the following disclaimer.
9  *
10  * Redistributions in binary form must reproduce the above copyright notice,
11  * this list of conditions and the following disclaimer in the documentation
12  * and/or other materials provided with the distribution.
13  *
14  * Neither the name of the Hypersonic SQL Group nor the names of its
15  * contributors may be used to endorse or promote products derived from this
16  * software without specific prior written permission.
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21  * ARE DISCLAIMED. IN NO EVENT SHALL THE HYPERSONIC SQL GROUP,
22  * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
26  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  *
30  * This software consists of voluntary contributions made by many individuals
31  * on behalf of the Hypersonic SQL Group.
32  *
33  *
34  * For work added by the HSQL Development Group:
35  *
36  * Copyright (c) 2001-2005, The HSQL Development Group
37  * All rights reserved.
38  *
39  * Redistribution and use in source and binary forms, with or without
40  * modification, are permitted provided that the following conditions are met:
41  *
42  * Redistributions of source code must retain the above copyright notice, this
43  * list of conditions and the following disclaimer.
44  *
45  * Redistributions in binary form must reproduce the above copyright notice,
46  * this list of conditions and the following disclaimer in the documentation
47  * and/or other materials provided with the distribution.
48  *
49  * Neither the name of the HSQL Development Group nor the names of its
50  * contributors may be used to endorse or promote products derived from this
51  * software without specific prior written permission.
52  *
53  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
54  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
55  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
56  * ARE DISCLAIMED. IN NO EVENT SHALL HSQL DEVELOPMENT GROUP, HSQLDB.ORG,
57  * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
58  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
59  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
60  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
61  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
62  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
63  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
64  */

65
66
67 package org.hsqldb;
68
69 /**
70  * Represents a single row table operation.
71  *
72  * @author Thomas Mueller (Hypersonic SQL Group)
73  * @version 1.8.0
74  * @since Hypersonic SQL
75  */

76 class Transaction {
77
78     boolean isDelete;
79     Table tTable;
80     Row row;
81     long SCN;
82
83     /**
84      * Constructor. <p>
85      *
86      * @param delete if true, this represents a single row delete action, else
87      * a single row insert action
88      * @param nested true if this action is part of a transaction initiated
89      * within an INSERT INTO or UPDATE statement
90      * @param table the Table object against which the operation occured
91      * @param row the row data that iis inserted or deleted
92      */

93     Transaction(boolean delete, Table table, Row row, long SCN) {
94
95         isDelete = delete;
96         tTable = table;
97         this.row = row;
98     }
99
100     /**
101      * Undoes the single row delete or insert represented by this object.
102      *
103      * @param session the session context in which to perform the undo
104      * @param log if true log the work
105      * @throws HsqlException if a database access error occurs
106      */

107     void rollback(Session session, boolean log) {
108
109         try {
110             if (isDelete) {
111                 tTable.insertNoCheckRollback(session, row, log);
112             } else {
113                 tTable.deleteNoCheckRollback(session, row, log);
114             }
115         } catch (Exception JavaDoc e) {
116
117 // System.out.println("rollback error: isDelete " + isDelete);
118
}
119     }
120
121     void commit(Session session) {
122
123         try {
124             if (isDelete) {
125                 tTable.removeRowFromStore(row);
126             } else {
127                 tTable.commitRowToStore(row);
128             }
129         } catch (Exception JavaDoc e) {
130
131 // System.out.println("rollback error: isDelete " + isDelete);
132
}
133     }
134
135     void logRollback(Session session) {
136
137         try {
138             if (isDelete) {
139                 tTable.database.logger.writeInsertStatement(session, tTable,
140                         row.getData());
141             } else {
142                 tTable.database.logger.writeDeleteStatement(session, tTable,
143                         row.getData());
144             }
145         } catch (Exception JavaDoc e) {}
146     }
147
148     void logAction(Session session) {
149
150         try {
151             if (isDelete) {
152                 tTable.database.logger.writeDeleteStatement(session, tTable,
153                         row.getData());
154             } else {
155                 tTable.database.logger.writeInsertStatement(session, tTable,
156                         row.getData());
157             }
158         } catch (Exception JavaDoc e) {}
159     }
160 }
161
Popular Tags