comparison Core/SQLite/Transaction.cpp @ 0:3959d33612cc

initial commit
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 19 Jul 2012 14:32:22 +0200
parents
children db4d996ea264
comparison
equal deleted inserted replaced
-1:000000000000 0:3959d33612cc
1 /**
2 * Palantir - A Lightweight, RESTful DICOM Store
3 * Copyright (C) 2012 Medical Physics Department, CHU of Liege,
4 * Belgium
5 *
6 * This program is free software: you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License as
8 * published by the Free Software Foundation, either version 3 of the
9 * License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 **/
19
20
21 #include "Transaction.h"
22
23 namespace Palantir
24 {
25 namespace SQLite
26 {
27 Transaction::Transaction(Connection& connection) :
28 connection_(connection),
29 isOpen_(false)
30 {
31 }
32
33 Transaction::~Transaction()
34 {
35 if (isOpen_)
36 {
37 connection_.RollbackTransaction();
38 }
39 }
40
41 void Transaction::Begin()
42 {
43 if (isOpen_)
44 {
45 throw PalantirException("SQLite: Beginning a transaction twice!");
46 }
47
48 isOpen_ = connection_.BeginTransaction();
49 if (!isOpen_)
50 {
51 throw PalantirException("SQLite: Unable to create a transaction");
52 }
53 }
54
55 void Transaction::Rollback()
56 {
57 if (!isOpen_)
58 {
59 throw PalantirException("SQLite: Attempting to roll back a nonexistent transaction. "
60 "Did you remember to call Begin()?");
61 }
62
63 isOpen_ = false;
64
65 connection_.RollbackTransaction();
66 }
67
68 void Transaction::Commit()
69 {
70 if (!isOpen_)
71 {
72 throw PalantirException("SQLite: Attempting to roll back a nonexistent transaction. "
73 "Did you remember to call Begin()?");
74 }
75
76 isOpen_ = false;
77
78 if (!connection_.CommitTransaction())
79 {
80 throw PalantirException("SQLite: Failure when committing the transaction");
81 }
82 }
83 }
84 }