[freenet-cvs] r11272 - in trunk/freenet/src/freenet/clients/http: . filter

nextgens at freenetproject.org nextgens at freenetproject.org
Wed Dec 6 18:18:51 UTC 2006


Author: nextgens
Date: 2006-12-06 18:18:48 +0000 (Wed, 06 Dec 2006)
New Revision: 11272

Modified:
   trunk/freenet/src/freenet/clients/http/N2NTMToadlet.java
   trunk/freenet/src/freenet/clients/http/QueueToadlet.java
   trunk/freenet/src/freenet/clients/http/ToadletContextImpl.java
   trunk/freenet/src/freenet/clients/http/filter/CSSTokenizerFilter.java
Log:
Cleanup some imports, implement basic sorting on /queue/

Modified: trunk/freenet/src/freenet/clients/http/N2NTMToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/N2NTMToadlet.java	2006-12-06 16:33:18 UTC (rev 11271)
+++ trunk/freenet/src/freenet/clients/http/N2NTMToadlet.java	2006-12-06 18:18:48 UTC (rev 11272)
@@ -21,7 +21,6 @@
 import freenet.support.HTMLNode;
 import freenet.support.Logger;
 import freenet.support.MultiValueTable;
-import freenet.support.ShortBuffer;
 import freenet.support.SimpleFieldSet;
 import freenet.support.io.Bucket;
 

Modified: trunk/freenet/src/freenet/clients/http/QueueToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/QueueToadlet.java	2006-12-06 16:33:18 UTC (rev 11271)
+++ trunk/freenet/src/freenet/clients/http/QueueToadlet.java	2006-12-06 18:18:48 UTC (rev 11272)
@@ -60,6 +60,8 @@
 	private NodeClientCore core;
 	final FCPServer fcp;
 	
+	private boolean isReversed = false;
+	
 	public QueueToadlet(NodeClientCore core, FCPServer fcp, HighLevelSimpleClient client) {
 		super(client);
 		this.core = core;
@@ -292,8 +294,8 @@
 			return;
 		}
 		
-		HTTPRequest request = new HTTPRequest(uri, null, ctx);
-		String requestPath = request.getPath().substring("/queue/".length());
+		final HTTPRequest request = new HTTPRequest(uri, null, ctx);
+		final String requestPath = request.getPath().substring("/queue/".length());
 		
 		if (requestPath.length() > 0) {
 			/* okay, there is something in the path, check it. */
@@ -318,6 +320,7 @@
 				}
 			} catch (MalformedURLException mue1) {
 			}
+			return;
 		}
 		
 		PageMaker pageMaker = ctx.getPageMaker();
@@ -391,28 +394,58 @@
 			}
 		}
 		
