]> gitweb.fperrin.net Git - Dictionary.git/commitdiff
Add CollatorWrapper to allow using different implementation.
authorReimar Döffinger <Reimar.Doeffinger@gmx.de>
Sat, 5 Aug 2017 18:30:58 +0000 (20:30 +0200)
committerReimar Döffinger <Reimar.Doeffinger@gmx.de>
Sat, 5 Aug 2017 18:30:58 +0000 (20:30 +0200)
PC should use the ICU version explicitly, whereas
on Android java.text.Collator is based on ICU anyway
so we do not need to waste space including ICU.

src/com/hughes/android/dictionary/CollatorWrapper.java [new file with mode: 0644]
src/com/hughes/android/dictionary/DictionaryApplication.java
src/com/hughes/android/dictionary/engine/Index.java
src/com/hughes/android/dictionary/engine/Language.java

diff --git a/src/com/hughes/android/dictionary/CollatorWrapper.java b/src/com/hughes/android/dictionary/CollatorWrapper.java
new file mode 100644 (file)
index 0000000..2aaf238
--- /dev/null
@@ -0,0 +1,30 @@
+// Copyright 2017 Reimar Döffinger
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.hughes.android.dictionary;
+
+import java.util.Locale;
+
+import java.text.Collator;
+
+final public class CollatorWrapper {
+static public Collator getInstance() {
+    return Collator.getInstance();
+}
+static public Collator getInstanceStrengthIdentical(Locale l) {
+    Collator c = Collator.getInstance(l);
+    c.setStrength(Collator.IDENTICAL);
+    return c;
+}
+}
index 27dfef87063098febe1157538a27dce404855c5b..39d3486c86e231233da324b91726465c43cd3259 100644 (file)
@@ -36,6 +36,7 @@ import android.widget.ImageView.ScaleType;
 import android.widget.LinearLayout;
 import android.widget.Toast;
 
+import com.hughes.android.dictionary.CollatorWrapper;
 import com.hughes.android.dictionary.DictionaryInfo.IndexInfo;
 import com.hughes.android.dictionary.engine.Dictionary;
 import com.hughes.android.dictionary.engine.Language;
@@ -43,7 +44,6 @@ import com.hughes.android.dictionary.engine.Language.LanguageResources;
 import com.hughes.android.dictionary.engine.TransliteratorManager;
 import com.hughes.android.util.PersistentObjectCache;
 import com.hughes.util.ListUtil;
-import java.text.Collator;
 
 import java.io.BufferedReader;
 import java.io.File;
@@ -405,7 +405,7 @@ public enum DictionaryApplication {
         PersistentObjectCache.getInstance().write(C.DICTIONARY_CONFIGS, dictionaryConfig);
     }
 
-    final Comparator collator = USE_COLLATOR ? Collator.getInstance() : String.CASE_INSENSITIVE_ORDER;
+    final Comparator collator = USE_COLLATOR ? CollatorWrapper.getInstance() : String.CASE_INSENSITIVE_ORDER;
     final Comparator<String> uncompressedFilenameComparator = new Comparator<String>() {
         @Override
         public int compare(String uncompressedFilename1, String uncompressedFilename2) {
index 9ac805a3872c96ca66187062c356817e281a2270..04691ff0c5ede6e8289c16949cec69b2bc54d1d4 100644 (file)
@@ -29,7 +29,6 @@ import com.hughes.util.raf.RAFSerializable;
 import com.hughes.util.raf.RAFSerializer;
 import com.hughes.util.raf.SerializableSerializer;
 import com.hughes.util.raf.UniformRAFList;
-import java.text.Collator;
 import com.ibm.icu.text.Transliterator;
 
 import java.io.DataInput;
index e955fb5eeb1a4e661121e06478291fa40426cea2..4091ded1fbb1db7978a2e64b7f27b0a2e2a470d2 100644 (file)
@@ -14,8 +14,8 @@
 
 package com.hughes.android.dictionary.engine;
 
+import com.hughes.android.dictionary.CollatorWrapper;
 import com.hughes.android.dictionary.DictionaryApplication;
-import java.text.Collator;
 
 import java.util.Comparator;
 import java.util.HashMap;
@@ -46,7 +46,7 @@ public class Language {
     final String isoCode;
     final Locale locale;
 
-    private Collator collator;
+    private Comparator collator;
 
     private Language(final Locale locale, final String isoCode) {
         this.locale = locale;
@@ -69,8 +69,7 @@ public class Language {
             return String.CASE_INSENSITIVE_ORDER;
         // Don't think this is thread-safe...
         // if (collator == null) {
-        this.collator = Collator.getInstance(locale);
-        this.collator.setStrength(Collator.IDENTICAL);
+        this.collator = CollatorWrapper.getInstanceStrengthIdentical(locale);
         // }
         return collator;
     }