From: Reimar Döffinger Date: Sun, 27 Dec 2020 20:14:50 +0000 (+0100) Subject: Ensure toLowerCase is independent of locale. X-Git-Url: http://gitweb.fperrin.net/?p=Dictionary.git;a=commitdiff_plain;h=f8e4d0f62dc4f4fe3577c5bb03e3d8fa8a956e5b Ensure toLowerCase is independent of locale. Also some optimizations for DictionaryPC. --- diff --git a/src/com/hughes/android/dictionary/engine/Index.java b/src/com/hughes/android/dictionary/engine/Index.java index 0c07472..b9300ba 100644 --- a/src/com/hughes/android/dictionary/engine/Index.java +++ b/src/com/hughes/android/dictionary/engine/Index.java @@ -14,8 +14,11 @@ 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 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 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); } } diff --git a/src/com/hughes/android/dictionary/engine/NormalizeComparator.java b/src/com/hughes/android/dictionary/engine/NormalizeComparator.java index fcd7fc2..35b2f24 100644 --- a/src/com/hughes/android/dictionary/engine/NormalizeComparator.java +++ b/src/com/hughes/android/dictionary/engine/NormalizeComparator.java @@ -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 { } 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) {