authRefreshNeeded = false;\r
keepRunning = true;\r
idle = true;\r
- noteStore = null;\r
- userStore = null;\r
- authToken = null;\r
disableUploads = false;\r
ignoreTags = new TreeSet<String>();\r
ignoreNotebooks = new TreeSet<String>();\r
public void run() {\r
try {\r
logger.log(logger.EXTREME, "Starting thread");\r
- conn = new DatabaseConnection(logger, dburl, dbuid, dbpswd, dbcpswd);\r
+ conn = new DatabaseConnection(logger, dburl, dbuid, dbpswd, dbcpswd, 200);\r
while(keepRunning) {\r
String work = workQueue.take();\r
logger.log(logger.EXTREME, "Work found: " +work);\r
status.message.emit(e.getMessage());\r
}\r
}\r
- dirtyNoteGuids = null;\r
idle=true;\r
logger.log(logger.EXTREME, "Signaling refresh finished. refreshNeeded=" +refreshNeeded);\r
syncSignal.finished.emit(refreshNeeded);\r
error = true;\r
} \r
}\r
+\r
logger.log(logger.HIGH, "Entering SyncRunner.syncLocalSavedSearches");\r
} \r
\r
if (!refreshConnection())\r
return;\r
\r
- chunk = null;\r
int sequence = updateSequenceNumber;\r
try {\r
+ conn.beginTransaction();\r
logger.log(logger.EXTREME, "Getting chunk from Evernote");\r
chunk = noteStore.getSyncChunk(authToken, sequence, chunkSize, fullSync);\r
} catch (EDAMUserException e) {\r
\r
\r
// Save the chunk sequence number\r
- if (!error && chunk.getChunkHighUSN() > 0) {\r
+ if (!error && chunk.getChunkHighUSN() > 0 && keepRunning) {\r
logger.log(logger.EXTREME, "emitting sequence number to main thread");\r
updateSequenceNumber = chunk.getChunkHighUSN();\r
conn.getSyncTable().setLastSequenceDate(chunk.getCurrentTime());\r
conn.getSyncTable().setUpdateSequenceNumber(updateSequenceNumber);\r
+ conn.commitTransaction();\r
}\r
\r
\r
pct = pct/evernoteUpdateCount;\r
status.message.emit(tr("Downloading ") +new Long(pct).toString()+tr("% complete."));\r
}\r
+ conn.commitTransaction();\r
}\r
-\r
logger.log(logger.HIGH, "Leaving SyncRunner.syncRemoteToLocal");\r
}\r
// Sync expunged notes\r
newBook.setPublished(false);\r
\r
conn.getNotebookTable().addNotebook(newBook, false, true);\r
+ notebookSignal.listChanged.emit();\r
notebookGuid = newBook.getGuid();\r
+ refreshNeeded = true;\r
}\r
\r
// Now that we have a good notebook guid, we need to move the conflicting note\r
conn.getNoteTable().updateNoteGuid(guid, newGuid);\r
conn.getNoteTable().updateNoteNotebook(newGuid, notebookGuid, true);\r
\r
- \r
+ noteSignal.notebookChanged.emit(newGuid, notebookGuid);\r
+ refreshNeeded = true;\r
noteSignal.guidChanged.emit(guid,newGuid);\r
}\r
\r
logger.log(logger.MEDIUM, "Authenticating Shared Notebooks");\r
status.message.emit(tr("Synchronizing shared notebooks."));\r
List<LinkedNotebook> books = conn.getLinkedNotebookTable().getAll();\r
+\r
for (int i=0; i<books.size(); i++) {\r
try {\r
long lastSyncDate = conn.getLinkedNotebookTable().getLastSequenceDate(books.get(i).getGuid());\r
//* Linked notebook contents (from someone else's account)\r
//*************************************************************\r
private void syncLinkedNotebook(LinkedNotebook book, int usn, int highSequence) {\r
+ \r
+ List<Note> dirtyNotes = conn.getNoteTable().getDirtyLinkedNotes();\r
+ if (dirtyNoteGuids == null) \r
+ dirtyNoteGuids = new Vector<String>();\r
+\r
+ for (int i=0; i<dirtyNotes.size() && keepRunning; i++) {\r
+ dirtyNoteGuids.add(dirtyNotes.get(i).getGuid());\r
+ }\r
boolean fullSync = false;\r
if (usn == 0)\r
fullSync = true;\r