LatinIME/tests/src/com/android/inputmethod/latin/makedict/AbstractDictDecoder.java

105 lines
3.0 KiB
Java

/*
* Copyright (C) 2013 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.inputmethod.latin.makedict;
import com.android.inputmethod.annotations.UsedForTesting;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.TreeMap;
/**
* A base class of the binary dictionary decoder.
*/
public abstract class AbstractDictDecoder implements DictDecoder {
private static final int SUCCESS = 0;
private static final int ERROR_CANNOT_READ = 1;
private static final int ERROR_WRONG_FORMAT = 2;
@Override @UsedForTesting
public int getTerminalPosition(final String word)
throws IOException, UnsupportedFormatException {
if (!isDictBufferOpen()) {
openDictBuffer();
}
return BinaryDictIOUtils.getTerminalPosition(this, word);
}
@Override @UsedForTesting
public void readUnigramsAndBigramsBinary(final TreeMap<Integer, String> words,
final TreeMap<Integer, Integer> frequencies,
final TreeMap<Integer, ArrayList<PendingAttribute>> bigrams)
throws IOException, UnsupportedFormatException {
if (!isDictBufferOpen()) {
openDictBuffer();
}
BinaryDictIOUtils.readUnigramsAndBigramsBinary(this, words, frequencies, bigrams);
}
/**
* Check whether the header contains the expected information. This is a no-error method,
* that will return an error code and never throw a checked exception.
* @return an error code, either ERROR_* or SUCCESS.
*/
private int checkHeader() {
try {
readHeader();
} catch (IOException e) {
return ERROR_CANNOT_READ;
} catch (UnsupportedFormatException e) {
return ERROR_WRONG_FORMAT;
}
return SUCCESS;
}
@Override
public boolean hasValidRawBinaryDictionary() {
return checkHeader() == SUCCESS;
}
// Placeholder implementations below. These are actually unused.
@Override
public void openDictBuffer() throws FileNotFoundException, IOException,
UnsupportedFormatException {
}
@Override
public boolean isDictBufferOpen() {
return false;
}
@Override
public PtNodeInfo readPtNode(final int ptNodePos) {
return null;
}
@Override
public void setPosition(int newPos) {
}
@Override
public int getPosition() {
return 0;
}
@Override
public int readPtNodeCount() {
return 0;
}
}