From 5389ee056a46b3bfeb84839277f7d24277e033e2 Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Wed, 6 Oct 2010 02:05:26 +0000
Subject: [PATCH] sort snark peers by completion %

---
 .../org/klomp/snark/web/I2PSnarkServlet.java  | 21 +++++++++++++++----
 1 file changed, 17 insertions(+), 4 deletions(-)

diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java
index ea1325e188..3b7c507029 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java
@@ -8,6 +8,7 @@ import java.io.PrintWriter;
 import java.text.Collator;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.Comparator;
 import java.util.Enumeration;
 import java.util.Iterator;
@@ -821,10 +822,9 @@ public class I2PSnarkServlet extends Default {
         out.write("</td>\n</tr>\n");
 
         if(showPeers && isRunning && curPeers > 0) {
-            List peers = snark.coordinator.peerList();
-            Iterator it = peers.iterator();
-            while (it.hasNext()) {
-                Peer peer = (Peer)it.next();
+            List<Peer> peers = snark.coordinator.peerList();
+            Collections.sort(peers, new PeerComparator());
+            for (Peer peer : peers) {
                 if (!peer.isConnected())
                     continue;
                 out.write("<tr class=\"" + rowClass + "\">");
@@ -908,6 +908,19 @@ public class I2PSnarkServlet extends Default {
         }
     }
     
+    /**
+     *  Sort by completeness (seeds first), then by ID
+     *  @since 0.8.1
+     */
+    private static class PeerComparator implements Comparator<Peer> {
+        public int compare(Peer l, Peer r) {
+            int diff = r.completed() - l.completed();      // reverse
+            if (diff != 0)
+                return diff;
+            return l.toString().substring(5, 9).compareTo(r.toString().substring(5, 9));
+        }
+    }
+
     private void writeAddForm(PrintWriter out, HttpServletRequest req) throws IOException {
         String uri = req.getRequestURI();
         String newURL = req.getParameter("newURL");
-- 
GitLab