Loading java/src/com/android/inputmethod/latin/makedict/BinaryDictReader.java +27 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading tests/src/com/android/inputmethod/latin/makedict/BinaryDictReaderTests.java +16 −2 Original line number Diff line number Diff line Loading @@ -18,8 +18,12 @@ package com.android.inputmethod.latin.makedict; import com.android.inputmethod.latin.makedict.BinaryDictInputOutput.FusionDictionaryBufferInterface; import com.android.inputmethod.latin.makedict.BinaryDictReader.FusionDictionaryBufferFactory; import com.android.inputmethod.latin.makedict.BinaryDictReader.FusionDictionaryBufferFromByteArrayFactory; import com.android.inputmethod.latin.makedict.BinaryDictReader.FusionDictionaryBufferFromByteBufferFactory; import com.android.inputmethod.latin.makedict.BinaryDictReader. FusionDictionaryBufferFromByteArrayFactory; import com.android.inputmethod.latin.makedict.BinaryDictReader. FusionDictionaryBufferFromByteBufferFactory; import com.android.inputmethod.latin.makedict.BinaryDictReader. FusionDictionaryBufferFromWritableByteBufferFactory; import android.test.AndroidTestCase; import android.util.Log; Loading Loading @@ -94,6 +98,11 @@ public class BinaryDictReaderTests extends AndroidTestCase { new FusionDictionaryBufferFromByteArrayFactory()); } public void testOpenBufferWithWritableByteBuffer() { runTestOpenBuffer("testOpenBufferWithWritableByteBuffer", new FusionDictionaryBufferFromWritableByteBufferFactory()); } @SuppressWarnings("null") public void runTestGetBuffer(final String testName, final FusionDictionaryBufferFactory factory) { Loading Loading @@ -135,4 +144,9 @@ public class BinaryDictReaderTests extends AndroidTestCase { runTestGetBuffer("testGetBufferWithByteArray", new FusionDictionaryBufferFromByteArrayFactory()); } public void testGetBufferWithWritableByteBuffer() { runTestGetBuffer("testGetBufferWithWritableByteBuffer", new FusionDictionaryBufferFromWritableByteBufferFactory()); } } Loading
java/src/com/android/inputmethod/latin/makedict/BinaryDictReader.java +27 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading
tests/src/com/android/inputmethod/latin/makedict/BinaryDictReaderTests.java +16 −2 Original line number Diff line number Diff line Loading @@ -18,8 +18,12 @@ package com.android.inputmethod.latin.makedict; import com.android.inputmethod.latin.makedict.BinaryDictInputOutput.FusionDictionaryBufferInterface; import com.android.inputmethod.latin.makedict.BinaryDictReader.FusionDictionaryBufferFactory; import com.android.inputmethod.latin.makedict.BinaryDictReader.FusionDictionaryBufferFromByteArrayFactory; import com.android.inputmethod.latin.makedict.BinaryDictReader.FusionDictionaryBufferFromByteBufferFactory; import com.android.inputmethod.latin.makedict.BinaryDictReader. FusionDictionaryBufferFromByteArrayFactory; import com.android.inputmethod.latin.makedict.BinaryDictReader. FusionDictionaryBufferFromByteBufferFactory; import com.android.inputmethod.latin.makedict.BinaryDictReader. FusionDictionaryBufferFromWritableByteBufferFactory; import android.test.AndroidTestCase; import android.util.Log; Loading Loading @@ -94,6 +98,11 @@ public class BinaryDictReaderTests extends AndroidTestCase { new FusionDictionaryBufferFromByteArrayFactory()); } public void testOpenBufferWithWritableByteBuffer() { runTestOpenBuffer("testOpenBufferWithWritableByteBuffer", new FusionDictionaryBufferFromWritableByteBufferFactory()); } @SuppressWarnings("null") public void runTestGetBuffer(final String testName, final FusionDictionaryBufferFactory factory) { Loading Loading @@ -135,4 +144,9 @@ public class BinaryDictReaderTests extends AndroidTestCase { runTestGetBuffer("testGetBufferWithByteArray", new FusionDictionaryBufferFromByteArrayFactory()); } public void testGetBufferWithWritableByteBuffer() { runTestGetBuffer("testGetBufferWithWritableByteBuffer", new FusionDictionaryBufferFromWritableByteBufferFactory()); } }