1 // Copyright 2011 Google Inc. All Rights Reserved.
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
7 // http://www.apache.org/licenses/LICENSE-2.0
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
15 package com.hughes.android.dictionary.engine;
17 import com.ibm.icu.text.Transliterator;
19 import java.util.Comparator;
21 public class NormalizeComparator implements Comparator<String> {
23 final Transliterator normalizer;
24 final Comparator<Object> comparator;
27 public NormalizeComparator(final Transliterator normalizer,
28 final Comparator<Object> comparator, int version) {
29 this.normalizer = normalizer;
30 this.comparator = comparator;
31 this.version = version;
34 // Handles comparison between items starting with "-", returns 0 for all others.
35 public static int compareWithoutLeadingDash(final String a, final String b, final Comparator c, int version) {
36 if (version < 7) return 0;
37 if (a.startsWith("-") || b.startsWith("-"))
41 if (s1.startsWith("-")) s1 = s1.substring(1);
42 if (s2.startsWith("-")) s2 = s2.substring(1);
43 return c.compare(s1, s2);
49 public int compare(final String s1, final String s2) {
50 final String n1 = normalizer.transform(s1);
51 final String n2 = normalizer.transform(s2);
52 int cn = compareWithoutLeadingDash(n1, n2, comparator, version);
56 cn = comparator.compare(n1, n2);
60 return comparator.compare(s1, s2);