diff --git a/htroot/Bookmarks_p.java b/htroot/Bookmarks_p.java index e318c03a9..cad6069ce 100644 --- a/htroot/Bookmarks_p.java +++ b/htroot/Bookmarks_p.java @@ -148,7 +148,7 @@ public class Bookmarks_p { start=Integer.parseInt((String) post.get("start")); } } - Iterator it=switchboard.bookmarksDB.tagIterator(true); + Iterator it=switchboard.bookmarksDB.getTagIterator(true); int count=0; bookmarksDB.Tag tag; while(it.hasNext()){ diff --git a/htroot/xml/bookmarks/tags/get.java b/htroot/xml/bookmarks/tags/get.java new file mode 100644 index 000000000..db360a424 --- /dev/null +++ b/htroot/xml/bookmarks/tags/get.java @@ -0,0 +1,82 @@ +// /xml.bookmarks/tags/get.java +// ------------------------------- +// part of the AnomicHTTPD caching proxy +// (C) by Michael Peter Christen; mc@anomic.de +// first published on http://www.anomic.de +// Frankfurt, Germany, 2004, 2005 +// +// last major change: 27.12.2005 +// this file is contributed by Alexander Schier +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Using this software in any meaning (reading, learning, copying, compiling, +// running) means that you agree that the Author(s) is (are) not responsible +// for cost, loss of data or any harm that may be caused directly or indirectly +// by usage of this softare or this documentation. The usage of this software +// is on your own risk. The installation and usage (starting/running) of this +// software may allow other people or application to access your computer and +// any attached devices and is highly dependent on the configuration of the +// software which must be done by the user of the software; the author(s) is +// (are) also not responsible for proper configuration and usage of the +// software, even if provoked by documentation provided together with +// the software. +// +// Any changes to this file according to the GPL as documented in the file +// gpl.txt aside this file in the shipment you received can be done to the +// lines that follows this copyright notice here, but changes must not be +// done inside the copyright notive above. A re-distribution must contain +// the intact and unchanged copyright notice. +// Contributions and changes to the program code must be marked as such. + +// You must compile this file with +// javac -classpath .:../classes IndexCreate_p.java +// if the shell's current path is HTROOT + +//package xml.bookmarks.tags; +package xml.bookmarks.tags; +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 get { + public static serverObjects respond(httpHeader header, serverObjects post, serverSwitch env) { + // return variable that accumulates replacements + plasmaSwitchboard switchboard = (plasmaSwitchboard) env; + serverObjects prop = new serverObjects(); + + Iterator it=switchboard.bookmarksDB.getTagIterator(false); + int count=0; + bookmarksDB.Tag tag; + while(it.hasNext()){ + tag=(bookmarksDB.Tag)it.next(); + prop.put("tags_"+count+"_name", tag.getTagName()); + prop.put("tags_"+count+"_count", tag.size()); + count++; + } + prop.put("tags", count); + + // return rewrite properties + return prop; + } + +} + + + diff --git a/htroot/xml/bookmarks/tags/get.xml b/htroot/xml/bookmarks/tags/get.xml new file mode 100644 index 000000000..ca7dfd1f4 --- /dev/null +++ b/htroot/xml/bookmarks/tags/get.xml @@ -0,0 +1,5 @@ + + +#{tags}# +#{/tags}# + \ No newline at end of file diff --git a/htroot/xml/bookmarks/tags/get_p.java b/htroot/xml/bookmarks/tags/get_p.java index 8be0fb02d..08820729c 100644 --- a/htroot/xml/bookmarks/tags/get_p.java +++ b/htroot/xml/bookmarks/tags/get_p.java @@ -60,7 +60,7 @@ public class get_p { plasmaSwitchboard switchboard = (plasmaSwitchboard) env; serverObjects prop = new serverObjects(); - Iterator it=switchboard.bookmarksDB.tagIterator(true); + Iterator it=switchboard.bookmarksDB.getTagIterator(true); int count=0; bookmarksDB.Tag tag; while(it.hasNext()){ diff --git a/source/de/anomic/data/bookmarksDB.java b/source/de/anomic/data/bookmarksDB.java index 8f525094a..46da978c6 100644 --- a/source/de/anomic/data/bookmarksDB.java +++ b/source/de/anomic/data/bookmarksDB.java @@ -283,7 +283,7 @@ public class bookmarksDB { Iterator it=hashes.iterator(); Bookmark bm; while(it.hasNext()){ - bm=new Bookmark((String) it.next()); + bm=getBookmark((String) it.next()); if(bm.getPublic()){ set.add(bm.getUrlHash()); } @@ -291,6 +291,23 @@ public class bookmarksDB { } return set.iterator(); } + public Iterator getTagIterator(boolean priv){ + if(priv){ + return tagIterator(true); + }else{ + Vector publicTags=new Vector(); + Iterator it=tagIterator(true); + Tag tag; + while(it.hasNext()){ + tag=(Tag)it.next(); + //this may be slow... + if(tag.hasPublicItems()){ + publicTags.add(tag); + } + } + return publicTags.iterator(); + } + } public boolean removeBookmark(String urlHash){ Bookmark bookmark = getBookmark(urlHash); if(bookmark == null) return false; //does not exist @@ -375,6 +392,13 @@ public class bookmarksDB { public Vector getUrlHashes(){ return listManager.string2vector((String)this.mem.get(URL_HASHES)); } + public boolean hasPublicItems(){ + Iterator it=getBookmarksIterator(this.getTagName(), false); + if(it.hasNext()){ + return true; + } + return false; + } public void add(String urlHash){ String urlHashes = (String)mem.get(URL_HASHES); Vector list;