aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
authorKen Wakasa <kwakasa@google.com>2013-08-14 03:30:51 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2013-08-14 03:30:51 -0700
commit74537adb7dfa73e79a3b63f558e249fc25337902 (patch)
treead050bdfbfb4d70d04f5beb6ffd3bdfee3660ead /java/src
parent4d29ac2fb107ecb9766880f31b3d45fe9fc20834 (diff)
parentf795f2b7899fc62d8e96ac064265bf3d44b25704 (diff)
downloadlatinime-74537adb7dfa73e79a3b63f558e249fc25337902.tar.gz
latinime-74537adb7dfa73e79a3b63f558e249fc25337902.tar.xz
latinime-74537adb7dfa73e79a3b63f558e249fc25337902.zip
am f795f2b7: Merge "Add FusionDictionaryBufferFromWritableByteBufferFactory."
* commit 'f795f2b7899fc62d8e96ac064265bf3d44b25704': Add FusionDictionaryBufferFromWritableByteBufferFactory.
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/latin/makedict/BinaryDictReader.java27
1 files changed, 27 insertions, 0 deletions
diff --git a/java/src/com/android/inputmethod/latin/makedict/BinaryDictReader.java b/java/src/com/android/inputmethod/latin/makedict/BinaryDictReader.java
index 57a583228..a4a7ce458 100644
--- a/java/src/com/android/inputmethod/latin/makedict/BinaryDictReader.java
+++ b/java/src/com/android/inputmethod/latin/makedict/BinaryDictReader.java
@@ -24,6 +24,7 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
+import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
@@ -82,6 +83,32 @@ public class BinaryDictReader {
}
}
+ /**
+ * Creates FusionDictionaryBuffer from a RandomAccessFile.
+ */
+ @UsedForTesting
+ public static final class FusionDictionaryBufferFromWritableByteBufferFactory
+ implements FusionDictionaryBufferFactory {
+ @Override
+ public FusionDictionaryBufferInterface getFusionDictionaryBuffer(final File file)
+ throws FileNotFoundException, IOException {
+ RandomAccessFile raFile = null;
+ ByteBuffer buffer = null;
+ try {
+ raFile = new RandomAccessFile(file, "rw");
+ buffer = raFile.getChannel().map(FileChannel.MapMode.READ_WRITE, 0, file.length());
+ } finally {
+ if (raFile != null) {
+ raFile.close();
+ }
+ }
+ if (buffer != null) {
+ return new BinaryDictInputOutput.ByteBufferWrapper(buffer);
+ }
+ return null;
+ }
+ }
+
private final File mDictionaryBinaryFile;
private FusionDictionaryBufferInterface mFusionDictionaryBuffer;