You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.8 KiB
82 lines
2.8 KiB
package xml.bookmarks.xbel;
|
|
|
|
import java.util.Iterator;
|
|
|
|
import de.anomic.data.bookmarksDB;
|
|
import de.anomic.http.httpHeader;
|
|
import de.anomic.plasma.plasmaSwitchboard;
|
|
import de.anomic.server.serverObjects;
|
|
import de.anomic.server.serverSwitch;
|
|
|
|
public class xbel {
|
|
|
|
private static serverObjects prop;
|
|
private static plasmaSwitchboard switchboard;
|
|
private static boolean isAdmin;
|
|
|
|
public static serverObjects respond(httpHeader header, serverObjects post, serverSwitch env) {
|
|
|
|
int count = 0;;
|
|
|
|
prop = new serverObjects();
|
|
switchboard = (plasmaSwitchboard) env;
|
|
isAdmin=switchboard.verifyAuthentication(header, true);
|
|
|
|
if(isAdmin) {
|
|
count = recurseFolders(switchboard.bookmarksDB.getFolderList(isAdmin),"/",0,true,"");
|
|
prop.put("xbel", count);
|
|
|
|
}
|
|
return prop; // return from serverObjects respond()
|
|
|
|
}
|
|
|
|
private static int recurseFolders(Iterator<String> it, String root, int count, boolean next, String prev){
|
|
String fn="";
|
|
bookmarksDB.Bookmark bookmark;
|
|
|
|
if(next) fn = it.next().toString();
|
|
else fn = prev;
|
|
|
|
if(fn.equals("\uffff")) {
|
|
int i = prev.replaceAll("[^/]","").length();
|
|
while(i>0){
|
|
prop.put("xbel_"+count+"_elements", "</folder>");
|
|
count++;
|
|
i--;
|
|
}
|
|
return count;
|
|
}
|
|
|
|
if(fn.startsWith(root)){
|
|
prop.put("xbel_"+count+"_elements", "<folder id=\""+bookmarksDB.tagHash(fn)+"\">");
|
|
count++;
|
|
prop.put("xbel_"+count+"_elements", "<title>"+fn.replaceFirst(root+"/*","")+"</title>");
|
|
count++;
|
|
Iterator<String> bit=switchboard.bookmarksDB.getBookmarksIterator(fn, isAdmin);
|
|
while(bit.hasNext()){
|
|
bookmark=switchboard.bookmarksDB.getBookmark(bit.next());
|
|
prop.put("xbel_"+count+"_elements", "<bookmark id=\""+bookmark.getUrlHash()+"\" href=\""+bookmark.getUrl()+"\">");
|
|
count++;
|
|
prop.put("xbel_"+count+"_elements", "<title>"+bookmark.getTitle()+"</title>");
|
|
count++;
|
|
prop.put("xbel_"+count+"_elements", "<info><metadata owner=\"Mozilla\" ShortcutURL=\""+bookmark.getTagsString().replaceAll("/.*,", "")+"\"/></info>");
|
|
count++;
|
|
prop.put("xbel_"+count+"_elements", "<desc>"+bookmark.getDescription()+"</desc>");
|
|
count++;
|
|
prop.put("xbel_"+count+"_elements", "</bookmark>");
|
|
count++;
|
|
}
|
|
if(it.hasNext()){
|
|
count = recurseFolders(it, fn, count, true, fn);
|
|
}
|
|
} else {
|
|
prop.put("xbel_"+count+"_elements", "</folder>");
|
|
count++;
|
|
root = root.replaceAll("(/.[^/]*$)", "");
|
|
if(root.equals("")) root = "/";
|
|
count = recurseFolders(it, root, count, false, fn);
|
|
}
|
|
return count;
|
|
}
|
|
} |