]> gitweb.fperrin.net Git - Dictionary.git/blobdiff - src/com/hughes/android/dictionary/engine/NormalizeComparator.java
NormalizeComparator: improve type, support null normalizer.
[Dictionary.git] / src / com / hughes / android / dictionary / engine / NormalizeComparator.java
index 82f0feac6af99b3c61e4c98ac8958db99d212436..7803bf0413d3508486099ec20268f41f7131addc 100644 (file)
@@ -21,35 +21,30 @@ import java.util.Comparator;
 public class NormalizeComparator implements Comparator<String> {
 
     final Transliterator normalizer;
-    final Comparator<Object> comparator;
+    final Comparator<String> comparator;
     int version;
 
     public NormalizeComparator(final Transliterator normalizer,
-            final Comparator<Object> comparator, int version) {
+                               final Comparator<String> comparator, int version) {
         this.normalizer = normalizer;
         this.comparator = comparator;
-       this.version = version;
+        this.version = version;
     }
 
-    // Handles comparison between items starting with "-", returns 0 for all others.
-    public static int compareWithoutLeadingDash(final String a, final String b, final Comparator c, int version) {
+    // Handles comparison between items containing "-".
+    // Also replaces other problematic cases like "thorn".
+    public static int compareWithoutDash(final String a, final String b, final Comparator c, int version) {
         if (version < 7) return 0;
-        if (a.startsWith("-") || b.startsWith("-"))
-        {
-            String s1 = a;
-            String s2 = b;
-            if (s1.startsWith("-")) s1 = s1.substring(1);
-            if (s2.startsWith("-")) s2 = s2.substring(1);
-            return c.compare(s1, s2);
-        }
-        return 0;
+        String s1 = a.replace("-", "").replace("þ", "th").replace("Þ", "Th");
+        String s2 = b.replace("-", "").replace("þ", "th").replace("Þ", "Th");
+        return c.compare(s1, s2);
     }
 
     @Override
     public int compare(final String s1, final String s2) {
-        final String n1 = normalizer.transform(s1);
-        final String n2 = normalizer.transform(s2);
-        int cn = compareWithoutLeadingDash(n1, n2, comparator, version);
+        final String n1 = normalizer == null ? s1.toLowerCase() : normalizer.transform(s1);
+        final String n2 = normalizer == null ? s2.toLowerCase() : normalizer.transform(s2);
+        int cn = compareWithoutDash(n1, n2, comparator, version);
         if (cn != 0) {
             return cn;
         }