From da1a50bfebe89ebacf1205cc01b13a2a11207368 Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Sun, 10 Jan 2010 16:42:21 +0000
Subject: [PATCH]     * VersionComparator: Move from TrustedUpdate.java to util

---
 .../src/net/i2p/router/web/NetDbRenderer.java |  3 +-
 .../src/net/i2p/crypto/TrustedUpdate.java     | 60 +----------------
 .../src/net/i2p/util/VersionComparator.java   | 66 +++++++++++++++++++
 3 files changed, 69 insertions(+), 60 deletions(-)
 create mode 100644 core/java/src/net/i2p/util/VersionComparator.java

diff --git a/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java
index 61e156e051..715d92c749 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java
@@ -28,6 +28,7 @@ import net.i2p.data.RouterInfo;
 import net.i2p.router.RouterContext;
 import net.i2p.router.TunnelPoolSettings;
 import net.i2p.util.ObjectCounter;
+import net.i2p.util.VersionComparator;
 
 public class NetDbRenderer {
     private RouterContext _context;
@@ -185,7 +186,7 @@ public class NetDbRenderer {
         // versions table
         List<String> versionList = new ArrayList(versions.objects());
         if (versionList.size() > 0) {
-            Collections.sort(versionList, Collections.reverseOrder(new TrustedUpdate.VersionComparator()));
+            Collections.sort(versionList, Collections.reverseOrder(new VersionComparator()));
             buf.append("<table>\n");
             buf.append("<tr><th>" + _("Version") + "</th><th>" + _("Count") + "</th></tr>\n");
             for (String routerVersion : versionList) {
diff --git a/core/java/src/net/i2p/crypto/TrustedUpdate.java b/core/java/src/net/i2p/crypto/TrustedUpdate.java
index 8729f128f8..0a5466cea7 100644
--- a/core/java/src/net/i2p/crypto/TrustedUpdate.java
+++ b/core/java/src/net/i2p/crypto/TrustedUpdate.java
@@ -8,7 +8,6 @@ import java.io.IOException;
 import java.io.SequenceInputStream;
 import java.io.UnsupportedEncodingException;
 import java.util.ArrayList;
-import java.util.Comparator;
 import java.util.StringTokenizer;
 
 import net.i2p.CoreVersion;
@@ -19,6 +18,7 @@ import net.i2p.data.Signature;
 import net.i2p.data.SigningPrivateKey;
 import net.i2p.data.SigningPublicKey;
 import net.i2p.util.Log;
+import net.i2p.util.VersionComparator;
 
 /**
  * <p>Handles DSA signing and verification of update files.
@@ -101,7 +101,6 @@ D8usM7Dxp5yrDrCYZ5AIijc=
 -----END PGP SIGNATURE-----
 */
 
-    private static final String VALID_VERSION_CHARS = "0123456789.";
     private static final int    VERSION_BYTES       = 16;
     private static final int    HEADER_BYTES        = Signature.SIGNATURE_BYTES + VERSION_BYTES;
     private static final String PROP_TRUSTED_KEYS   = "router.trustedUpdateKeys";
@@ -187,50 +186,6 @@ D8usM7Dxp5yrDrCYZ5AIijc=
         return (new VersionComparator()).compare(currentVersion, newVersion) < 0;
     }
 
-    /**
-     * Compares versions.
-     * Characters other than [0-9.] are ignored.
-     */
-    public static class VersionComparator implements Comparator<String> {
-        /** l and r non-null */
-        public int compare(String l, String r) {
-            // try it the easy way first
-            if (l.equals(r))
-                return 0;
-            StringTokenizer lTokens = new StringTokenizer(sanitize(l), ".");
-            StringTokenizer rTokens = new StringTokenizer(sanitize(r), ".");
-
-            while (lTokens.hasMoreTokens() && rTokens.hasMoreTokens()) {
-                String lNumber = lTokens.nextToken();
-                String rNumber = rTokens.nextToken();
-                int diff = intCompare(lNumber, rNumber);
-                if (diff != 0)
-                    return diff;
-            }
-
-            if (lTokens.hasMoreTokens() && !rTokens.hasMoreTokens())
-                return 1;
-            if (rTokens.hasMoreTokens() && !lTokens.hasMoreTokens())
-                return -1;
-            return 0;
-        }
-
-        private static final int intCompare(String lop, String rop) {
-            int left, right;
-            try {
-                left = Integer.parseInt(lop);
-            } catch (NumberFormatException nfe) {
-                return -1;
-            }
-            try {
-                right = Integer.parseInt(rop);
-            } catch (NumberFormatException nfe) {
-                return 1;
-            }
-            return left - right;
-        }
-    }
-
     private static final void genKeysCLI(String publicKeyFile, String privateKeyFile) {
         FileOutputStream fileOutputStream = null;
 
@@ -263,19 +218,6 @@ D8usM7Dxp5yrDrCYZ5AIijc=
         }
     }
 
-    private static final String sanitize(String versionString) {
-        StringBuilder versionStringBuilder = new StringBuilder(versionString);
-
-        for (int i = 0; i < versionStringBuilder.length(); i++) {
-            if (VALID_VERSION_CHARS.indexOf(versionStringBuilder.charAt(i)) == -1) {
-                versionStringBuilder.deleteCharAt(i);
-                i--;
-            }
-        }
-
-        return versionStringBuilder.toString();
-    }
-
     private static final void showUsageCLI() {
         System.err.println("Usage: TrustedUpdate keygen       publicKeyFile privateKeyFile");
         System.err.println("       TrustedUpdate showversion  signedFile");
diff --git a/core/java/src/net/i2p/util/VersionComparator.java b/core/java/src/net/i2p/util/VersionComparator.java
new file mode 100644
index 0000000000..3b643442ef
--- /dev/null
+++ b/core/java/src/net/i2p/util/VersionComparator.java
@@ -0,0 +1,66 @@
+package net.i2p.util;
+
+import java.util.Comparator;
+import java.util.StringTokenizer;
+
+/**
+ * Compares versions.
+ * Characters other than [0-9.] are ignored.
+ * Moved from TrustedUpdate.java
+ * @since 0.7.10
+ */
+public class VersionComparator implements Comparator<String> {
+    /** l and r non-null */
+    public int compare(String l, String r) {
+        // try it the easy way first
+        if (l.equals(r))
+            return 0;
+        StringTokenizer lTokens = new StringTokenizer(sanitize(l), ".");
+        StringTokenizer rTokens = new StringTokenizer(sanitize(r), ".");
+
+        while (lTokens.hasMoreTokens() && rTokens.hasMoreTokens()) {
+            String lNumber = lTokens.nextToken();
+            String rNumber = rTokens.nextToken();
+            int diff = intCompare(lNumber, rNumber);
+            if (diff != 0)
+                return diff;
+        }
+
+        if (lTokens.hasMoreTokens() && !rTokens.hasMoreTokens())
+            return 1;
+        if (rTokens.hasMoreTokens() && !lTokens.hasMoreTokens())
+            return -1;
+        return 0;
+    }
+
+    private static final int intCompare(String lop, String rop) {
+        int left, right;
+        try {
+            left = Integer.parseInt(lop);
+        } catch (NumberFormatException nfe) {
+            return -1;
+        }
+        try {
+            right = Integer.parseInt(rop);
+        } catch (NumberFormatException nfe) {
+            return 1;
+        }
+        return left - right;
+    }
+
+    private static final String VALID_VERSION_CHARS = "0123456789.";
+
+    private static final String sanitize(String versionString) {
+        StringBuilder versionStringBuilder = new StringBuilder(versionString);
+
+        for (int i = 0; i < versionStringBuilder.length(); i++) {
+            if (VALID_VERSION_CHARS.indexOf(versionStringBuilder.charAt(i)) == -1) {
+                versionStringBuilder.deleteCharAt(i);
+                i--;
+            }
+        }
+
+        return versionStringBuilder.toString();
+    }
+}
+
-- 
GitLab