|
|
@ -66,7 +66,7 @@ public class YMarkXBELImporter extends DefaultHandler implements Runnable {
|
|
|
|
INFO ("<info"),
|
|
|
|
INFO ("<info"),
|
|
|
|
METADATA ("<metadata");
|
|
|
|
METADATA ("<metadata");
|
|
|
|
|
|
|
|
|
|
|
|
private static StringBuilder buffer = new StringBuilder(25);;
|
|
|
|
private static StringBuilder buffer = new StringBuilder(25);
|
|
|
|
private String tag;
|
|
|
|
private String tag;
|
|
|
|
|
|
|
|
|
|
|
|
private XBEL(String t) {
|
|
|
|
private XBEL(String t) {
|
|
|
@ -77,7 +77,7 @@ public class YMarkXBELImporter extends DefaultHandler implements Runnable {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
public String endTag(boolean empty) {
|
|
|
|
public String endTag(boolean empty) {
|
|
|
|
buffer.setLength(0);
|
|
|
|
buffer.setLength(0);
|
|
|
|
buffer.append(tag);
|
|
|
|
buffer.append(this.tag);
|
|
|
|
if(empty) {
|
|
|
|
if(empty) {
|
|
|
|
buffer.append('/');
|
|
|
|
buffer.append('/');
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
@ -88,7 +88,7 @@ public class YMarkXBELImporter extends DefaultHandler implements Runnable {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
public String startTag(boolean att) {
|
|
|
|
public String startTag(boolean att) {
|
|
|
|
buffer.setLength(0);
|
|
|
|
buffer.setLength(0);
|
|
|
|
buffer.append(tag);
|
|
|
|
buffer.append(this.tag);
|
|
|
|
if(!att)
|
|
|
|
if(!att)
|
|
|
|
buffer.append('>');
|
|
|
|
buffer.append('>');
|
|
|
|
return buffer.toString();
|
|
|
|
return buffer.toString();
|
|
|
@ -127,6 +127,7 @@ public class YMarkXBELImporter extends DefaultHandler implements Runnable {
|
|
|
|
this.folder.append(this.RootFolder);
|
|
|
|
this.folder.append(this.RootFolder);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void run() {
|
|
|
|
public void run() {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
this.xmlReader.parse(new InputSource(this.bmk_file));
|
|
|
|
this.xmlReader.parse(new InputSource(this.bmk_file));
|
|
|
@ -146,6 +147,7 @@ public class YMarkXBELImporter extends DefaultHandler implements Runnable {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void endDocument() throws SAXException {
|
|
|
|
public void endDocument() throws SAXException {
|
|
|
|
// put alias references in the bookmark queue to ensure that folders get updated
|
|
|
|
// put alias references in the bookmark queue to ensure that folders get updated
|
|
|
|
// we do that at endDocument to ensure all referenced bookmarks already exist
|
|
|
|
// we do that at endDocument to ensure all referenced bookmarks already exist
|
|
|
@ -154,6 +156,7 @@ public class YMarkXBELImporter extends DefaultHandler implements Runnable {
|
|
|
|
this.bmkRef.clear();
|
|
|
|
this.bmkRef.clear();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void startElement(final String uri, final String name, String tag, final Attributes atts) throws SAXException {
|
|
|
|
public void startElement(final String uri, final String name, String tag, final Attributes atts) throws SAXException {
|
|
|
|
YMarkDate date = new YMarkDate();
|
|
|
|
YMarkDate date = new YMarkDate();
|
|
|
|
if (tag == null) return;
|
|
|
|
if (tag == null) return;
|
|
|
@ -221,6 +224,7 @@ public class YMarkXBELImporter extends DefaultHandler implements Runnable {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void endElement(final String uri, final String name, String tag) {
|
|
|
|
public void endElement(final String uri, final String name, String tag) {
|
|
|
|
if (tag == null) return;
|
|
|
|
if (tag == null) return;
|
|
|
|
tag = tag.toLowerCase();
|
|
|
|
tag = tag.toLowerCase();
|
|
|
@ -230,7 +234,7 @@ public class YMarkXBELImporter extends DefaultHandler implements Runnable {
|
|
|
|
this.bmk.put(YMarkEntry.BOOKMARK.FOLDERS.key(), this.folder.toString());
|
|
|
|
this.bmk.put(YMarkEntry.BOOKMARK.FOLDERS.key(), this.folder.toString());
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
this.bookmarks.put(this.bmk);
|
|
|
|
this.bookmarks.put(this.bmk);
|
|
|
|
bmk = new YMarkEntry();
|
|
|
|
this.bmk = new YMarkEntry();
|
|
|
|
} catch (InterruptedException e) {
|
|
|
|
} catch (InterruptedException e) {
|
|
|
|
Log.logException(e);
|
|
|
|
Log.logException(e);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -240,7 +244,7 @@ public class YMarkXBELImporter extends DefaultHandler implements Runnable {
|
|
|
|
// go up one folder
|
|
|
|
// go up one folder
|
|
|
|
//TODO: get rid of .toString.equals()
|
|
|
|
//TODO: get rid of .toString.equals()
|
|
|
|
if(!this.folder.toString().equals(this.RootFolder)) {
|
|
|
|
if(!this.folder.toString().equals(this.RootFolder)) {
|
|
|
|
folder.setLength(folder.lastIndexOf(YMarkUtil.FOLDERS_SEPARATOR));
|
|
|
|
this.folder.setLength(this.folder.lastIndexOf(YMarkUtil.FOLDERS_SEPARATOR));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
this.outer_state = XBEL.FOLDER;
|
|
|
|
this.outer_state = XBEL.FOLDER;
|
|
|
|
} else if (XBEL.INFO.tag().equals(tag)) {
|
|
|
|
} else if (XBEL.INFO.tag().equals(tag)) {
|
|
|
@ -250,24 +254,25 @@ public class YMarkXBELImporter extends DefaultHandler implements Runnable {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void characters(final char ch[], final int start, final int length) {
|
|
|
|
public void characters(final char ch[], final int start, final int length) {
|
|
|
|
if (parse_value) {
|
|
|
|
if (this.parse_value) {
|
|
|
|
buffer.append(ch, start, length);
|
|
|
|
this.buffer.append(ch, start, length);
|
|
|
|
switch(outer_state) {
|
|
|
|
switch(this.outer_state) {
|
|
|
|
case BOOKMARK:
|
|
|
|
case BOOKMARK:
|
|
|
|
switch(inner_state) {
|
|
|
|
switch(this.inner_state) {
|
|
|
|
case DESC:
|
|
|
|
case DESC:
|
|
|
|
this.bmk.put(YMarkEntry.BOOKMARK.DESC.key(), buffer.toString().trim());
|
|
|
|
this.bmk.put(YMarkEntry.BOOKMARK.DESC.key(), this.buffer.toString().trim());
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case TITLE:
|
|
|
|
case TITLE:
|
|
|
|
this.bmk.put(YMarkEntry.BOOKMARK.TITLE.key(), buffer.toString().trim());
|
|
|
|
this.bmk.put(YMarkEntry.BOOKMARK.TITLE.key(), this.buffer.toString().trim());
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case FOLDER:
|
|
|
|
case FOLDER:
|
|
|
|
switch(inner_state) {
|
|
|
|
switch(this.inner_state) {
|
|
|
|
case DESC:
|
|
|
|
case DESC:
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case TITLE:
|
|
|
|
case TITLE:
|
|
|
@ -309,6 +314,6 @@ public class YMarkXBELImporter extends DefaultHandler implements Runnable {
|
|
|
|
if(url)
|
|
|
|
if(url)
|
|
|
|
this.ref.put(YMarkEntry.BOOKMARK.URL.key(), this.bmk.get(YMarkEntry.BOOKMARK.URL.key()));
|
|
|
|
this.ref.put(YMarkEntry.BOOKMARK.URL.key(), this.bmk.get(YMarkEntry.BOOKMARK.URL.key()));
|
|
|
|
this.ref.put(YMarkEntry.BOOKMARK.FOLDERS.key(), this.folderstring.toString());
|
|
|
|
this.ref.put(YMarkEntry.BOOKMARK.FOLDERS.key(), this.folderstring.toString());
|
|
|
|
this.bmkRef.put(id, ref);
|
|
|
|
this.bmkRef.put(id, this.ref);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|