]> gitweb.fperrin.net Git - Dictionary.git/commitdiff
Ensure toLowerCase is independent of locale.
authorReimar Döffinger <Reimar.Doeffinger@gmx.de>
Sun, 27 Dec 2020 20:14:50 +0000 (21:14 +0100)
committerReimar Döffinger <Reimar.Doeffinger@gmx.de>
Sun, 27 Dec 2020 20:14:50 +0000 (21:14 +0100)
Also some optimizations for DictionaryPC.

src/com/hughes/android/dictionary/engine/Index.java
src/com/hughes/android/dictionary/engine/NormalizeComparator.java

index 0c07472dabf207f82c1e206785d2a5471d67ce84..b9300ba0462c9846398229ad96c561f45343fe36 100644 (file)
 
 package com.hughes.android.dictionary.engine;
 
+import java.io.BufferedOutputStream;
 import java.io.DataInput;
 import java.io.DataOutput;
+import java.io.DataOutputStream;
+import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.PrintStream;
 import java.io.RandomAccessFile;
@@ -28,6 +31,7 @@ import java.util.EnumMap;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicBoolean;
@@ -166,7 +170,9 @@ public final class Index {
         for (String i : stoplist) {
             raf.writeUTF(i);
         }
-        UniformRAFList.write(raf, rows, new RowBase.Serializer(this), 3 /* bytes per entry */);
+        DataOutputStream outb = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(raf.getFD())));
+        UniformRAFList.write(outb, rows, new RowBase.Serializer(this), 3 /* bytes per entry */);
+        outb.flush();
     }
 
     public void print(final PrintStream out) {
@@ -195,14 +201,14 @@ public final class Index {
         public List<HtmlEntry> htmlEntries;
 
         public IndexEntry(final Index index, final String token, final String normalizedToken,
-                          final int startRow, final int numRows) {
+                          final int startRow, final int numRows, final List<HtmlEntry> htmlEntries) {
             assert token.equals(token.trim());
             assert token.length() > 0;
             this.token = token;
             this.normalizedToken = normalizedToken;
             this.startRow = startRow;
             this.numRows = numRows;
-            this.htmlEntries = new ArrayList<>();
+            this.htmlEntries = htmlEntries;
         }
 
         IndexEntry(final Index index, final DataInput raf) throws IOException {
@@ -564,7 +570,7 @@ public final class Index {
             return normalizer.transliterate(searchToken);
         } else {
             // Do our best since the Transliterators aren't up yet.
-            return searchToken.toLowerCase();
+            return searchToken.toLowerCase(Locale.US);
         }
     }
 
index fcd7fc27a95857d201a11790ac642be70fed797e..35b2f2453ce30ec2fb9b38a28b26da1b76642adf 100644 (file)
@@ -15,6 +15,7 @@
 package com.hughes.android.dictionary.engine;
 
 import java.util.Comparator;
+import java.util.Locale;
 
 import com.ibm.icu.text.Transliterator;
 
@@ -45,7 +46,7 @@ public class NormalizeComparator implements Comparator<String> {
     }
 
     public String normalize(String s) {
-        return normalizer == null ? s.toLowerCase() : normalizer.transform(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) {