Author: j16sdiz
Date: 2008-12-19 01:06:28 +0000 (Fri, 19 Dec 2008)
New Revision: 24554
Modified:
trunk/plugins/XMLSpider/XMLSpider.java
Log:
http page optimization: get the page count and list in one pass
Modified: trunk/plugins/XMLSpider/XMLSpider.java
===================================================================
--- trunk/plugins/XMLSpider/XMLSpider.java 2008-12-19 00:47:04 UTC (rev
24553)
+++ trunk/plugins/XMLSpider/XMLSpider.java 2008-12-19 01:06:28 UTC (rev
24554)
@@ -1024,29 +1024,38 @@
}, "Spider Plugin Starter");
}
- private long getPageCount(Status status) {
- Query query = db.query();
- query.constrain(Page.class);
- query.descend("status").constrain(status);
+ static class PageStatus {
+ long count;
+ List<Page> pages;
- ObjectSet<Page> set = query.execute();
- return set.size();
+ PageStatus(long count, List<Page> pages) {
+ this.count = count;
+ this.pages = pages;
+ }
}
- private void listPage(Status status, HTMLNode parent) {
+ private PageStatus getPageStatus(Status status) {
Query query = db.query();
query.constrain(Page.class);
query.descend("status").constrain(status);
query.descend("lastChange").orderDescending();
+
ObjectSet<Page> set = query.execute();
+ List<Page> pages = new ArrayList<Page>();
+ while (set.hasNext() && pages.size() < maxShownURIs) {
+ pages.add(set.next());
+ }
- if (set.isEmpty()) {
+ return new PageStatus(set.size(), pages);
+ }
+
+ private void listPages(PageStatus pageStatus, HTMLNode parent) {
+ if (pageStatus.pages.isEmpty()) {
HTMLNode list = parent.addChild("#", "NO URI");
} else {
HTMLNode list = parent.addChild("ol", "style",
"overflow: auto; white-space: nowrap;");
- for (int i = 0; i < maxShownURIs && set.hasNext(); i++)
{
- Page page = set.next();
+ for (Page page : pageStatus.pages) {
HTMLNode litem = list.addChild("li", "title",
page.comment);
litem.addChild("a", "href", "/freenet:" +
page.uri, page.uri);
}
@@ -1103,17 +1112,21 @@
HTMLNode overviewTable = contentNode.addChild("table", "class",
"column");
HTMLNode overviewTableRow = overviewTable.addChild("tr");
+ PageStatus queuedStatus = getPageStatus(Status.QUEUED);
+ PageStatus succeededStatus = getPageStatus(Status.SUCCEEDED);
+ PageStatus failedStatus = getPageStatus(Status.FAILED);
+
// Column 1
HTMLNode nextTableCell = overviewTableRow.addChild("td",
"class", "first");
HTMLNode statusBox = pageMaker.getInfobox("Spider Status");
HTMLNode statusContent = pageMaker.getContentNode(statusBox);
statusContent.addChild("#", "Running Request: " +
runningFetch.size() + "/" + maxParallelRequests);
statusContent.addChild("br");
- statusContent.addChild("#", "Queued: " +
getPageCount(Status.QUEUED));
+ statusContent.addChild("#", "Queued: " + queuedStatus.count);
statusContent.addChild("br");
- statusContent.addChild("#", "Succeeded: " +
getPageCount(Status.SUCCEEDED));
+ statusContent.addChild("#", "Succeeded: " +
succeededStatus.count);
statusContent.addChild("br");
- statusContent.addChild("#", "Failed: " +
getPageCount(Status.FAILED));
+ statusContent.addChild("#", "Failed: " + failedStatus.count);
statusContent.addChild("br");
statusContent.addChild("br");
statusContent.addChild("#", "Queued Event: " +
callbackExecutor.getQueue().size());
@@ -1185,19 +1198,19 @@
HTMLNode queuedBox = pageMaker.getInfobox("Queued URI");
queuedBox.addAttribute("style", "right: 0; overflow: auto;");
HTMLNode queuedContent = pageMaker.getContentNode(queuedBox);
- listPage(Status.QUEUED, queuedContent);
+ listPages(queuedStatus, queuedContent);
contentNode.addChild(queuedBox);
HTMLNode succeededBox = pageMaker.getInfobox("Succeeded URI");
succeededBox.addAttribute("style", "right: 0;");
HTMLNode succeededContent =
pageMaker.getContentNode(succeededBox);
- listPage(Status.SUCCEEDED, succeededContent);
+ listPages(succeededStatus, succeededContent);
contentNode.addChild(succeededBox);
HTMLNode failedBox = pageMaker.getInfobox("Failed URI");
failedBox.addAttribute("style", "right: 0;");
HTMLNode failedContent = pageMaker.getContentNode(failedBox);
- listPage(Status.FAILED, failedContent);
+ listPages(failedStatus, failedContent);
contentNode.addChild(failedBox);
return pageNode.generate();
_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs