Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f795f2b7 authored by Ken Wakasa's avatar Ken Wakasa Committed by Android (Google) Code Review
Browse files

Merge "Add FusionDictionaryBufferFromWritableByteBufferFactory."

parents 0766f133 bbc8a930
Loading
Loading
Loading
Loading
+27 −0
Original line number Diff line number Diff line
@@ -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;

+16 −2
Original line number Diff line number Diff line
@@ -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;
@@ -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) {
@@ -135,4 +144,9 @@ public class BinaryDictReaderTests extends AndroidTestCase {
        runTestGetBuffer("testGetBufferWithByteArray",
                new FusionDictionaryBufferFromByteArrayFactory());
    }

    public void testGetBufferWithWritableByteBuffer() {
        runTestGetBuffer("testGetBufferWithWritableByteBuffer",
                new FusionDictionaryBufferFromWritableByteBufferFactory());
    }
}