OSDN Git Service

Add logic to display stacks in notebook tree
[neighbornote/NeighborNote.git] / src / cx / fbn / nevernote / sql / SyncTable.java
1 /*\r
2  * This file is part of NeverNote \r
3  * Copyright 2009 Randy Baumgarte\r
4  * \r
5  * This file may be licensed under the terms of of the\r
6  * GNU General Public License Version 2 (the ``GPL'').\r
7  *\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
12  *\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
17  *\r
18 */\r
19 \r
20 \r
21 package cx.fbn.nevernote.sql;\r
22 \r
23 import cx.fbn.nevernote.sql.driver.NSqlQuery;\r
24 import cx.fbn.nevernote.utilities.ApplicationLogger;\r
25 import cx.fbn.nevernote.utilities.ListManager;\r
26 \r
27 public class SyncTable {\r
28         ListManager parent;\r
29         private final ApplicationLogger                 logger;\r
30         private final DatabaseConnection                db;\r
31 \r
32         \r
33         // Constructor\r
34         public SyncTable(ApplicationLogger l, DatabaseConnection d) {\r
35                 logger = l;\r
36                 db = d;\r
37         }\r
38         // Create the table\r
39         public void createTable() {\r
40                 NSqlQuery query = new NSqlQuery(db.getConnection());\r
41                 logger.log(logger.HIGH, "Creating table Sync...");\r
42         if (!query.exec("Create table Sync (key varchar primary key, value varchar);"))\r
43                 logger.log(logger.HIGH, "Table Sync creation FAILED!!!"); \r
44         addRecord("LastSequenceDate","0");\r
45         addRecord("UpdateSequenceNumber", "0");\r
46         }\r
47         // Drop the table\r
48         public void dropTable() {\r
49                 NSqlQuery query = new NSqlQuery(db.getConnection());\r
50                 query.exec("Drop table Sync");\r
51         }\r
52         // Add an item to the table\r
53         public void addRecord(String key, String value) {\r
54         NSqlQuery query = new NSqlQuery(db.getConnection());\r
55                 query.prepare("Insert Into Sync (key,  value) values (:key, :value);");\r
56                 query.bindValue(":key", key);\r
57                 query.bindValue(":value", value);\r
58                 if (!query.exec()) {\r
59                         logger.log(logger.MEDIUM, "Add to into Sync failed.");\r
60                         logger.log(logger.MEDIUM, query.lastError());\r
61                 }\r
62         }\r
63         // Add an item to the table\r
64         public void deleteRecord(String key) {\r
65         NSqlQuery query = new NSqlQuery(db.getConnection());\r
66                 query.prepare("Delete From Sync where key=:key");\r
67                 query.bindValue(":key", key);\r
68                 if (!query.exec()) {\r
69                         logger.log(logger.MEDIUM, "Delete from Sync failed.");\r
70                         logger.log(logger.MEDIUM, query.lastError());\r
71                 }\r
72         }\r
73         // Set a key field\r
74         public String getRecord(String key) {\r
75         NSqlQuery query = new NSqlQuery(db.getConnection());\r
76         query.prepare("Select value from Sync where key=:key");\r
77         query.bindValue(":key", key);\r
78                 if (!query.exec()) {\r
79                         logger.log(logger.MEDIUM, "getRecord from sync failed.");\r
80                         logger.log(logger.MEDIUM, query.lastError());\r
81                         return null;\r
82                 }\r
83                 if (query.next()) {\r
84                         return (query.valueString(0));\r
85                 }\r
86                 return null;\r
87         }\r
88         // Set a key field\r
89         public void setRecord(String key, String value) {\r
90         NSqlQuery query = new NSqlQuery(db.getConnection());\r
91         query.prepare("Update Sync set value=:value where key=:key");\r
92         query.bindValue(":key", key);\r
93         query.bindValue(":value", value);\r
94                 if (!query.exec()) {\r
95                         logger.log(logger.MEDIUM, "setRecord from sync failed.");\r
96                         logger.log(logger.MEDIUM, query.lastError());\r
97                 }\r
98                 return;\r
99         }\r
100 \r
101         // Set the last sequence date\r
102         public void setLastSequenceDate(long date) {\r
103                 setRecord("LastSequenceDate", new Long(date).toString());\r
104         }\r
105         // Set the last sequence date\r
106         public void setUpdateSequenceNumber(int number) {\r
107                 setRecord("UpdateSequenceNumber", new Integer(number).toString());\r
108         }\r
109         // get last sequence date\r
110         public long getLastSequenceDate() {\r
111                 return new Long(getRecord("LastSequenceDate"));\r
112         }\r
113         // Get invalid attributes for a given element\r
114         public int getUpdateSequenceNumber() {\r
115                 return new Integer(getRecord("UpdateSequenceNumber"));\r
116         }\r
117         \r
118 \r
119 \r
120 }\r