aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/makedict/BinaryDictReader.java
diff options
context:
space:
mode:
authorKen Wakasa <kwakasa@google.com>2013-08-18 19:36:15 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2013-08-18 19:36:15 -0700
commit41aade7977ee7313df8aa25e34c026dc034c8673 (patch)
tree2cc24ab73a85d289d6ac841093c3efecb80ee84b /java/src/com/android/inputmethod/latin/makedict/BinaryDictReader.java
parent376457477f4118e2e8e4c5bb2df9679f6ab0b899 (diff)
parenta83e25642f1eae1412d85ce72f27601edd0ac10d (diff)
downloadlatinime-41aade7977ee7313df8aa25e34c026dc034c8673.tar.gz
latinime-41aade7977ee7313df8aa25e34c026dc034c8673.tar.xz
latinime-41aade7977ee7313df8aa25e34c026dc034c8673.zip
am a83e2564: Merge "Add HeaderReaderInterface."
* commit 'a83e25642f1eae1412d85ce72f27601edd0ac10d': Add HeaderReaderInterface.
Diffstat (limited to 'java/src/com/android/inputmethod/latin/makedict/BinaryDictReader.java')
-rw-r--r--java/src/com/android/inputmethod/latin/makedict/BinaryDictReader.java35
1 files changed, 34 insertions, 1 deletions
diff --git a/java/src/com/android/inputmethod/latin/makedict/BinaryDictReader.java b/java/src/com/android/inputmethod/latin/makedict/BinaryDictReader.java
index f2f3c465d..6d3b31a28 100644
--- a/java/src/com/android/inputmethod/latin/makedict/BinaryDictReader.java
+++ b/java/src/com/android/inputmethod/latin/makedict/BinaryDictReader.java
@@ -17,7 +17,9 @@
package com.android.inputmethod.latin.makedict;
import com.android.inputmethod.annotations.UsedForTesting;
+import com.android.inputmethod.latin.makedict.BinaryDictDecoder.CharEncoding;
import com.android.inputmethod.latin.makedict.BinaryDictDecoder.FusionDictionaryBufferInterface;
+import com.android.inputmethod.latin.makedict.decoder.HeaderReaderInterface;
import com.android.inputmethod.latin.utils.ByteArrayWrapper;
import java.io.File;
@@ -27,8 +29,9 @@ import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
+import java.util.HashMap;
-public class BinaryDictReader {
+public class BinaryDictReader implements HeaderReaderInterface {
public interface FusionDictionaryBufferFactory {
public FusionDictionaryBufferInterface getFusionDictionaryBuffer(final File file)
@@ -133,4 +136,34 @@ public class BinaryDictReader {
openBuffer(factory);
return getBuffer();
}
+
+ // The implementation of HeaderReaderInterface
+ @Override
+ public int readVersion() throws IOException, UnsupportedFormatException {
+ return BinaryDictDecoder.checkFormatVersion(mFusionDictionaryBuffer);
+ }
+
+ @Override
+ public int readOptionFlags() {
+ return mFusionDictionaryBuffer.readUnsignedShort();
+ }
+
+ @Override
+ public int readHeaderSize() {
+ return mFusionDictionaryBuffer.readInt();
+ }
+
+ @Override
+ public HashMap<String, String> readAttributes(final int headerSize) {
+ final HashMap<String, String> attributes = new HashMap<String, String>();
+ while (mFusionDictionaryBuffer.position() < headerSize) {
+ // We can avoid infinite loop here since mFusionDictonary.position() is always increased
+ // by calling CharEncoding.readString.
+ final String key = CharEncoding.readString(mFusionDictionaryBuffer);
+ final String value = CharEncoding.readString(mFusionDictionaryBuffer);
+ attributes.put(key, value);
+ }
+ mFusionDictionaryBuffer.position(headerSize);
+ return attributes;
+ }
}