-		Comparator identifierComparator = new Comparator() {
+		Comparator jobComparator = new Comparator() {
 			public int compare(Object first, Object second) {
 				ClientRequest firstRequest = (ClientRequest) first;
 				ClientRequest secondRequest = (ClientRequest) second;
-				short firstPrio = firstRequest.getPriority();
-				short secondPrio = secondRequest.getPriority();
-				if(firstPrio > secondPrio) return 1;
-				if(secondPrio > firstPrio) return -1;
-				return firstRequest.getIdentifier().compareTo(secondRequest.getIdentifier());
+
+				int result = 0;
+				boolean isSet = true;
+				
+				if(request.isParameterSet("sortBy")){
+					final String sortBy = request.getParam("sortBy"); 
+
+					if(sortBy.equals("id")){
+						result = firstRequest.getIdentifier().compareToIgnoreCase(secondRequest.getIdentifier());
+					}else if(sortBy.equals("size")){
+						result = (firstRequest.getTotalBlocks() - secondRequest.getTotalBlocks()) < 0 ? -1 : 1;
+					}else if(sortBy.equals("progress")){
+						result = firstRequest.getSuccessFraction() - secondRequest.getSuccessFraction() < 0 ? -1 : 1;
+					}else
+						isSet=false;
+				}else
+					isSet=false;
+				
+				if(!isSet){
+					int priorityDifference =  firstRequest.getPriority() - secondRequest.getPriority(); 
+					if (priorityDifference != 0) 
+						result = (priorityDifference < 0 ? -1 : 1);
+					else
+						result = firstRequest.getIdentifier().compareTo(secondRequest.getIdentifier());
+				}
+
+				if(result == 0){
+					return 0;
+				}else if(request.isParameterSet("reversed")){
+					isReversed = true;
+					return result > 0 ? -1 : 1;
+				}else{
+					isReversed = false;
+					return result < 0 ? -1 : 1;
+				}
 			}
 		};
 		
-		Collections.sort(completedDownloadToDisk, identifierComparator);
-		Collections.sort(completedDownloadToTemp, identifierComparator);
-		Collections.sort(completedUpload, identifierComparator);
-		Collections.sort(completedDirUpload, identifierComparator);
-		Collections.sort(failedDownload, identifierComparator);
-		Collections.sort(failedUpload, identifierComparator);
-		Collections.sort(failedDirUpload, identifierComparator);
-		Collections.sort(uncompletedDownload, identifierComparator);
-		Collections.sort(uncompletedUpload, identifierComparator);
-		Collections.sort(uncompletedDirUpload, identifierComparator);
+		Collections.sort(completedDownloadToDisk, jobComparator);
+		Collections.sort(completedDownloadToTemp, jobComparator);
+		Collections.sort(completedUpload, jobComparator);
+		Collections.sort(completedDirUpload, jobComparator);
+		Collections.sort(failedDownload, jobComparator);
+		Collections.sort(failedUpload, jobComparator);
+		Collections.sort(failedDirUpload, jobComparator);
+		Collections.sort(uncompletedDownload, jobComparator);
+		Collections.sort(uncompletedUpload, jobComparator);
+		Collections.sort(uncompletedDirUpload, jobComparator);
 		
 		HTMLNode pageNode = pageMaker.getPageNode("(" + (uncompletedDirUpload.size() + uncompletedDownload.size()
 				+ uncompletedUpload.size()) + '/' + (failedDirUpload.size() + failedDownload.size() + failedUpload.size()) + '/'
@@ -799,9 +832,9 @@
 		for (int columnIndex = 0, columnCount = columns.length; columnIndex < columnCount; columnIndex++) {
 			int column = columns[columnIndex];
 			if (column == LIST_IDENTIFIER) {
-				headerRow.addChild("th", "Identifier");
+				headerRow.addChild("th").addChild("a", "href", (isReversed ? "?sortBy=id" : "?sortBy=id&reversed")).addChild("#", "Identifier");
 			} else if (column == LIST_SIZE) {
-				headerRow.addChild("th", "Size");
+				headerRow.addChild("th").addChild("a", "href", (isReversed ? "?sortBy=size" : "?sortBy=size&reversed")).addChild("#", "Size");
 			} else if (column == LIST_DOWNLOAD) {
 				headerRow.addChild("th", "Download");
 			} else if (column == LIST_MIME_TYPE) {
@@ -813,13 +846,13 @@
 			} else if (column == LIST_FILENAME) {
 				headerRow.addChild("th", "Filename");
 			} else if (column == LIST_PRIORITY) {
-				headerRow.addChild("th", "Priority");
+				headerRow.addChild("th").addChild("a", "href", (isReversed ? "?sortBy=priority" : "?sortBy=priority&reversed")).addChild("#", "Priority");
 			} else if (column == LIST_FILES) {
 				headerRow.addChild("th", "Files");
 			} else if (column == LIST_TOTAL_SIZE) {
 				headerRow.addChild("th", "Total Size");
 			} else if (column == LIST_PROGRESS) {
-				headerRow.addChild("th", "Progress");
+				headerRow.addChild("th").addChild("a", "href", (isReversed ? "?sortBy=progress" : "?sortBy=progress&reversed")).addChild("#", "Progress");
 			} else if (column == LIST_REASON) {
 				headerRow.addChild("th", "Reason");
 			}

Modified: trunk/freenet/src/freenet/clients/http/ToadletContextImpl.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/ToadletContextImpl.java	2006-12-06 16:33:18 UTC (rev 11271)
+++ trunk/freenet/src/freenet/clients/http/ToadletContextImpl.java	2006-12-06 18:18:48 UTC (rev 11272)
@@ -13,7 +13,6 @@
 import java.util.Enumeration;
 import java.util.TimeZone;
 
-import freenet.node.NodeClientCore;
 import freenet.support.HTMLEncoder;
 import freenet.support.HTMLNode;
 import freenet.support.Logger;

Modified: trunk/freenet/src/freenet/clients/http/filter/CSSTokenizerFilter.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/filter/CSSTokenizerFilter.java	2006-12-06 16:33:18 UTC (rev 11271)
+++ trunk/freenet/src/freenet/clients/http/filter/CSSTokenizerFilter.java	2006-12-06 18:18:48 UTC (rev 11272)
@@ -5,7 +5,6 @@
  * http://www.gnu.org/ for further details of the GPL. */ 
 package freenet.clients.http.filter;
 import java.io.*;
-import java.util.*;
 /* This class tokenizes a CSS2 Reader stream, writes it out to the output Writer, and filters any URLs found */
 // WARNING: this is not as thorough as the HTML parser - new versions of the standard could lead to anonymity risks. See comments in SaferFilter.java
 // FIXME: Rewrite this as a proper whitelist filter. It's about half way there, it




More information about the cvs mailing list