// convert the < character to < it will mess up the XML parsing. So, to get around this\r
// I am "bit stuffing" the < to &< so StringEscapeUtils doesn't unescape it. After\r
// I'm done I convert it back.\r
+ StringBuffer buffer = new StringBuffer(unicode);\r
if (Global.enableHTMLEntitiesFix && unicode.indexOf("&#") > 0) {\r
unicode = query.valueString(16);\r
- unicode = unicode.replace("<", "&_lt;");\r
- unicode = codec.fromUnicode(StringEscapeUtils.unescapeHtml(unicode)).toString();\r
- unicode = unicode.replace("&_lt;", "<");\r
- }\r
+ //System.out.println(unicode);\r
+ //unicode = unicode.replace("<", "&_lt;");\r
+ //unicode = codec.fromUnicode(StringEscapeUtils.unescapeHtml(unicode)).toString();\r
+ //unicode = unicode.replace("&_lt;", "<");\r
+ //System.out.println("************************");\r
+ int j=1;\r
+ for (int i=buffer.indexOf("&#"); i != -1 && buffer.indexOf("&#", i)>0; i=buffer.indexOf("&#",i+1)) {\r
+ j = buffer.indexOf(";",i)+1;\r
+ if (i<j) {\r
+ String entity = buffer.substring(i,j).toString();\r
+ int len = entity.length()-1;\r
+ String tempEntity = entity.substring(2, len);\r
+ try {\r
+ Integer.parseInt(tempEntity);\r
+ entity = codec.fromUnicode(StringEscapeUtils.unescapeHtml(entity)).toString();\r
+ buffer.delete(i, j);\r
+ buffer.insert(i, entity);\r
+ } catch (Exception e){ }\r
+ \r
+ }\r
+ } \r
+ } \r
\r
n.setContent(unicode);\r
// n.setContent(query.valueString(16).toString());\r
NSqlQuery query = new NSqlQuery(db.getConnection());\r
NSqlQuery resQuery = new NSqlQuery(db.getResourceConnection());\r
NSqlQuery wordQuery = new NSqlQuery(db.getIndexConnection());\r
- query.prepare("Update Note set guid=:newGuid where guid=:oldGuid");\r
+ query.prepare("Update Note set guid=:newGuid, original_guid=:original_guid where guid=:oldGuid");\r
\r
+ query.bindValue(":original_guid", oldGuid);\r
query.bindValue(":newGuid", newGuid);\r
query.bindValue(":oldGuid", oldGuid);\r
\r
// Update a note\r
public void updateNote(Note n, boolean isNew) {\r
int titleColor = getNoteTitleColor(n.getGuid());\r
+ String originalGuid = findAlternateGuid(n.getGuid());\r
expungeNote(n.getGuid(), true, false);\r
addNote(n, false);\r
if (titleColor != -1)\r
setNoteTitleColor(n.getGuid(), titleColor);\r
+ if (originalGuid != null) {\r
+ updateNoteGuid(n.getGuid(), originalGuid);\r
+ updateNoteGuid(originalGuid, n.getGuid());\r
+ }\r
}\r
// Does a note exist?\r
public boolean exists(String guid) {\r
return 0; \r
}\r
\r
+ //***********************************************************************************\r
+ public String findAlternateGuid(String guid) {\r
+ boolean check;\r
+ NSqlQuery query = new NSqlQuery(db.getConnection());\r
+ \r
+ check = query.prepare("select guid from note where original_guid=:guid");\r
+ query.bindValue(":guid", guid);\r
+ check = query.exec();\r
+ if (!check) \r
+ logger.log(logger.EXTREME, "Note SQL findAlternateguid query failed: " +query.lastError().toString());\r
+ \r
+ if (query.next()) {\r
+ return query.valueString(0); \r
+ }\r
+\r
+ return null; \r
+ }\r
+ \r
+ //* Check if a note guid exists\r
+ public boolean guidExists(String guid) {\r
+ boolean check;\r
+ NSqlQuery query = new NSqlQuery(db.getConnection());\r
+ \r
+ check = query.prepare("select guid from note where guid=:guid");\r
+ query.bindValue(":guid", guid);\r
+ check = query.exec();\r
+ if (!check) \r
+ logger.log(logger.EXTREME, "Note SQL guidExists query failed: " +query.lastError().toString());\r
+ \r
+ if (query.next()) {\r
+ return true; \r
+ }\r
+\r
+ return false; \r
+ }\r
\r
// Update a note content's hash. This happens if a resource is edited outside of NN\r
public void updateResourceContentHash(String guid, String oldHash, String newHash) {\r