aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/makedict/BinaryDictReader.java
diff options
context:
space:
mode:
authorKen Wakasa <kwakasa@google.com>2013-08-19 02:34:23 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-08-19 02:34:23 +0000
commita83e25642f1eae1412d85ce72f27601edd0ac10d (patch)
tree32d13d5b45981feb2206f0051d11df82ca08c657 /java/src/com/android/inputmethod/latin/makedict/BinaryDictReader.java
parent8aaae56cf6694ec75043be56f1c7812a343b24d5 (diff)
parentd794b42f983a4f9563ef0334ed0b8f9cb44e084d (diff)
downloadlatinime-a83e25642f1eae1412d85ce72f27601edd0ac10d.tar.gz
latinime-a83e25642f1eae1412d85ce72f27601edd0ac10d.tar.xz
latinime-a83e25642f1eae1412d85ce72f27601edd0ac10d.zip
Merge "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;
+ }
}