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");
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();
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
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
}\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
}\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
// 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
\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
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
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
\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
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
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
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
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
}\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
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
}\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
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
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
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
}\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
}\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