X-Git-Url: http://gitweb.fperrin.net/?a=blobdiff_plain;f=src%2Fcom%2Fhughes%2Fandroid%2Fdictionary%2Fengine%2FIndex.java;h=5b7b43d5aadd20a39a3de5e047b3ca348cdd7b83;hb=5f7b259669237dad4cbfdec8536537815846979b;hp=db44b41546569ee39e178511fdbf5f5bf92b4bea;hpb=35b7b7dc537441278934398a6b81009c1ec42bbf;p=Dictionary.git diff --git a/src/com/hughes/android/dictionary/engine/Index.java b/src/com/hughes/android/dictionary/engine/Index.java index db44b41..5b7b43d 100644 --- a/src/com/hughes/android/dictionary/engine/Index.java +++ b/src/com/hughes/android/dictionary/engine/Index.java @@ -41,13 +41,11 @@ import com.hughes.util.DataInputBuffer; import com.hughes.util.StringUtil; import com.hughes.util.TransformingList; import com.hughes.util.raf.RAFList; -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 com.ibm.icu.text.Transliterator; -public final class Index implements RAFSerializable { +public final class Index { private static final int CACHE_SIZE = 5000; @@ -138,7 +136,14 @@ public final class Index implements RAFSerializable { stoplist.add(raf.readUTF()); } } else if (dict.dictFileVersion >= 4) { - stoplist = new SerializableSerializer>().read(raf); + raf.readInt(); // length + raf.skipBytes(52); + stoplist = new HashSet<>(); + byte b; + while ((b = raf.readByte()) == 0x74) { + stoplist.add(raf.readUTF()); + } + if (b != 0x78) throw new IOException("Invalid data in dictionary stoplist!"); } else { stoplist = Collections.emptySet(); } @@ -147,7 +152,6 @@ public final class Index implements RAFSerializable { CACHE_SIZE, true); } - @Override public void write(final DataOutput out) throws IOException { RandomAccessFile raf = (RandomAccessFile)out; raf.writeUTF(shortName); @@ -182,7 +186,7 @@ public final class Index implements RAFSerializable { } } - public static final class IndexEntry implements RAFSerializable { + public static final class IndexEntry { public final String token; private final String normalizedToken; public final int startRow; @@ -225,6 +229,7 @@ public final class Index implements RAFSerializable { public HtmlEntry get(int i) { return index.dict.htmlEntries.get(htmlEntryIndices[i]); } + @Override public int size() { return htmlEntryIndices.length; @@ -367,7 +372,7 @@ public final class Index implements RAFSerializable { return result; } - private final int windBackCase(final String token, int result, final AtomicBoolean interrupted) { + private int windBackCase(final String token, int result, final AtomicBoolean interrupted) { while (result > 0 && sortedIndexEntries.get(result - 1).normalizedToken().equals(token)) { --result; if (interrupted.get()) { @@ -385,8 +390,8 @@ public final class Index implements RAFSerializable { private final Map prefixToNumRows = new HashMap<>(); - private synchronized final int getUpperBoundOnRowsStartingWith(final String normalizedPrefix, - final int maxRows, final AtomicBoolean interrupted) { + private synchronized int getUpperBoundOnRowsStartingWith(final String normalizedPrefix, + final int maxRows, final AtomicBoolean interrupted) { final Integer numRows = prefixToNumRows.get(normalizedPrefix); if (numRows != null) { return numRows; @@ -525,7 +530,7 @@ public final class Index implements RAFSerializable { swapPairEntries); for (final Collection rows : matches.values()) { final List ordered = new ArrayList<>(rows); - Collections.sort(ordered, lengthComparator); + ordered.sort(lengthComparator); result.addAll(ordered); }