import java.util.List;\r
\r
import com.evernote.edam.type.Data;\r
+import com.evernote.edam.type.LinkedNotebook;\r
import com.evernote.edam.type.Note;\r
import com.evernote.edam.type.NoteAttributes;\r
import com.evernote.edam.type.Notebook;\r
+import com.evernote.edam.type.Publishing;\r
import com.evernote.edam.type.Resource;\r
import com.evernote.edam.type.SavedSearch;\r
+import com.evernote.edam.type.SharedNotebook;\r
import com.evernote.edam.type.Tag;\r
import com.trolltech.qt.core.QByteArray;\r
import com.trolltech.qt.core.QFile;\r
private final ApplicationLogger logger;\r
\r
private List<SavedSearch> searches;\r
+ private List<LinkedNotebook> linkedNotebooks;\r
+ private List<SharedNotebook> sharedNotebooks;\r
private final HashMap<String,String> dirtySearches;\r
\r
private List<Tag> tags;\r
private final HashMap<String, String> exportableTags;\r
private List<Note> notes;\r
private final HashMap<String,String> dirtyNotes;\r
- private HashMap<String,Integer> titleColors;\r
+ private final HashMap<String,String> dirtyLinkedNotebooks;\r
+ private final HashMap<Long,String> dirtySharedNotebooks;\r
+ private HashMap<String,Integer> titleColors;\r
private final boolean fullBackup;\r
private final DatabaseConnection conn;\r
private QXmlStreamWriter writer; \r
notebooks = new ArrayList<Notebook>();\r
tags = new ArrayList<Tag>();\r
notes = new ArrayList<Note>();\r
+ sharedNotebooks = new ArrayList<SharedNotebook>();\r
+ linkedNotebooks = new ArrayList<LinkedNotebook>();\r
dirtyNotebooks = new HashMap<String,String>();\r
localNotebooks = new HashMap<String,String>();\r
+ dirtyLinkedNotebooks = new HashMap<String,String>();\r
+ dirtySharedNotebooks = new HashMap<Long,String>();\r
dirtyTags = new HashMap<String,String>();\r
fullBackup = full;\r
\r
fullBackup = full;\r
\r
dirtyNotes = new HashMap<String, String>();\r
+ dirtyLinkedNotebooks = new HashMap<String,String>();\r
+ dirtySharedNotebooks = new HashMap<Long,String>();\r
dirtySearches = new HashMap<String, String>();\r
searches = new ArrayList<SavedSearch>();\r
\r
dirtySearches.put(ds.get(i).getGuid(), "");\r
}\r
\r
- \r
+ linkedNotebooks = conn.getLinkedNotebookTable().getAll();\r
+ List<String> dln = conn.getLinkedNotebookTable().getDirtyGuids();\r
+ for (int i=0; i<dln.size(); i++) {\r
+ dirtyLinkedNotebooks.put(dln.get(i), "");\r
+ }\r
+ \r
+ sharedNotebooks = conn.getSharedNotebookTable().getAll();\r
+ List<Long> dsn = conn.getSharedNotebookTable().getDirtyIds();\r
+ for (int i=0; i<dsn.size(); i++) {\r
+ dirtySharedNotebooks.put(dsn.get(i), "");\r
+ }\r
\r
lastError = 0;\r
errorMessage = "";\r
writer.writeStartDocument();\r
writer.writeDTD("<!DOCTYPE NeverNote-Export>");\r
writer.writeStartElement("nevernote-export");\r
- writer.writeAttribute("version", "0.86");\r
+ writer.writeAttribute("version", "0.95");\r
if (fullBackup)\r
writer.writeAttribute("exportType", "backup");\r
else\r
writeNotebooks();\r
writeTags();\r
writeSavedSearches();\r
+ writeLinkedNotebooks();\r
+ writeSharedNotebooks();\r
\r
\r
writer.writeEndElement();\r
}\r
}\r
\r
+ \r
+ private void writeLinkedNotebooks() {\r
+ if (!fullBackup)\r
+ return;\r
+ for (int i=0; i<linkedNotebooks.size(); i++) {\r
+ writer.writeStartElement("LinkedNotebook");\r
+ createTextNode("Guid", linkedNotebooks.get(i).getGuid());\r
+ createTextNode("ShardID", linkedNotebooks.get(i).getShardId());\r
+ createTextNode("ShareKey", linkedNotebooks.get(i).getShareKey());\r
+ createTextNode("ShareName", linkedNotebooks.get(i).getShareName());\r
+ createTextNode("Uri", linkedNotebooks.get(i).getUri());\r
+ createTextNode("Username", linkedNotebooks.get(i).getUsername());\r
+ createTextNode("UpdateSequenceNumber", new Long(linkedNotebooks.get(i).getUpdateSequenceNum()).toString());\r
+ if (dirtyLinkedNotebooks.containsKey(linkedNotebooks.get(i).getGuid()))\r
+ createTextNode("Dirty", "true");\r
+ else\r
+ createTextNode("Dirty", "false");\r
+ writer.writeEndElement();\r
+ }\r
+ }\r
+\r
\r
\r
+ private void writeSharedNotebooks() {\r
+ if (!fullBackup)\r
+ return;\r
+ for (int i=0; i<linkedNotebooks.size(); i++) {\r
+ writer.writeStartElement("SharedNotebook");\r
+ createTextNode("Id", new Long(sharedNotebooks.get(i).getId()).toString());\r
+ createTextNode("Userid", new Integer(sharedNotebooks.get(i).getUserId()).toString());\r
+ createTextNode("Email", sharedNotebooks.get(i).getEmail());\r
+ createTextNode("NotebookGuid", sharedNotebooks.get(i).getNotebookGuid());\r
+ createTextNode("ShareKey", sharedNotebooks.get(i).getShareKey());\r
+ createTextNode("Username", sharedNotebooks.get(i).getUsername());\r
+ createTextNode("ServiceCreated", new Long(sharedNotebooks.get(i).getServiceCreated()).toString());\r
+ if (dirtySharedNotebooks.containsKey(sharedNotebooks.get(i).getId()))\r
+ createTextNode("Dirty", "true");\r
+ else\r
+ createTextNode("Dirty", "false");\r
+ writer.writeEndElement();\r
+ }\r
+ }\r
+\r
+\r
+ \r
private void writeNote(Note note) {\r
\r
writer.writeStartElement("Note");\r
createTextNode("Dirty","true");\r
else\r
createTextNode("Dirty","false");\r
+ if (conn.getNotebookTable().isReadOnly(notebooks.get(i).getGuid()))\r
+ createTextNode("ReadOnly", "true");\r
+ else\r
+ createTextNode("ReadOnly", "false");\r
+ if (notebooks.get(i).getPublishing() != null) {\r
+ Publishing p = notebooks.get(i).getPublishing();\r
+ createTextNode("PublishingPublicDescription", p.getPublicDescription());\r
+ createTextNode("PublishingUri", p.getUri());\r
+ createTextNode("PublishingOrder", new Integer(p.getOrder().getValue()).toString());\r
+ if (p.isAscending())\r
+ createTextNode("PublishingAscending", "true");\r
+ else\r
+ createTextNode("PublishingAscending", "false");\r
+ }\r
+ QByteArray b = conn.getNotebookTable().getIconAsByteArray(notebooks.get(i).getGuid());\r
+ if (b != null) \r
+ createBinaryNode("Icon", b.toHex().toString());\r
+ if (notebooks.get(i).getStack() != null && !notebooks.get(i).getStack().trim().equals(""))\r
+ createTextNode("Stack", notebooks.get(i).getStack());\r
writer.writeEndElement(); \r
}\r
}\r