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) {
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;