aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
authorYuichiro Hanada <yhanada@google.com>2013-08-14 12:26:06 +0900
committerYuichiro Hanada <yhanada@google.com>2013-08-14 17:07:44 +0900
commitbbc8a930f706d16e45dce2376ea388a0fd74bb7a (patch)
treeb92ce732e1a96e2eebdff201de09dfa54582e6c5 /java/src
parentae59ce026213cd9c92f8202ccb2a337e6495119d (diff)
downloadlatinime-bbc8a930f706d16e45dce2376ea388a0fd74bb7a.tar.gz
latinime-bbc8a930f706d16e45dce2376ea388a0fd74bb7a.tar.xz
latinime-bbc8a930f706d16e45dce2376ea388a0fd74bb7a.zip
Add FusionDictionaryBufferFromWritableByteBufferFactory.
Change-Id: I23de0a178e7f11f2cf301fd433cde60c6152055b
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;