2 * This file is part of NeverNote
\r
3 * Copyright 2009 Randy Baumgarte
\r
5 * This file may be licensed under the terms of of the
\r
6 * GNU General Public License Version 2 (the ``GPL'').
\r
8 * Software distributed under the License is distributed
\r
9 * on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
\r
10 * express or implied. See the GPL for the specific language
\r
11 * governing rights and limitations.
\r
13 * You should have received a copy of the GPL along with this
\r
14 * program. If not, go to http://www.gnu.org/licenses/gpl.html
\r
15 * or write to the Free Software Foundation, Inc.,
\r
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
\r
21 package cx.fbn.nevernote.sql;
\r
23 import java.util.ArrayList;
\r
24 import java.util.List;
\r
26 import cx.fbn.nevernote.sql.driver.NSqlQuery;
\r
27 import cx.fbn.nevernote.utilities.ApplicationLogger;
\r
28 import cx.fbn.nevernote.utilities.ListManager;
\r
30 public class DeletedTable {
\r
32 private final ApplicationLogger logger;
\r
33 private final DatabaseConnection db;
\r
37 public DeletedTable(ApplicationLogger l,DatabaseConnection d) {
\r
42 public void createTable() {
\r
43 NSqlQuery query = new NSqlQuery(db.getConnection());
\r
44 logger.log(logger.HIGH, "Creating table DeletedItems...");
\r
45 if (!query.exec("Create table DeletedItems (guid varchar primary key, type varchar)"))
\r
46 logger.log(logger.HIGH, "Table DeletedItems creation FAILED!!!");
\r
49 public void dropTable() {
\r
50 NSqlQuery query = new NSqlQuery(db.getConnection());
\r
51 query.exec("Drop table DeletedItems");
\r
53 // Add an item to the deleted table
\r
54 public void addDeletedItem(String guid, String type) {
\r
55 if (exists(guid,type))
\r
57 NSqlQuery query = new NSqlQuery(db.getConnection());
\r
58 query.prepare("Insert Into DeletedItems (guid, type) Values(:guid, :type)");
\r
59 query.bindValue(":guid", guid);
\r
60 query.bindValue(":type", type);
\r
61 if (!query.exec()) {
\r
62 logger.log(logger.MEDIUM, "Insert into deleted items failed.");
\r
63 logger.log(logger.MEDIUM, query.lastError());
\r
66 // Check if a record exists
\r
67 public boolean exists(String guid, String type) {
\r
68 NSqlQuery query = new NSqlQuery(db.getConnection());
\r
69 query.prepare("Select guid, type from DeletedItems where guid=:guid and type=:type");
\r
70 query.bindValue(":guid", guid);
\r
71 query.bindValue(":type", type);
\r
73 if (!query.next()) {
\r
78 // Add an item to the deleted table
\r
79 public void expungeDeletedItem(String guid, String type) {
\r
80 NSqlQuery query = new NSqlQuery(db.getConnection());
\r
81 query.prepare("delete from DeletedItems where guid=:guid and type=:type");
\r
82 query.bindValue(":guid", guid);
\r
83 query.bindValue(":type", type);
\r
84 if (!query.exec()) {
\r
85 logger.log(logger.MEDIUM, "Expunge deleted items failed.");
\r
86 logger.log(logger.MEDIUM, query.lastError());
\r
89 public List<DeletedItemRecord> getAllDeleted() {
\r
90 logger.log(logger.HIGH, "Entering DeletedTable.getAllDeleted");
\r
91 List<DeletedItemRecord> list = new ArrayList<DeletedItemRecord>();
\r
92 NSqlQuery query = new NSqlQuery(db.getConnection());
\r
93 query.exec("Select guid, type from DeletedItems");
\r
94 while (query.next()) {
\r
95 DeletedItemRecord record = new DeletedItemRecord();
\r
96 record.guid = query.valueString(0);
\r
97 record.type = query.valueString(1);
\r
100 logger.log(logger.HIGH, "Leaving DeletedTable.getAllDeleted");
\r
104 public void expungeAllDeletedRecords() {
\r
105 NSqlQuery query = new NSqlQuery(db.getConnection());
\r
106 query.exec("delete from DeletedItems");
\r