On Monday 15 December 2008 14:27, j16sdiz at freenetproject.org wrote:
> Author: j16sdiz
> Date: 2008-12-15 14:27:46 +0000 (Mon, 15 Dec 2008)
> New Revision: 24356
> 
> Modified:
>    trunk/plugins/XMLSpider/XMLSpider.java
> Log:
> use PageMaker for html
> 
> Modified: trunk/plugins/XMLSpider/XMLSpider.java
> ===================================================================
> --- trunk/plugins/XMLSpider/XMLSpider.java    2008-12-15 13:25:09 UTC (rev 
24355)
> +++ trunk/plugins/XMLSpider/XMLSpider.java    2008-12-15 14:27:46 UTC (rev 
24356)
> @@ -15,6 +15,7 @@
>  import java.security.MessageDigest;
>  import java.security.NoSuchAlgorithmException;
>  import java.util.ArrayList;
> +import java.util.Collections;
>  import java.util.HashMap;
>  import java.util.HashSet;
>  import java.util.Iterator;
> @@ -54,6 +55,7 @@
>  import freenet.client.async.ClientCallback;
>  import freenet.client.async.ClientGetter;
>  import freenet.client.async.USKCallback;
> +import freenet.clients.http.PageMaker;
>  import freenet.clients.http.filter.ContentFilter;
>  import freenet.clients.http.filter.FoundURICallback;
>  import freenet.clients.http.filter.UnsafeContentTypeException;
> @@ -69,7 +71,7 @@
>  import freenet.pluginmanager.FredPluginVersioned;
>  import freenet.pluginmanager.PluginHTTPException;
>  import freenet.pluginmanager.PluginRespirator;
> -import freenet.support.HTMLEncoder;
> +import freenet.support.HTMLNode;
>  import freenet.support.Logger;
>  import freenet.support.api.Bucket;
>  import freenet.support.api.HTTPRequest;
> @@ -160,7 +162,7 @@
>       }
>       
>       /** Document ID of fetching documents */
> -     protected Map<Page, ClientGetter> runningFetch = new HashMap<Page, 
ClientGetter>();
> +     protected Map<Page, ClientGetter> runningFetch = 
Collections.synchronizedMap(new HashMap<Page, ClientGetter>());
>  
>       long tProducedIndex;
>       protected AtomicLong maxPageId;
> @@ -210,7 +212,8 @@
>       // Any lower makes it very difficult to debug. Maybe reduce for 
production - after solving the ARK bugs.
>       private final short PRIORITY_CLASS = 
RequestStarter.IMMEDIATE_SPLITFILE_PRIORITY_CLASS;
>       private boolean stopped = true;
> -     PluginRespirator pr;
> +     
> +     private PageMaker pageMaker;
>  
>       private final static String[] BADLIST_EXTENSTION = new String[] { 
>               ".ico", ".bmp", ".png", ".jpg", ".gif",         // image
> @@ -971,11 +974,14 @@
>       }
>  
>       public void runPlugin(PluginRespirator pr){
> -             this.pr = pr;
>               this.core = pr.getNode().clientCore;
>  
> +             this.pageMaker = pr.getPageMaker();
> +             
pageMaker.addNavigationLink("/plugins/plugins.XMLSpider.XMLSpider", "Home", 
"Home 
page", false, null);
> +             pageMaker.addNavigationLink("/plugins/", "Plugins page", "Back 
> to Plugins 
page", false, null);
> +
>               /* Initialize Fetch Context */
> -             this.ctx = core.makeClient((short) 0).getFetchContext();
> +             this.ctx = pr.getHLSimpleClient().getFetchContext();
>               ctx.maxSplitfileBlockRetries = 2;
>               ctx.maxNonSplitfileRetries = 2;
>               ctx.maxTempLength = 2 * 1024 * 1024;
> @@ -1018,192 +1024,85 @@
>                       }
>               }, "Spider Plugin Starter");
>       }
> +     
> +     private long getPageCount(Status status) {
> +             Query query = db.query();
> +             query.constrain(Page.class);
> +             query.descend("status").constrain(status);
> +             ObjectSet<Page> set = query.execute();
>  
> -     /**
> -      * Interface to the Spider data
> -      */
> -     public String handleHTTPGet(HTTPRequest request) throws 
PluginHTTPException{
> -             StringBuilder out = new StringBuilder();
> +             return set.size();
> +     }
> +     
> +     private void listPage(Status status, HTMLNode parent) {
> +             Query query = db.query();
> +             query.constrain(Page.class);
> +             query.descend("status").constrain(status);
> +             query.descend("lastChange").orderDescending();
> +             ObjectSet<Page> set = query.execute();
>  
> -             String listname = request.getParam("list");
> -             if(listname.length() != 0)
> -             {
> -                     appendDefaultHeader(out,null);
> -                     out.append("<p><h4>"+listname+" URIs</h4></p>");
> -                     appendList(listname, out);
> -                     return out.toString();
> -             }
> -             appendDefaultPageStart(out,null);
> -             String uriParam = request.getParam("adduri");
> -             if(uriParam != null && uriParam.length() != 0)
> -             {
> -                     try {
> -                             FreenetURI uri = new FreenetURI(uriParam);
> -                             synchronized (this) {
> -                                     // Check if queued already
> -                                     Page page = getPageByURI(uri);
> -                                     if (page != null) {
> -                                             // We have no reliable way to 
> stop a request,
> -                                             // requeue only if it is 
> successed / failed
> -                                             if (page.status == 
> Status.SUCCEEDED || page.status == Status.FAILED) 
{
> -                                                     page.lastChange = 
> System.currentTimeMillis();
> -                                                     page.status = 
> Status.QUEUED;
> +             HTMLNode list = parent.addChild("ol", "style", "overflow: 
> scroll");
>  
> -                                                     db.store(page);
> -                                             }
> -                                     }
> -                             }
> -                             out.append("<p>URI added :"+uriParam+"</p>");
> -                             queueURI(uri, "manually");
> -                             startSomeRequests();
> -                     } catch (MalformedURLException mue1) {
> -                             out.append("<p>MalFormed URI: "+uriParam+"</p");
> -                     }
> +             for (int i = 0; i < maxShownURIs && set.hasNext(); i++) {
> +                     Page page = set.next();
> +                     list.addChild("li", new String[] { "title" }, new 
> String[] { 
page.comment }, page.uri);
>               }
> -             return out.toString();
>       }
> -/*
> - * List the visited, queued, failed and running fetches on the web 
interface
> - */
> -     private synchronized void appendList(String listname, StringBuilder 
> out) {
> -             Iterable<Page> it = runningFetch.keySet();
>  
> -             if (listname.equals("running")) {
> -                     it = runningFetch.keySet();
> -             } else if (listname.equals("visited")) {
> -                     Query query = db.query();
> -                     query.constrain(Page.class);
> -                     query.descend("status").constrain(Status.SUCCEEDED);
> -                     query.descend("lastChange").orderAscending();
> -                     ObjectSet<Page> set = query.execute();
> +     /**
> +      * Interface to the Spider data
> +      */
> +     public String handleHTTPGet(HTTPRequest request) throws 
PluginHTTPException{
> +             HTMLNode pageNode = pageMaker.getPageNode(pluginName, null);
> +             HTMLNode contentNode = pageMaker.getContentNode(pageNode);
>  
> -                     it = set;
> -             } else if (listname.equals("queued")) {
> -                     Query query = db.query();
> -                     query.constrain(Page.class);
> -                     query.descend("status").constrain(Status.QUEUED);
> -                     query.descend("lastChange").orderAscending();
> -                     ObjectSet<Page> set = query.execute();
> +             HTMLNode overviewTable = 
contentNode.addChild("table", "class", "column");
> +             HTMLNode overviewTableRow = overviewTable.addChild("tr");
>  
> -                     it = set;
> -             } else if (listname.equals("failed")) {
> -                     Query query = db.query();
> -                     query.constrain(Page.class);
> -                     query.descend("status").constrain(Status.FAILED);
> -                     query.descend("lastChange").orderAscending();
> -                     ObjectSet<Page> set = query.execute();
> +             // Column 1
> +             HTMLNode nextTableCell = 
overviewTableRow.addChild("td", "class", "first");
> +             HTMLNode statusBox = pageMaker.getInfobox("Spider Status");
> +             statusBox.addChild("%", "Running Request: " + 
> runningFetch.size() + "/" + 
maxParallelRequests);
> +             statusBox.addChild("br");
> +             statusBox.addChild("%", "Queued: " + 
> getPageCount(Status.QUEUED));
> +             statusBox.addChild("br");
> +             statusBox.addChild("%", "Succeeded: " + 
> getPageCount(Status.SUCCEEDED));
> +             statusBox.addChild("br");
> +             statusBox.addChild("%", "Failed: " + 
> getPageCount(Status.FAILED));

Please don't use % unless you actually need to. Use # for plain text.

> +             nextTableCell.addChild(statusBox);
>  
> -                     it = set;
> -             }
> +             // Column 2
> +             nextTableCell = overviewTableRow.addChild("td", "class", 
> "second");
> +             statusBox = pageMaker.getInfobox("Spider Status");
> +             nextTableCell.addChild(statusBox);              
>               
> -             for (Page page : it)
> -                     out.append("<code title=\"" + 
> HTMLEncoder.encode(page.comment) + "\">" + 
HTMLEncoder.encode(page.uri)
> -                             + "</code><br/>");
> -     }
> +             HTMLNode runningList = pageMaker.getInfobox("Running URI");
> +             synchronized (runningFetch) {
> +                     HTMLNode list = runningList.addChild("ol", "style", 
> "overflow: scroll");
>  
> -     private void appendDefaultPageStart(StringBuilder out, String 
> stylesheet) 
{
> -
> -             out.append("<HTML><HEAD><TITLE>" + pluginName + "</TITLE>");
> -             if(stylesheet != null)
> -                     out.append("<link href=\""+stylesheet+"\" 
> type=\"text/css\" 
rel=\"stylesheet\" />");
> -             out.append("</HEAD><BODY>\n");
> -             out.append("<CENTER><H1>" + pluginName + 
> "</H1><BR/><BR/><BR/>\n");
> -             out.append("Add uri:");
> -             out.append("<form method=\"GET\"><input type=\"text\" 
name=\"adduri\" /><br/><br/>");
> -             out.append("<input type=\"submit\" value=\"Add uri\" 
> /></form>");
> -             List<Page> runningFetchesSnapshot;
> -             long runningFetchesSnapshotSize;
> -             List<Page> visitedSnapshot;
> -             long visitedSnapshotSize;
> -             List<Page> failedSnapshot;
> -             long failedSnapshotSize;
> -             List<Page> queuedSnapshot;
> -             long queuedSnapshotSize;
> -             
> -             synchronized(this) {
> -                     runningFetchesSnapshot = new 
> ArrayList<Page>(maxShownURIs);
> -                     {
> -                             Iterator<Page> it = 
> this.runningFetch.keySet().iterator();
> -                             for (int i = 0; it.hasNext() && i < 
> maxShownURIs; i++)
> -                                     runningFetchesSnapshot.add(it.next());
> -                             runningFetchesSnapshotSize = 
> runningFetch.size();
> +                     Iterator<Page> pi = runningFetch.keySet().iterator();
> +                     for (int i = 0; i < maxShownURIs && pi.hasNext(); i++) {
> +                             Page page = pi.next();
> +                             list.addChild("li", new String[] { "title" }, 
> new String[] { 
page.comment }, page.uri);
>                       }
> -
> -                     visitedSnapshot = new ArrayList<Page>(maxShownURIs);
> -                     Query query = db.query();
> -                     query.constrain(Page.class);
> -                     query.descend("status").constrain(Status.SUCCEEDED);
> -                     query.descend("lastChange").orderAscending();
> -                     ObjectSet<Page> set = query.execute();
> -                     for (int i = 0; set.hasNext() && i < maxShownURIs; i++)
> -                             visitedSnapshot.add(set.next());
> -                     visitedSnapshotSize = set.size();
> -
> -                     failedSnapshot = new ArrayList<Page>(maxShownURIs);
> -                     query = db.query();
> -                     query.constrain(Page.class);
> -                     query.descend("status").constrain(Status.FAILED);
> -                     query.descend("lastChange").orderAscending();
> -                     set = query.execute();
> -                     for (int i = 0; set.hasNext() && i < maxShownURIs; i++)
> -                             failedSnapshot.add(set.next());
> -                     failedSnapshotSize = set.size();
> -
> -                     queuedSnapshot = new ArrayList<Page>(maxShownURIs);
> -                     query = db.query();
> -                     query.constrain(Page.class);
> -                     query.descend("status").constrain(Status.QUEUED);
> -                     query.descend("lastChange").orderAscending();
> -                     set = query.execute();
> -                     for (int i = 0; set.hasNext() && i < maxShownURIs; i++)
> -                             queuedSnapshot.add(set.next());
> -                     queuedSnapshotSize = set.size();
>               }
> -             
> -             out.append("<p><h3>Running Fetches</h3></p>");
> -             out.append("<br/>Size :" + runningFetchesSnapshotSize + 
> "<br/>");
> -             for (Page page : runningFetchesSnapshot)
> -                     out.append("<code title=\"" + 
> HTMLEncoder.encode(page.comment) + "\">" + 
HTMLEncoder.encode(page.uri)
> -                             + "</code><br/>");
> -             out.append("<p><a href=\"?list="+"running"+"\">Show 
> all</a><br/></p>");
> +             contentNode.addChild(runningList);
>  
> -             
> -             out.append("<p><h3>Queued URIs</h3></p>");
> -             out.append("<br/>Size :" + queuedSnapshotSize + "<br/>");
> -             for (Page page : queuedSnapshot)
> -                     out.append("<code title=\"" + 
> HTMLEncoder.encode(page.comment) + "\">" + 
HTMLEncoder.encode(page.uri)
> -                             + "</code><br/>");
> -             out.append("<p><a href=\"?list=\">Show all</a><br/></p>");
> -     
> -     
> -             out.append("<p><h3>Visited URIs</h3></p>");
> -             out.append("<br/>Size :" + visitedSnapshotSize + "<br/>");
> -             for (Page page : visitedSnapshot)
> -                     out.append("<code title=\"" + 
> HTMLEncoder.encode(page.comment) + "\">" + 
HTMLEncoder.encode(page.uri)
> -                             + "</code><br/>");
> -             out.append("<p><a href=\"?list="+"visited"+"\">Show 
> all</a><br/></p>");
> -             
> -             out.append("<p><h3>Failed URIs</h3></p>");
> -             out.append("<br/>Size :" + failedSnapshotSize + "<br/>");
> -             for (Page page : failedSnapshot)
> -                     out.append("<code title=\"" + 
> HTMLEncoder.encode(page.comment) + "\">" + 
HTMLEncoder.encode(page.uri)
> -                             + "</code><br/>");
> -             out.append("<p><a href=\"?list="+"failed"+"\">Show 
> all</a><br/></p>");
> -             out.append("<p>Time taken in generating index = 
> "+time_taken+"</p>");
> -     }
> +             HTMLNode queuedList = pageMaker.getInfobox("Queued URI");
> +             listPage(Status.QUEUED, queuedList);
> +             contentNode.addChild(queuedList);
>  
> +             HTMLNode succeededList = pageMaker.getInfobox("Succeeded URI");
> +             listPage(Status.SUCCEEDED, succeededList);
> +             contentNode.addChild(succeededList);
>  
> -     private void appendDefaultHeader(StringBuilder out, String stylesheet){
> -             out.append("<HTML><HEAD><TITLE>" + pluginName + "</TITLE>");
> -             if(stylesheet != null)
> -                     out.append("<link href=\""+stylesheet+"\" 
> type=\"text/css\" 
rel=\"stylesheet\" />");
> -             out.append("</HEAD><BODY>\n");
> -             out.append("<CENTER><H1>" + pluginName + 
> "</H1><BR/><BR/><BR/>\n");
> -             out.append("Add uri:");
> -             out.append("<form method=\"GET\"><input type=\"text\" 
name=\"adduri\" /><br/><br/>");
> -             out.append("<input type=\"submit\" value=\"Add uri\" 
> /></form>");
> -     }
> +             HTMLNode failedList = pageMaker.getInfobox("Failed URI");
> +             listPage(Status.FAILED, failedList);
> +             contentNode.addChild(failedList);
>  
> +             return pageNode.generate();
> +     }
> +     
>       /**
>        * creates the callback object for each page.
>        *<p>Used to create inlinks and outlinks for each page separately.
> 
> _______________________________________________
> cvs mailing list
> cvs at freenetproject.org
> http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs
> 
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 827 bytes
Desc: not available
URL: 
<https://emu.freenetproject.org/pipermail/devl/attachments/20081216/6402b0fd/attachment.pgp>

Reply via email to