Merge "Remove unused argument from readDictionaryBinary."
commit
85fe06e759
|
@ -500,16 +500,14 @@ public final class BinaryDictDecoderUtils {
|
||||||
* Reads a buffer and returns the memory representation of the dictionary.
|
* Reads a buffer and returns the memory representation of the dictionary.
|
||||||
*
|
*
|
||||||
* This high-level method takes a buffer and reads its contents, populating a
|
* This high-level method takes a buffer and reads its contents, populating a
|
||||||
* FusionDictionary structure. The optional dict argument is an existing dictionary to
|
* FusionDictionary structure.
|
||||||
* which words from the buffer should be added. If it is null, a new dictionary is created.
|
|
||||||
*
|
*
|
||||||
* @param dictDecoder the dict decoder.
|
* @param dictDecoder the dict decoder.
|
||||||
* @param dict an optional dictionary to add words to, or null.
|
* @return the created dictionary.
|
||||||
* @return the created (or merged) dictionary.
|
|
||||||
*/
|
*/
|
||||||
@UsedForTesting
|
@UsedForTesting
|
||||||
/* package */ static FusionDictionary readDictionaryBinary(final DictDecoder dictDecoder,
|
/* package */ static FusionDictionary readDictionaryBinary(final DictDecoder dictDecoder)
|
||||||
final FusionDictionary dict) throws IOException, UnsupportedFormatException {
|
throws IOException, UnsupportedFormatException {
|
||||||
// Read header
|
// Read header
|
||||||
final DictionaryHeader fileHeader = dictDecoder.readHeader();
|
final DictionaryHeader fileHeader = dictDecoder.readHeader();
|
||||||
|
|
||||||
|
@ -517,29 +515,7 @@ public final class BinaryDictDecoderUtils {
|
||||||
Map<Integer, PtNode> reversePtNodeMapping = new TreeMap<Integer, PtNode>();
|
Map<Integer, PtNode> reversePtNodeMapping = new TreeMap<Integer, PtNode>();
|
||||||
final PtNodeArray root = readNodeArray(dictDecoder, fileHeader.mBodyOffset,
|
final PtNodeArray root = readNodeArray(dictDecoder, fileHeader.mBodyOffset,
|
||||||
reverseNodeArrayMapping, reversePtNodeMapping, fileHeader.mFormatOptions);
|
reverseNodeArrayMapping, reversePtNodeMapping, fileHeader.mFormatOptions);
|
||||||
|
return new FusionDictionary(root, fileHeader.mDictionaryOptions);
|
||||||
FusionDictionary newDict = new FusionDictionary(root, fileHeader.mDictionaryOptions);
|
|
||||||
if (null != dict) {
|
|
||||||
for (final WordProperty wordProperty : dict) {
|
|
||||||
if (wordProperty.mIsBlacklistEntry) {
|
|
||||||
newDict.addBlacklistEntry(wordProperty.mWord, wordProperty.mShortcutTargets,
|
|
||||||
wordProperty.mIsNotAWord);
|
|
||||||
} else {
|
|
||||||
newDict.add(wordProperty.mWord, wordProperty.mProbabilityInfo,
|
|
||||||
wordProperty.mShortcutTargets, wordProperty.mIsNotAWord);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (final WordProperty wordProperty : dict) {
|
|
||||||
// By construction a binary dictionary may not have bigrams pointing to
|
|
||||||
// words that are not also registered as unigrams so we don't have to avoid
|
|
||||||
// them explicitly here.
|
|
||||||
for (final WeightedString bigram : wordProperty.mBigrams) {
|
|
||||||
newDict.setBigram(wordProperty.mWord, bigram.mWord, bigram.mProbabilityInfo);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return newDict;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -54,18 +54,15 @@ public interface DictDecoder {
|
||||||
* Reads a buffer and returns the memory representation of the dictionary.
|
* Reads a buffer and returns the memory representation of the dictionary.
|
||||||
*
|
*
|
||||||
* This high-level method takes a buffer and reads its contents, populating a
|
* This high-level method takes a buffer and reads its contents, populating a
|
||||||
* FusionDictionary structure. The optional dict argument is an existing dictionary to
|
* FusionDictionary structure.
|
||||||
* which words from the buffer should be added. If it is null, a new dictionary is created.
|
|
||||||
*
|
*
|
||||||
* @param dict an optional dictionary to add words to, or null.
|
|
||||||
* @param deleteDictIfBroken a flag indicating whether this method should remove the broken
|
* @param deleteDictIfBroken a flag indicating whether this method should remove the broken
|
||||||
* dictionary or not.
|
* dictionary or not.
|
||||||
* @return the created (or merged) dictionary.
|
* @return the created dictionary.
|
||||||
*/
|
*/
|
||||||
@UsedForTesting
|
@UsedForTesting
|
||||||
public FusionDictionary readDictionaryBinary(final FusionDictionary dict,
|
public FusionDictionary readDictionaryBinary(final boolean deleteDictIfBroken)
|
||||||
final boolean deleteDictIfBroken)
|
throws FileNotFoundException, IOException, UnsupportedFormatException;
|
||||||
throws FileNotFoundException, IOException, UnsupportedFormatException;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the address of the last PtNode of the exact matching word in the dictionary.
|
* Gets the address of the last PtNode of the exact matching word in the dictionary.
|
||||||
|
|
|
@ -236,14 +236,13 @@ public class Ver2DictDecoder extends AbstractDictDecoder {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FusionDictionary readDictionaryBinary(final FusionDictionary dict,
|
public FusionDictionary readDictionaryBinary(final boolean deleteDictIfBroken)
|
||||||
final boolean deleteDictIfBroken)
|
|
||||||
throws FileNotFoundException, IOException, UnsupportedFormatException {
|
throws FileNotFoundException, IOException, UnsupportedFormatException {
|
||||||
if (mDictBuffer == null) {
|
if (mDictBuffer == null) {
|
||||||
openDictBuffer();
|
openDictBuffer();
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
return BinaryDictDecoderUtils.readDictionaryBinary(this, dict);
|
return BinaryDictDecoderUtils.readDictionaryBinary(this);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
Log.e(TAG, "The dictionary " + mDictionaryBinaryFile.getName() + " is broken.", e);
|
Log.e(TAG, "The dictionary " + mDictionaryBinaryFile.getName() + " is broken.", e);
|
||||||
if (deleteDictIfBroken && !mDictionaryBinaryFile.delete()) {
|
if (deleteDictIfBroken && !mDictionaryBinaryFile.delete()) {
|
||||||
|
|
|
@ -56,11 +56,10 @@ public class Ver4DictDecoder extends AbstractDictDecoder {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FusionDictionary readDictionaryBinary(final FusionDictionary dict,
|
public FusionDictionary readDictionaryBinary(final boolean deleteDictIfBroken)
|
||||||
final boolean deleteDictIfBroken)
|
|
||||||
throws FileNotFoundException, IOException, UnsupportedFormatException {
|
throws FileNotFoundException, IOException, UnsupportedFormatException {
|
||||||
final DictionaryHeader header = readHeader();
|
final DictionaryHeader header = readHeader();
|
||||||
final FusionDictionary fusionDict = dict != null ? dict :
|
final FusionDictionary fusionDict =
|
||||||
new FusionDictionary(new FusionDictionary.PtNodeArray(), header.mDictionaryOptions);
|
new FusionDictionary(new FusionDictionary.PtNodeArray(), header.mDictionaryOptions);
|
||||||
int token = 0;
|
int token = 0;
|
||||||
final ArrayList<WordProperty> wordProperties = CollectionUtils.newArrayList();
|
final ArrayList<WordProperty> wordProperties = CollectionUtils.newArrayList();
|
||||||
|
|
|
@ -152,8 +152,8 @@ public class BinaryDictionaryDecayingTests extends AndroidTestCase {
|
||||||
|
|
||||||
final DictDecoder dictDecoder = FormatSpec.getDictDecoder(dictFile);
|
final DictDecoder dictDecoder = FormatSpec.getDictDecoder(dictFile);
|
||||||
try {
|
try {
|
||||||
final FusionDictionary dict = dictDecoder.readDictionaryBinary(null,
|
final FusionDictionary dict =
|
||||||
false /* deleteDictIfBroken */);
|
dictDecoder.readDictionaryBinary(false /* deleteDictIfBroken */);
|
||||||
PtNode ptNode = FusionDictionary.findWordInTree(dict.mRootNodeArray, "a");
|
PtNode ptNode = FusionDictionary.findWordInTree(dict.mRootNodeArray, "a");
|
||||||
assertNotNull(ptNode);
|
assertNotNull(ptNode);
|
||||||
assertTrue(ptNode.isTerminal());
|
assertTrue(ptNode.isTerminal());
|
||||||
|
|
|
@ -252,7 +252,7 @@ public class BinaryDictDecoderEncoderTests extends AndroidTestCase {
|
||||||
try {
|
try {
|
||||||
final DictDecoder dictDecoder = FormatSpec.getDictDecoder(file, bufferType);
|
final DictDecoder dictDecoder = FormatSpec.getDictDecoder(file, bufferType);
|
||||||
now = System.currentTimeMillis();
|
now = System.currentTimeMillis();
|
||||||
dict = dictDecoder.readDictionaryBinary(null, false /* deleteDictIfBroken */);
|
dict = dictDecoder.readDictionaryBinary(false /* deleteDictIfBroken */);
|
||||||
diff = System.currentTimeMillis() - now;
|
diff = System.currentTimeMillis() - now;
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
Log.e(TAG, "IOException while reading dictionary", e);
|
Log.e(TAG, "IOException while reading dictionary", e);
|
||||||
|
|
|
@ -198,7 +198,7 @@ public final class BinaryDictOffdeviceUtils {
|
||||||
System.out.println("Packaging : " + decodedSpec.describeChain());
|
System.out.println("Packaging : " + decodedSpec.describeChain());
|
||||||
System.out.println("Uncompressed size : " + decodedSpec.mFile.length());
|
System.out.println("Uncompressed size : " + decodedSpec.mFile.length());
|
||||||
}
|
}
|
||||||
return dictDecoder.readDictionaryBinary(null, false /* deleteDictIfBroken */);
|
return dictDecoder.readDictionaryBinary(false /* deleteDictIfBroken */);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
|
|
@ -265,7 +265,7 @@ public class DictionaryMaker {
|
||||||
throws FileNotFoundException, IOException, UnsupportedFormatException {
|
throws FileNotFoundException, IOException, UnsupportedFormatException {
|
||||||
final File file = new File(binaryFilename);
|
final File file = new File(binaryFilename);
|
||||||
final DictDecoder dictDecoder = FormatSpec.getDictDecoder(file);
|
final DictDecoder dictDecoder = FormatSpec.getDictDecoder(file);
|
||||||
return dictDecoder.readDictionaryBinary(null, false /* deleteDictIfBroken */);
|
return dictDecoder.readDictionaryBinary(false /* deleteDictIfBroken */);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -78,9 +78,8 @@ public class BinaryDictOffdeviceUtilsTests extends TestCase {
|
||||||
}
|
}
|
||||||
assertEquals("Wrong decode spec", 3, decodeSpec.mDecoderSpec.size());
|
assertEquals("Wrong decode spec", 3, decodeSpec.mDecoderSpec.size());
|
||||||
final DictDecoder dictDecoder = FormatSpec.getDictDecoder(decodeSpec.mFile);
|
final DictDecoder dictDecoder = FormatSpec.getDictDecoder(decodeSpec.mFile);
|
||||||
final FusionDictionary resultDict = dictDecoder.readDictionaryBinary(
|
final FusionDictionary resultDict =
|
||||||
null /* dict : an optional dictionary to add words to, or null */,
|
dictDecoder.readDictionaryBinary(false /* deleteDictIfBroken */);
|
||||||
false /* deleteDictIfBroken */);
|
|
||||||
assertEquals("Wrong version attribute", VERSION, resultDict.mOptions.mAttributes.get(
|
assertEquals("Wrong version attribute", VERSION, resultDict.mOptions.mAttributes.get(
|
||||||
DictionaryHeader.DICTIONARY_VERSION_KEY));
|
DictionaryHeader.DICTIONARY_VERSION_KEY));
|
||||||
assertEquals("Wrong locale attribute", LOCALE, resultDict.mOptions.mAttributes.get(
|
assertEquals("Wrong locale attribute", LOCALE, resultDict.mOptions.mAttributes.get(
|
||||||
|
|
Loading…
Reference in New Issue