]> gitweb.fperrin.net Git - Dictionary.git/blobdiff - src/com/hughes/android/dictionary/engine/NormalizeComparator.java
Fix multiword search with incomplete words.
[Dictionary.git] / src / com / hughes / android / dictionary / engine / NormalizeComparator.java
index 55186fd182e680a6351b3c1a13e9fe37ff63f4f2..c744334b150ea5073aa9081e71915a40de606656 100644 (file)
@@ -20,9 +20,9 @@ import java.util.Comparator;
 
 public class NormalizeComparator implements Comparator<String> {
 
-    final Transliterator normalizer;
-    final Comparator<Object> comparator;
-    int version;
+    private final Transliterator normalizer;
+    private final Comparator<Object> comparator;
+    private final int version;
 
     public NormalizeComparator(final Transliterator normalizer,
                                final Comparator<Object> comparator, int version) {
@@ -31,19 +31,23 @@ public class NormalizeComparator implements Comparator<String> {
         this.version = version;
     }
 
+    public static String withoutDash(final String a) {
+        return a.replace("-", "").replace("þ", "th").replace("Þ", "Th");
+    }
+
     // 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) {
+    public static int compareWithoutDash(final String a, final String b, final Comparator<Object> c, int version) {
         if (version < 7) return 0;
-        String s1 = a.replace("-", "").replace("þ", "th").replace("Þ", "Th");
-        String s2 = b.replace("-", "").replace("þ", "th").replace("Þ", "Th");
+        String s1 = withoutDash(a);
+        String s2 = withoutDash(b);
         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);
+        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;