X-Git-Url: http://gitweb.fperrin.net/?a=blobdiff_plain;f=src%2Fcom%2Fhughes%2Fandroid%2Fdictionary%2Fengine%2FNormalizeComparator.java;h=35b2f2453ce30ec2fb9b38a28b26da1b76642adf;hb=f8e4d0f62dc4f4fe3577c5bb03e3d8fa8a956e5b;hp=efe05d1f58e0bd2cba2171ff7d47db90c9ca5cd7;hpb=83d9dc7cd871082a82c2dd0dbb7a0ceabd7c83a0;p=Dictionary.git diff --git a/src/com/hughes/android/dictionary/engine/NormalizeComparator.java b/src/com/hughes/android/dictionary/engine/NormalizeComparator.java index efe05d1..35b2f24 100644 --- a/src/com/hughes/android/dictionary/engine/NormalizeComparator.java +++ b/src/com/hughes/android/dictionary/engine/NormalizeComparator.java @@ -14,9 +14,10 @@ package com.hughes.android.dictionary.engine; -import com.ibm.icu.text.Transliterator; - import java.util.Comparator; +import java.util.Locale; + +import com.ibm.icu.text.Transliterator; public class NormalizeComparator implements Comparator { @@ -31,19 +32,24 @@ public class NormalizeComparator implements Comparator { 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) { 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 == null ? s1.toLowerCase() : normalizer.transform(s1); - final String n2 = normalizer == null ? s2.toLowerCase() : normalizer.transform(s2); + public String normalize(String s) { + return normalizer == null ? s.toLowerCase(Locale.US) : normalizer.transform(s); + } + + public int compareNormalized(final String s1, final String s2, final String n1, final String n2) { int cn = compareWithoutDash(n1, n2, comparator, version); if (cn != 0) { return cn; @@ -55,4 +61,11 @@ public class NormalizeComparator implements Comparator { return comparator.compare(s1, s2); } + @Override + public int compare(final String s1, final String s2) { + final String n1 = normalize(s1); + final String n2 = normalize(s2); + return compareNormalized(s1, s2, n1, n2); + } + }