OSDN Git Service

Add linked & shared notebook tables
authorRandy Baumgarte <randy@fbn.cx>
Fri, 5 Nov 2010 11:53:40 +0000 (07:53 -0400)
committerRandy Baumgarte <randy@fbn.cx>
Wed, 15 Dec 2010 15:14:57 +0000 (10:14 -0500)
src/cx/fbn/nevernote/sql/LinkedNotebookTable.java [new file with mode: 0644]
src/cx/fbn/nevernote/sql/SharedNotebookTable.java [new file with mode: 0644]

diff --git a/src/cx/fbn/nevernote/sql/LinkedNotebookTable.java b/src/cx/fbn/nevernote/sql/LinkedNotebookTable.java
new file mode 100644 (file)
index 0000000..d82d138
--- /dev/null
@@ -0,0 +1,178 @@
+/*\r
+ * This file is part of NeverNote \r
+ * Copyright 2009 Randy Baumgarte\r
+ * \r
+ * This file may be licensed under the terms of of the\r
+ * GNU General Public License Version 2 (the ``GPL'').\r
+ *\r
+ * Software distributed under the License is distributed\r
+ * on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either\r
+ * express or implied. See the GPL for the specific language\r
+ * governing rights and limitations.\r
+ *\r
+ * You should have received a copy of the GPL along with this\r
+ * program. If not, go to http://www.gnu.org/licenses/gpl.html\r
+ * or write to the Free Software Foundation, Inc.,\r
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\r
+ *\r
+*/\r
+\r
+\r
+package cx.fbn.nevernote.sql;\r
+\r
+import java.text.SimpleDateFormat;\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+import com.evernote.edam.type.LinkedNotebook;\r
+\r
+import cx.fbn.nevernote.sql.driver.NSqlQuery;\r
+import cx.fbn.nevernote.utilities.ApplicationLogger;\r
+\r
+public class LinkedNotebookTable {\r
+       \r
+       private final ApplicationLogger                 logger;\r
+       DatabaseConnection                                                      db;\r
+       \r
+       // Constructor\r
+       public LinkedNotebookTable(ApplicationLogger l, DatabaseConnection d) {\r
+               logger = l;\r
+               db = d;\r
+       }\r
+       // Create the table\r
+       public void createTable() {\r
+               NSqlQuery query = new NSqlQuery(db.getConnection());\r
+        logger.log(logger.HIGH, "Creating table LinkedNotebook...");\r
+        if (!query.exec("Create table LinkedNotebook (id long primary key, " +\r
+                       "shareName VarChar, " +\r
+                       "username VarChar, "+\r
+                       "shardID VarChar, " +\r
+                       "shareKey VarChar, " +\r
+                       "url VarChar, " +\r
+                       "icon blob, " +\r
+                       "isDirty boolean)"))                            \r
+               logger.log(logger.HIGH, "Table LinkedNotebook creation FAILED!!!");   \r
+       }\r
+       // Drop the table\r
+       public void dropTable() {\r
+               NSqlQuery query = new NSqlQuery(db.getConnection());\r
+               query.exec("Drop table LinkedNotebook");\r
+       }\r
+       // Save an individual notebook\r
+       public void addNotebook(LinkedNotebook tempNotebook, boolean isDirty) {\r
+               boolean check;\r
+               \r
+               SimpleDateFormat simple = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");\r
+        NSqlQuery query = new NSqlQuery(db.getConnection());\r
+               check = query.prepare("Insert Into LinkedNotebook (id, shareName, username,  "\r
+                               +"shardId, shareKey, url, isDirty) "   \r
+                               + " Values("\r
+                               +":id, :shareName, :username, "\r
+                               +":shardId, :shareKey, :url, :isDirty)");\r
+               query.bindValue(":id", tempNotebook.getId());\r
+               query.bindValue(":shareName", tempNotebook.getShareName());\r
+               query.bindValue(":username", tempNotebook.getUsername());\r
+               query.bindValue(":shardId", tempNotebook.getShardId());\r
+               query.bindValue(":shareKey", tempNotebook.getShareKey());\r
+               query.bindValue(":url", tempNotebook.getUri());\r
+               \r
+               if (isDirty)\r
+                       query.bindValue(":isDirty", true);\r
+               else\r
+                       query.bindValue(":isDirty", false);\r
+\r
+               check = query.exec();\r
+               if (!check) {\r
+                       logger.log(logger.MEDIUM, "LinkedNotebook Table insert failed.");\r
+                       logger.log(logger.MEDIUM, query.lastError().toString());\r
+               }\r
+       }\r
+       // Delete the notebook based on a guid\r
+       public void expungeNotebook(long id, boolean needsSync) {\r
+               boolean check;\r
+        NSqlQuery query = new NSqlQuery(db.getConnection());\r
+\r
+               check = query.prepare("delete from LinkedNotebook "\r
+                               +"where id=:id");\r
+               if (!check) {\r
+                       logger.log(logger.EXTREME, "LinkedNotebook SQL delete prepare has failed.");\r
+                       logger.log(logger.EXTREME, query.lastError().toString());\r
+               }\r
+               query.bindValue(":id", id);\r
+               check = query.exec();\r
+               if (!check) \r
+                       logger.log(logger.MEDIUM, "LinkedNotebook delete failed.");\r
+               \r
+               // Signal the parent that work needs to be done\r
+               if  (needsSync) {\r
+                       DeletedTable deletedTable = new DeletedTable(logger, db);\r
+                       deletedTable.addDeletedItem(new Long(id).toString(), "LinkedNotebook");\r
+               }\r
+       }\r
+       // Update a notebook\r
+       public void updateNotebook(LinkedNotebook tempNotebook, boolean isDirty) {\r
+               boolean check;\r
+               \r
+               SimpleDateFormat simple = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");\r
+               \r
+        NSqlQuery query = new NSqlQuery(db.getConnection());\r
+               check = query.prepare("Update LinkedNotebook set id=:id, shareName=:shareName, " +\r
+                               "username=:username, shardID=:shardID, shareKey=:shareKey, url=:url, isDirty=:isDirty");\r
+               query.bindValue(":id", tempNotebook.getId());\r
+               query.bindValue(":shareName", tempNotebook.getShareName());\r
+               query.bindValue(":username", tempNotebook.getUsername());\r
+               query.bindValue(":shardID", tempNotebook.getShardId());\r
+               query.bindValue(":shareKey", tempNotebook.getShareKey());\r
+               query.bindValue(":url", tempNotebook.getUri());\r
+\r
+               query.bindValue(":isDirty", isDirty);\r
+               \r
+               check = query.exec();\r
+               if (!check) {\r
+                       logger.log(logger.MEDIUM, "LinkedNotebook Table update failed.");\r
+                       logger.log(logger.MEDIUM, query.lastError().toString());\r
+               }\r
+       }\r
+       // Load notebooks from the database\r
+       public List<LinkedNotebook> getAll() {\r
+               LinkedNotebook tempNotebook;\r
+               List<LinkedNotebook> index = new ArrayList<LinkedNotebook>();\r
+               boolean check;\r
+                                       \r
+        NSqlQuery query = new NSqlQuery(db.getConnection());\r
+                                       \r
+               check = query.exec("Select id, shareName, username, shardID, shareKey url, " +\r
+                               " from LinkedNotebook");\r
+               if (!check)\r
+                       logger.log(logger.EXTREME, "Notebook SQL retrieve has failed.");\r
+               while (query.next()) {\r
+                       tempNotebook = new LinkedNotebook();\r
+                       tempNotebook.setId(query.valueLong(0));\r
+                       tempNotebook.setUsername(query.valueString(1));\r
+                       tempNotebook.setShardId(query.valueString(2));\r
+                       tempNotebook.setShareKey(query.valueString(3));\r
+                       tempNotebook.setUri(query.valueString(4));\r
+\r
+                       index.add(tempNotebook); \r
+               }       \r
+               return index;\r
+       }                       \r
+\r
+       // does a record exist?\r
+       public String findNotebookByShareName(String name) {\r
+               \r
+               NSqlQuery query = new NSqlQuery(db.getConnection());\r
+               \r
+               query.prepare("Select guid from Linkednotebook where shareName=:name");\r
+               query.bindValue(":name", name);\r
+               if (!query.exec())\r
+                       logger.log(logger.EXTREME, "Linked notebook SQL retrieve by share name has failed.");\r
+               String val = null;\r
+               if (query.next())\r
+                       val = query.valueString(0);\r
+               return val;\r
+       }\r
+\r
+\r
+}\r
+\r
diff --git a/src/cx/fbn/nevernote/sql/SharedNotebookTable.java b/src/cx/fbn/nevernote/sql/SharedNotebookTable.java
new file mode 100644 (file)
index 0000000..34691f7
--- /dev/null
@@ -0,0 +1,209 @@
+/*\r
+ * This file is part of NeverNote \r
+ * Copyright 2009 Randy Baumgarte\r
+ * \r
+ * This file may be licensed under the terms of of the\r
+ * GNU General Public License Version 2 (the ``GPL'').\r
+ *\r
+ * Software distributed under the License is distributed\r
+ * on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either\r
+ * express or implied. See the GPL for the specific language\r
+ * governing rights and limitations.\r
+ *\r
+ * You should have received a copy of the GPL along with this\r
+ * program. If not, go to http://www.gnu.org/licenses/gpl.html\r
+ * or write to the Free Software Foundation, Inc.,\r
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\r
+ *\r
+*/\r
+\r
+\r
+package cx.fbn.nevernote.sql;\r
+\r
+import java.text.DateFormat;\r
+import java.text.ParseException;\r
+import java.text.SimpleDateFormat;\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+import com.evernote.edam.type.SharedNotebook;\r
+\r
+import cx.fbn.nevernote.sql.driver.NSqlQuery;\r
+import cx.fbn.nevernote.utilities.ApplicationLogger;\r
+\r
+public class SharedNotebookTable {\r
+       \r
+       private final ApplicationLogger                 logger;\r
+       DatabaseConnection                                                      db;\r
+       \r
+       // Constructor\r
+       public SharedNotebookTable(ApplicationLogger l, DatabaseConnection d) {\r
+               logger = l;\r
+               db = d;\r
+       }\r
+       // Create the table\r
+       public void createTable() {\r
+               NSqlQuery query = new NSqlQuery(db.getConnection());\r
+        logger.log(logger.HIGH, "Creating table SharedNotebook...");\r
+        if (!query.exec("Create table SharedNotebook (id long primary key, " +\r
+                       "userid Integer, " +\r
+                       "notebookGuid VarChar, "+\r
+                       "email VarChar, "+\r
+                       "notebookModifiable boolean, " +\r
+                       "requireLogin boolean, "+\r
+                       "serviceCreated timestamp, "+\r
+                       "shareKey VarChar,  "+\r
+                       "username VarChar, "+\r
+                       "icon blob, " +\r
+                       "isDirty boolean)"))                            \r
+               logger.log(logger.HIGH, "Table SharedNotebook creation FAILED!!!");   \r
+       }\r
+       // Drop the table\r
+       public void dropTable() {\r
+               NSqlQuery query = new NSqlQuery(db.getConnection());\r
+               query.exec("Drop table SharedNotebook");\r
+       }\r
+       // Save an individual notebook\r
+       public void addNotebook(SharedNotebook tempNotebook, boolean isDirty) {\r
+               boolean check;\r
+               \r
+               SimpleDateFormat simple = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");\r
+        NSqlQuery query = new NSqlQuery(db.getConnection());\r
+               check = query.prepare("Insert Into SharedNotebook (id, userid, notebookGuid, email,  "\r
+                               +"notebookModifiable, requireLogin, serviceCreated, shareKey, username) "   \r
+                               + " Values("\r
+                               +":id, :userid, :notebookGuid, :email, "\r
+                               +":notebookModifiable, :requireLogin, :serviceCreated, "\r
+                               +":shareKey, :username)");\r
+               query.bindValue(":id", tempNotebook.getId());\r
+               query.bindValue(":userid", tempNotebook.getUserId());\r
+               query.bindValue(":notebookGuid", tempNotebook.getNotebookGuid());\r
+               query.bindValue(":email", tempNotebook.getEmail());\r
+               query.bindValue(":notebookModifiable", tempNotebook.isNotebookModifiable());\r
+               query.bindValue(":requireLogin", tempNotebook.isRequireLogin());\r
+\r
+               StringBuilder serviceCreated = new StringBuilder(simple.format(tempNotebook.getServiceCreated()));                      \r
+               query.bindValue(":serviceCreated", serviceCreated.toString());\r
+               \r
+               query.bindValue(":shareKey", tempNotebook.getShareKey());\r
+               query.bindValue(":username", tempNotebook.getUsername());\r
+               \r
+               if (isDirty)\r
+                       query.bindValue(":isDirty", true);\r
+               else\r
+                       query.bindValue(":isDirty", false);\r
+\r
+               check = query.exec();\r
+               if (!check) {\r
+                       logger.log(logger.MEDIUM, "SharedNotebook Table insert failed.");\r
+                       logger.log(logger.MEDIUM, query.lastError().toString());\r
+               }\r
+       }\r
+       // Delete the notebook based on a guid\r
+       public void expungeNotebook(long id, boolean needsSync) {\r
+               boolean check;\r
+        NSqlQuery query = new NSqlQuery(db.getConnection());\r
+\r
+               check = query.prepare("delete from SharedNotebook "\r
+                               +"where id=:id");\r
+               if (!check) {\r
+                       logger.log(logger.EXTREME, "SharedNotebook SQL delete prepare has failed.");\r
+                       logger.log(logger.EXTREME, query.lastError().toString());\r
+               }\r
+               query.bindValue(":id", id);\r
+               check = query.exec();\r
+               if (!check) \r
+                       logger.log(logger.MEDIUM, "SharedNotebook delete failed.");\r
+               \r
+               // Signal the parent that work needs to be done\r
+               if  (needsSync) {\r
+                       DeletedTable deletedTable = new DeletedTable(logger, db);\r
+                       deletedTable.addDeletedItem(new Long(id).toString(), "SharedNotebook");\r
+               }\r
+       }\r
+       // Update a notebook\r
+       public void updateNotebook(SharedNotebook tempNotebook, boolean isDirty) {\r
+               boolean check;\r
+               \r
+               SimpleDateFormat simple = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");\r
+               \r
+        NSqlQuery query = new NSqlQuery(db.getConnection());\r
+               check = query.prepare("Update SharedNotebook set id=:id, userid=:userid, notebookGuid=:notebook, "\r
+                               + "email=:email, notebookModifiable=:mod, requireLogin=:rlogin, serviceCreated=:created "\r
+                               + "shareKey=:shareKey, username=:username, isDirty=:isdirty");\r
+               query.bindValue(":id", tempNotebook.getId());\r
+               query.bindValue(":userid", tempNotebook.getUserId());\r
+               query.bindValue(":notebook", tempNotebook.getNotebookGuid());\r
+               query.bindValue(":email", tempNotebook.getEmail());\r
+               query.bindValue(":mod", tempNotebook.isNotebookModifiable());\r
+               query.bindValue(":rlogin", tempNotebook.isRequireLogin());\r
+               query.bindValue(":shareKey", tempNotebook.getShareKey());\r
+               query.bindValue(":username", tempNotebook.getUsername());\r
+\r
+               StringBuilder serviceCreated = new StringBuilder(simple.format(tempNotebook.getServiceCreated()));                                              \r
+               query.bindValue(":serviceCreated", serviceCreated.toString());\r
+               \r
+               query.bindValue(":isDirty", isDirty);\r
+               \r
+               check = query.exec();\r
+               if (!check) {\r
+                       logger.log(logger.MEDIUM, "SharedNotebook Table update failed.");\r
+                       logger.log(logger.MEDIUM, query.lastError().toString());\r
+               }\r
+       }\r
+       // Load notebooks from the database\r
+       public List<SharedNotebook> getAll() {\r
+               SharedNotebook tempNotebook;\r
+               List<SharedNotebook> index = new ArrayList<SharedNotebook>();\r
+               boolean check;\r
+                                       \r
+        NSqlQuery query = new NSqlQuery(db.getConnection());\r
+                                       \r
+               check = query.exec("Select id, userid, notebookGuid, email, notebookModifiable, requireLogin, " +\r
+                               "serviceCreated, "+\r
+                               "shareKey, username from SharedNotebook");\r
+               if (!check)\r
+                       logger.log(logger.EXTREME, "Notebook SQL retrieve has failed.");\r
+               while (query.next()) {\r
+                       tempNotebook = new SharedNotebook();\r
+                       tempNotebook.setId(query.valueLong(0));\r
+                       tempNotebook.setUserId(query.valueInteger(1));\r
+                       tempNotebook.setNotebookGuid(query.valueString(2));\r
+                       tempNotebook.setEmail(query.valueString(3));\r
+                       tempNotebook.setNotebookModifiable(query.valueBoolean(4,false));\r
+                       tempNotebook.setRequireLogin(query.valueBoolean(5,true));\r
+                       DateFormat indfm = null;\r
+                       try {\r
+                               indfm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");\r
+                       } catch (Exception e) { }\r
+                       try {\r
+                               tempNotebook.setServiceCreated(indfm.parse(query.valueString(6)).getTime());\r
+                       } catch (ParseException e) {\r
+                               e.printStackTrace();\r
+                       }\r
+                       tempNotebook.setShareKey(query.valueString(7));\r
+                       tempNotebook.setUsername(query.valueString(8));\r
+\r
+                       index.add(tempNotebook); \r
+               }       \r
+               return index;\r
+       }                       \r
+\r
+       // does a record exist?\r
+       public String findNotebookByName(String newname) {\r
+               \r
+               NSqlQuery query = new NSqlQuery(db.getConnection());\r
+               \r
+               query.prepare("Select guid from sharednotebook where name=:newname");\r
+               query.bindValue(":newname", newname);\r
+               if (!query.exec())\r
+                       logger.log(logger.EXTREME, "notebook SQL retrieve has failed.");\r
+               String val = null;\r
+               if (query.next())\r
+                       val = query.valueString(0);\r
+               return val;\r
+       }\r
+\r
+\r
+}\r
+\r