From 507a6c6f058d33536972b7980dbb99034ec4d61f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Reimar=20D=C3=B6ffinger?= Date: Sun, 6 Dec 2015 19:22:59 +0100 Subject: [PATCH] Switch from RandomAccessFile to DataInput/DataOutput. Should make it easier to add transparent compression support. --- .../dictionary/engine/AbstractEntry.java | 7 ++++--- .../android/dictionary/engine/Dictionary.java | 13 ++++++++----- .../android/dictionary/engine/EntrySource.java | 7 ++++--- .../android/dictionary/engine/HtmlEntry.java | 16 +++++++++------- .../android/dictionary/engine/Index.java | 18 ++++++++++++------ .../android/dictionary/engine/PairEntry.java | 13 +++++++------ .../android/dictionary/engine/RowBase.java | 9 +++++---- .../android/dictionary/engine/TextEntry.java | 13 +++++++------ .../android/dictionary/engine/TokenRow.java | 4 ++-- 9 files changed, 58 insertions(+), 42 deletions(-) diff --git a/src/com/hughes/android/dictionary/engine/AbstractEntry.java b/src/com/hughes/android/dictionary/engine/AbstractEntry.java index 931f9a1..2db0a3e 100644 --- a/src/com/hughes/android/dictionary/engine/AbstractEntry.java +++ b/src/com/hughes/android/dictionary/engine/AbstractEntry.java @@ -16,8 +16,9 @@ package com.hughes.android.dictionary.engine; import com.hughes.util.IndexedObject; +import java.io.DataInput; +import java.io.DataOutput; import java.io.IOException; -import java.io.RandomAccessFile; public abstract class AbstractEntry extends IndexedObject { @@ -28,7 +29,7 @@ public abstract class AbstractEntry extends IndexedObject { this.entrySource = entrySource; } - public AbstractEntry(Dictionary dictionary, RandomAccessFile raf, final int index) + public AbstractEntry(Dictionary dictionary, DataInput raf, final int index) throws IOException { super(index); if (dictionary.dictFileVersion >= 1) { @@ -39,7 +40,7 @@ public abstract class AbstractEntry extends IndexedObject { } } - public void write(RandomAccessFile raf) throws IOException { + public void write(DataOutput raf) throws IOException { raf.writeShort(entrySource.index()); } diff --git a/src/com/hughes/android/dictionary/engine/Dictionary.java b/src/com/hughes/android/dictionary/engine/Dictionary.java index 309ee60..2cc05b4 100644 --- a/src/com/hughes/android/dictionary/engine/Dictionary.java +++ b/src/com/hughes/android/dictionary/engine/Dictionary.java @@ -20,6 +20,8 @@ import com.hughes.util.raf.RAFList; import com.hughes.util.raf.RAFListSerializer; import com.hughes.util.raf.RAFSerializable; +import java.io.DataInput; +import java.io.DataOutput; import java.io.File; import java.io.IOException; import java.io.PrintStream; @@ -104,7 +106,8 @@ public class Dictionary implements RAFSerializable { } @Override - public void write(RandomAccessFile raf) throws IOException { + public void write(DataOutput out) throws IOException { + RandomAccessFile raf = (RandomAccessFile)out; raf.writeInt(dictFileVersion); raf.writeLong(creationMillis); raf.writeUTF(dictInfo); @@ -118,26 +121,26 @@ public class Dictionary implements RAFSerializable { private final RAFListSerializer indexSerializer = new RAFListSerializer() { @Override - public Index read(RandomAccessFile raf, final int readIndex) throws IOException { + public Index read(DataInput raf, final int readIndex) throws IOException { return new Index(Dictionary.this, raf); } @Override - public void write(RandomAccessFile raf, Index t) throws IOException { + public void write(DataOutput raf, Index t) throws IOException { t.write(raf); } }; final RAFListSerializer htmlEntryIndexSerializer = new RAFListSerializer() { @Override - public void write(RandomAccessFile raf, HtmlEntry t) throws IOException { + public void write(DataOutput raf, HtmlEntry t) throws IOException { if (t.index() == -1) throw new IndexOutOfBoundsException(); raf.writeInt(t.index()); } @Override - public HtmlEntry read(RandomAccessFile raf, int readIndex) throws IOException { + public HtmlEntry read(DataInput raf, int readIndex) throws IOException { return htmlEntries.get(raf.readInt()); } }; diff --git a/src/com/hughes/android/dictionary/engine/EntrySource.java b/src/com/hughes/android/dictionary/engine/EntrySource.java index 9ed16a1..c043587 100644 --- a/src/com/hughes/android/dictionary/engine/EntrySource.java +++ b/src/com/hughes/android/dictionary/engine/EntrySource.java @@ -17,8 +17,9 @@ package com.hughes.android.dictionary.engine; import com.hughes.util.IndexedObject; import com.hughes.util.raf.RAFListSerializer; +import java.io.DataInput; +import java.io.DataOutput; import java.io.IOException; -import java.io.RandomAccessFile; import java.io.Serializable; public class EntrySource extends IndexedObject implements Serializable { @@ -56,7 +57,7 @@ public class EntrySource extends IndexedObject implements Serializable { } @Override - public EntrySource read(RandomAccessFile raf, int readIndex) + public EntrySource read(DataInput raf, int readIndex) throws IOException { final String name = raf.readUTF(); final int numEntries = dictionary.dictFileVersion >= 3 ? raf.readInt() : 0; @@ -64,7 +65,7 @@ public class EntrySource extends IndexedObject implements Serializable { } @Override - public void write(RandomAccessFile raf, EntrySource t) throws IOException { + public void write(DataOutput raf, EntrySource t) throws IOException { raf.writeUTF(t.name); raf.writeInt(t.numEntries); } diff --git a/src/com/hughes/android/dictionary/engine/HtmlEntry.java b/src/com/hughes/android/dictionary/engine/HtmlEntry.java index ae1f9f8..e37d19c 100644 --- a/src/com/hughes/android/dictionary/engine/HtmlEntry.java +++ b/src/com/hughes/android/dictionary/engine/HtmlEntry.java @@ -6,6 +6,8 @@ import com.hughes.util.raf.RAFListSerializer; import com.hughes.util.raf.RAFSerializable; import com.ibm.icu.text.Transliterator; +import java.io.DataInput; +import java.io.DataOutput; import java.io.IOException; import java.io.PrintStream; import java.io.RandomAccessFile; @@ -27,7 +29,7 @@ public class HtmlEntry extends AbstractEntry implements RAFSerializable htmlRef = new SoftReference(null); - private LazyHtmlLoader(final RandomAccessFile raf) throws IOException { - this.raf = raf; + private LazyHtmlLoader(final DataInput inp) throws IOException { + raf = (RandomAccessFile)inp; numBytes = raf.readInt(); numZipBytes = raf.readInt(); offset = raf.getFilePointer(); diff --git a/src/com/hughes/android/dictionary/engine/Index.java b/src/com/hughes/android/dictionary/engine/Index.java index f4666cc..ce69477 100644 --- a/src/com/hughes/android/dictionary/engine/Index.java +++ b/src/com/hughes/android/dictionary/engine/Index.java @@ -31,6 +31,8 @@ import com.hughes.util.raf.UniformRAFList; import com.ibm.icu.text.Collator; import com.ibm.icu.text.Transliterator; +import java.io.DataInput; +import java.io.DataOutput; import java.io.IOException; import java.io.PrintStream; import java.io.RandomAccessFile; @@ -115,8 +117,9 @@ public final class Index implements RAFSerializable { return new NormalizeComparator(normalizer(), sortLanguage.getCollator()); } - public Index(final Dictionary dict, final RandomAccessFile raf) throws IOException { + public Index(final Dictionary dict, final DataInput inp) throws IOException { this.dict = dict; + RandomAccessFile raf = (RandomAccessFile)inp; shortName = raf.readUTF(); longName = raf.readUTF(); final String languageCode = raf.readUTF(); @@ -142,7 +145,8 @@ public final class Index implements RAFSerializable { } @Override - public void write(final RandomAccessFile raf) throws IOException { + public void write(final DataOutput out) throws IOException { + RandomAccessFile raf = (RandomAccessFile)out; raf.writeUTF(shortName); raf.writeUTF(longName); raf.writeUTF(sortLanguage.getIsoCode()); @@ -168,12 +172,12 @@ public final class Index implements RAFSerializable { private final RAFSerializer indexEntrySerializer = new RAFSerializer() { @Override - public IndexEntry read(RandomAccessFile raf) throws IOException { + public IndexEntry read(DataInput raf) throws IOException { return new IndexEntry(Index.this, raf); } @Override - public void write(RandomAccessFile raf, IndexEntry t) throws IOException { + public void write(DataOutput raf, IndexEntry t) throws IOException { t.write(raf); } }; @@ -198,8 +202,9 @@ public final class Index implements RAFSerializable { this.htmlEntries = new ArrayList(); } - public IndexEntry(final Index index, final RandomAccessFile raf) throws IOException { + public IndexEntry(final Index index, final DataInput inp) throws IOException { this.index = index; + RandomAccessFile raf = (RandomAccessFile)inp; token = raf.readUTF(); startRow = raf.readInt(); numRows = raf.readInt(); @@ -214,7 +219,8 @@ public final class Index implements RAFSerializable { } } - public void write(RandomAccessFile raf) throws IOException { + public void write(DataOutput out) throws IOException { + RandomAccessFile raf = (RandomAccessFile)out; raf.writeUTF(token); raf.writeInt(startRow); raf.writeInt(numRows); diff --git a/src/com/hughes/android/dictionary/engine/PairEntry.java b/src/com/hughes/android/dictionary/engine/PairEntry.java index 6e95d32..00f690a 100644 --- a/src/com/hughes/android/dictionary/engine/PairEntry.java +++ b/src/com/hughes/android/dictionary/engine/PairEntry.java @@ -18,9 +18,10 @@ import com.hughes.util.raf.RAFListSerializer; import com.hughes.util.raf.RAFSerializable; import com.ibm.icu.text.Transliterator; +import java.io.DataInput; +import java.io.DataOutput; import java.io.IOException; import java.io.PrintStream; -import java.io.RandomAccessFile; import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; @@ -40,7 +41,7 @@ public class PairEntry extends AbstractEntry implements RAFSerializable