OSDN Git Service

Upgrade to evernote-1.17.
authorRandy Baumgarte <randy@fbn.cx>
Sun, 14 Nov 2010 13:37:14 +0000 (08:37 -0500)
committerRandy Baumgarte <randy@fbn.cx>
Wed, 15 Dec 2010 15:16:01 +0000 (10:16 -0500)
lib/evernote.jar
src/cx/fbn/nevernote/sql/DatabaseConnection.java
src/cx/fbn/nevernote/sql/LinkedNotebookTable.java
src/cx/fbn/nevernote/sql/NotebookTable.java
src/cx/fbn/nevernote/threads/SyncRunner.java

index 1e705c3..11b8960 100644 (file)
Binary files a/lib/evernote.jar and b/lib/evernote.jar differ
index 4e87e8b..3565e58 100644 (file)
@@ -145,7 +145,7 @@ public class DatabaseConnection {
        
                        executeSql("alter table notebook add column publishingUri VarChar");
                        executeSql("alter table notebook add column publishingOrder Integer");
-                       executeSql("alter table notebook add column publishingAscending VarChar");
+                       executeSql("alter table notebook add column publishingAscending Boolean");
                        executeSql("alter table notebook add column publishingPublicDescription varchar");
                        executeSql("alter table notebook add column stack varchar");
                        executeSql("alter table notebook add column icon blob");
@@ -158,7 +158,7 @@ public class DatabaseConnection {
                        executeSql("create index RESOURCES_GUID_INDEX on noteresources (noteGuid, guid);");
                        executeSql("update note set thumbnailneeded=true, thumbnail=null;");
                        executeSql("update notebook set publishingUri='', " +
-                                       "publishingAscending='', stack='', publishingOrder=1, " +
+                                       "publishingAscending=false, stack='', publishingOrder=1, " +
                                        "publishingPublicDescription=''");
                        
                        sharedNotebookTable.createTable();
index 7b21a17..8589119 100644 (file)
@@ -42,12 +42,13 @@ public class LinkedNotebookTable {
        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
+        if (!query.exec("Create table LinkedNotebook (guid VarChar primary key, " +\r
                        "shareName VarChar, " +\r
                        "username VarChar, "+\r
                        "shardID VarChar, " +\r
                        "shareKey VarChar, " +\r
-                       "url VarChar, " +\r
+                       "uri VarChar, " +\r
+                       "updateSequenceNumber Long," +\r
                        "icon blob, " +\r
                        "isDirty boolean)"))                            \r
                logger.log(logger.HIGH, "Table LinkedNotebook creation FAILED!!!");   \r
@@ -62,17 +63,18 @@ public class LinkedNotebookTable {
                boolean check;\r
                \r
         NSqlQuery query = new NSqlQuery(db.getConnection());\r
-               check = query.prepare("Insert Into LinkedNotebook (id, shareName, username,  "\r
-                               +"shardId, shareKey, url, isDirty) "   \r
+               check = query.prepare("Insert Into LinkedNotebook (guid, shareName, username,  "\r
+                               +"shardId, shareKey, uri, updateSequenceNumber, isDirty) "   \r
                                + " Values("\r
-                               +":id, :shareName, :username, "\r
-                               +":shardId, :shareKey, :url, :isDirty)");\r
-               query.bindValue(":id", tempNotebook.getId());\r
+                               +":guid, :shareName, :username, "\r
+                               +":shardId, :shareKey, :uri,:usn, :isDirty)");\r
+               query.bindValue(":guid", tempNotebook.getGuid());\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
+               query.bindValue(":usn", tempNotebook.getUpdateSequenceNum());\r
+               query.bindValue(":uri", tempNotebook.getUri());\r
                \r
                if (isDirty)\r
                        query.bindValue(":isDirty", true);\r
@@ -86,17 +88,17 @@ public class LinkedNotebookTable {
                }\r
        }\r
        // Delete the notebook based on a guid\r
-       public void expungeNotebook(long id, boolean needsSync) {\r
+       public void expungeNotebook(String 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
+                               +"where guid=:guid");\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
+               query.bindValue(":guid", id);\r
                check = query.exec();\r
                if (!check) \r
                        logger.log(logger.MEDIUM, "LinkedNotebook delete failed.");\r
@@ -108,10 +110,10 @@ public class LinkedNotebookTable {
                }\r
        }\r
        // Check if a notebook exists\r
-       public boolean exists(long id) {\r
+       public boolean exists(String id) {\r
         NSqlQuery query = new NSqlQuery(db.getConnection());\r
-               boolean check = query.prepare("Select id from linkednotebook where id=:id");\r
-               query.bindValue(":id", id);\r
+               boolean check = query.prepare("Select guid from linkednotebook where guid=:guid");\r
+               query.bindValue(":guid", id);\r
                check = query.exec();\r
                if (!check) {\r
                        logger.log(logger.MEDIUM, "LinkedNotebook Table exists check failed.");\r
@@ -124,20 +126,21 @@ public class LinkedNotebookTable {
        // Update a notebook\r
        public void updateNotebook(LinkedNotebook tempNotebook, boolean isDirty) {\r
                boolean check;\r
-               if (!exists(tempNotebook.getId())) {\r
+               if (!exists(tempNotebook.getGuid())) {\r
                        addNotebook(tempNotebook, isDirty);\r
                        return;\r
                }\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
+               check = query.prepare("Update LinkedNotebook set guid=:guid, shareName=:shareName, " +\r
+                               "username=:username, shardID=:shardID, shareKey=:shareKey, uri=:uri, updateSequenceNumber=:usn, isDirty=:isDirty");\r
+               query.bindValue(":guid", tempNotebook.getGuid());\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
+               query.bindValue(":uri", tempNotebook.getUri());\r
+               query.bindValue(":usn", tempNotebook.getUpdateSequenceNum());\r
 \r
                query.bindValue(":isDirty", isDirty);\r
                \r
@@ -155,13 +158,13 @@ public class LinkedNotebookTable {
                                        \r
         NSqlQuery query = new NSqlQuery(db.getConnection());\r
                                        \r
-               check = query.exec("Select id, shareName, username, shardID, shareKey url, " +\r
+               check = query.exec("Select guid, shareName, username, shardID, shareKey uri, " +\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.setGuid(query.valueString(0));\r
                        tempNotebook.setUsername(query.valueString(1));\r
                        tempNotebook.setShardId(query.valueString(2));\r
                        tempNotebook.setShareKey(query.valueString(3));\r
index e528364..77887e2 100644 (file)
@@ -27,7 +27,9 @@ import java.util.ArrayList;
 import java.util.HashMap;\r
 import java.util.List;\r
 \r
+import com.evernote.edam.type.NoteSortOrder;\r
 import com.evernote.edam.type.Notebook;\r
+import com.evernote.edam.type.Publishing;\r
 import com.trolltech.qt.core.QBuffer;\r
 import com.trolltech.qt.core.QByteArray;\r
 import com.trolltech.qt.core.QIODevice;\r
@@ -184,7 +186,12 @@ public class NotebookTable {
         NSqlQuery query = new NSqlQuery(db.getConnection());\r
                check = query.prepare("Update Notebook set sequence=:sequence, name=:name, defaultNotebook=:defaultNotebook, " +\r
                                "serviceCreated=:serviceCreated, serviceUpdated=:serviceUpdated, "+\r
-                               "published=:published, isDirty=:isDirty where guid=:guid ");\r
+                               "published=:published, isDirty=:isDirty, publishinguri=:uri, "+\r
+                               "publishingOrder=:order, " + \r
+                               "publishingAscending=:ascending, " +\r
+                               "publishingPublicDescription=:desc " +\r
+                               "where guid=:guid ");\r
+               \r
                query.bindValue(":sequence", tempNotebook.getUpdateSequenceNum());\r
                query.bindValue(":name", tempNotebook.getName());\r
                query.bindValue(":defaultNotebook", tempNotebook.isDefaultNotebook());\r
@@ -196,6 +203,19 @@ public class NotebookTable {
                \r
                query.bindValue(":published", tempNotebook.isPublished());\r
                query.bindValue(":isDirty", isDirty);\r
+               \r
+               if (tempNotebook.isPublished()) {\r
+                       query.bindValue(":uri", tempNotebook.getPublishing().getUri());\r
+                       query.bindValue(":order", tempNotebook.getPublishing().getOrder().getValue());\r
+                       query.bindValue(":ascending", tempNotebook.getPublishing().isAscending());\r
+                       query.bindValue(":desc", tempNotebook.getPublishing().getPublicDescription());\r
+               } else {\r
+                       query.bindValue(":uri", "");\r
+                       query.bindValue(":order", NoteSortOrder.CREATED.getValue());\r
+                       query.bindValue(":ascending", false);\r
+                       query.bindValue(":desc", "");\r
+               }\r
+               \r
                query.bindValue(":guid", tempNotebook.getGuid());\r
                \r
                check = query.exec();\r
@@ -215,7 +235,8 @@ public class NotebookTable {
                check = query.exec("Select guid, sequence, name, defaultNotebook, " +\r
                                "serviceCreated, "+\r
                                "serviceUpdated, "+\r
-                               "published, defaultNotebook, stack from Notebook order by name");\r
+                               "published, stack, publishinguri, publishingascending, publishingPublicDescription, "+\r
+                               "publishingOrder from Notebook order by name");\r
                if (!check)\r
                        logger.log(logger.EXTREME, "Notebook SQL retrieve has failed.");\r
                while (query.next()) {\r
@@ -224,6 +245,7 @@ public class NotebookTable {
                        int sequence = new Integer(query.valueString(1)).intValue();\r
                        tempNotebook.setUpdateSequenceNum(sequence);\r
                        tempNotebook.setName(query.valueString(2));\r
+                       tempNotebook.setDefaultNotebook(query.valueBoolean(3, false));\r
                        DateFormat indfm = null;\r
                        try {\r
                                indfm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");\r
@@ -236,8 +258,15 @@ public class NotebookTable {
                                e.printStackTrace();\r
                        }\r
                        tempNotebook.setPublished(new Boolean(query.valueString(6)));\r
-                       tempNotebook.setDefaultNotebook(new Boolean(query.valueString(7)));\r
-                       tempNotebook.setStack(query.valueString(8));\r
+                       tempNotebook.setStack(query.valueString(7));\r
+                       if (tempNotebook.isPublished()) {\r
+                               Publishing p = new Publishing();\r
+                               p.setUri(query.valueString(8));\r
+                               p.setAscending(query.valueBoolean(9, false));\r
+                               p.setPublicDescription(query.valueString(10));\r
+                               p.setOrder(NoteSortOrder.findByValue(query.valueInteger(11)));\r
+                               tempNotebook.setPublishing(p);\r
+                       }\r
                        index.add(tempNotebook); \r
                }       \r
                return index;\r
@@ -293,7 +322,10 @@ public class NotebookTable {
         NSqlQuery query = new NSqlQuery(db.getConnection());\r
                                        \r
                check = query.exec("Select guid, sequence, name, defaultNotebook, " +\r
-                               "serviceCreated, serviceUpdated, published, stack from Notebook where archived=true order by name");\r
+                               "serviceCreated, serviceUpdated, published, stack "+\r
+                               "publishinguri, publishingascending, publishingPublicDescription, "+\r
+                               "publishingOrder " +\r
+                               "from Notebook where archived=true order by name");\r
                if (!check)\r
                        logger.log(logger.EXTREME, "Notebook SQL retrieve has failed.");\r
                while (query.next()) {\r
@@ -313,6 +345,16 @@ public class NotebookTable {
                        }\r
                        tempNotebook.setPublished(new Boolean(query.valueString(6)));\r
                        tempNotebook.setStack(query.valueString(7));\r
+                       \r
+                       if (tempNotebook.isPublished()) {\r
+                               Publishing p = new Publishing();\r
+                               p.setUri(query.valueString(8));\r
+                               p.setAscending(query.valueBoolean(9, false));\r
+                               p.setPublicDescription(query.valueString(10));\r
+                               p.setOrder(NoteSortOrder.findByValue(query.valueInteger(11)));\r
+                               tempNotebook.setPublishing(p);\r
+                       }\r
+                       \r
                        index.add(tempNotebook); \r
                }       \r
                return index;\r
@@ -383,7 +425,10 @@ public class NotebookTable {
         NSqlQuery query = new NSqlQuery(db.getConnection());\r
                                        \r
                check = query.exec("Select guid, sequence, name, defaultNotebook, " +\r
-                               "serviceCreated, serviceUpdated, published, stack from Notebook where isDirty = true and local=false");\r
+                               "serviceCreated, serviceUpdated, published, stack "+\r
+                               "publishinguri, publishingascending, publishingPublicDescription, "+\r
+                               "publishingOrder " +\r
+                               "from Notebook where isDirty = true and local=false");\r
                if (!check) \r
                        logger.log(logger.EXTREME, "Notebook SQL retrieve has failed.");\r
                while (query.next()) {\r
@@ -403,6 +448,16 @@ public class NotebookTable {
                        }\r
                        tempNotebook.setPublished(new Boolean(query.valueString(6)));\r
                        tempNotebook.setStack(query.valueString(7));\r
+                       \r
+                       if (tempNotebook.isPublished()) {\r
+                               Publishing p = new Publishing();\r
+                               p.setUri(query.valueString(8));\r
+                               p.setAscending(query.valueBoolean(9, false));\r
+                               p.setPublicDescription(query.valueString(10));\r
+                               p.setOrder(NoteSortOrder.findByValue(query.valueInteger(11)));\r
+                               tempNotebook.setPublishing(p);\r
+                       }\r
+                       \r
                        index.add(tempNotebook);\r
                }       \r
                return index;   \r
@@ -593,6 +648,18 @@ public class NotebookTable {
                        logger.log(logger.EXTREME, "Error updating stack names");\r
                        return;\r
                }\r
+               \r
+               if (!query.prepare("update SystemIcon set stack=:newName where stack=:oldName and type='STACK'")) {\r
+                       logger.log(logger.EXTREME, "Error preparing icon rename in renameStacks.");\r
+                       return;\r
+               }\r
+               query.bindValue(":oldName", oldName);\r
+               query.bindValue(":newName", newName);\r
+               if (!query.exec()) {\r
+                       logger.log(logger.EXTREME, "Error updating stack names for SystemIcon");\r
+                       return;\r
+               }\r
+\r
        }\r
        // Get/Set stacks\r
        public boolean stackExists(String stack) {\r
index 2581725..1db1fda 100644 (file)
@@ -883,6 +883,7 @@ public class SyncRunner extends QObject implements Runnable {
                        syncRemoteNotebooks(chunk.getNotebooks());\r
                        syncRemoteNotes(chunk.getNotes(), fullSync);\r
                        syncRemoteResources(chunk.getResources());\r
+                       syncRemoteLinkedNotebooks(chunk.getLinkedNotebooks());\r
                        \r
                        // Do the local deletes\r
                        logger.log(logger.EXTREME, "Doing local deletes");\r
@@ -919,6 +920,12 @@ public class SyncRunner extends QObject implements Runnable {
                                        logger.log(logger.EXTREME, "Expunging saved search from local database");\r
                                        conn.getSavedSearchTable().expungeSavedSearch(guid.get(i), false);\r
                                }\r
+                       guid = chunk.getExpungedLinkedNotebooks();\r
+                       if (guid != null) \r
+                               for (int i=0; i<guid.size() && keepRunning; i++) {\r
+                                       logger.log(logger.EXTREME, "Expunging linked notebook from local database");\r
+                                       conn.getLinkedNotebookTable().expungeNotebook(guid.get(i), false);\r
+                               }\r
 \r
                        \r
                        // Check for more notes\r
@@ -962,7 +969,7 @@ public class SyncRunner extends QObject implements Runnable {
                }\r
                logger.log(logger.EXTREME, "Leaving SyncRunner.syncRemoteTags");\r
        }\r
-       // Sync remote tags\r
+       // Sync remote saved searches\r
        private void syncRemoteSavedSearches(List<SavedSearch> searches) {\r
                logger.log(logger.EXTREME, "Entering SyncRunner.syncSavedSearches");\r
                if (searches != null) {\r
@@ -976,6 +983,16 @@ public class SyncRunner extends QObject implements Runnable {
                }\r
                logger.log(logger.EXTREME, "Leaving SyncRunner.syncSavedSearches");\r
        }\r
+       // Sync remote linked notebooks\r
+       private void syncRemoteLinkedNotebooks(List<LinkedNotebook> books) {\r
+               logger.log(logger.EXTREME, "Entering SyncRunner.syncSavedSearches");\r
+               if (books != null) {\r
+                       for (int i=0; i<books.size() && keepRunning; i++) {\r
+                               conn.getLinkedNotebookTable().updateNotebook(books.get(i), false); \r
+                       }\r
+               }\r
+               logger.log(logger.EXTREME, "Leaving SyncRunner.syncSavedSearches");\r
+       }\r
        // Sync remote Notebooks 2\r
        private void syncRemoteNotebooks(List<Notebook> notebooks) {\r
                logger.log(logger.EXTREME, "Entering SyncRunner.syncRemoteNotebooks");\r