diff options
Diffstat (limited to 'java')
3 files changed, 34 insertions, 4 deletions
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionary.java b/java/src/com/android/inputmethod/latin/BinaryDictionary.java index 9bca0bf35..b164c1779 100644 --- a/java/src/com/android/inputmethod/latin/BinaryDictionary.java +++ b/java/src/com/android/inputmethod/latin/BinaryDictionary.java @@ -598,7 +598,7 @@ public final class BinaryDictionary extends Dictionary { } @UsedForTesting - public String getPropertyForTest(final String query) { + public String getPropertyForGettingStats(final String query) { if (!isValidDictionary()) return ""; return getPropertyNative(mNativeDict, query); } diff --git a/java/src/com/android/inputmethod/latin/DictionaryStats.java b/java/src/com/android/inputmethod/latin/DictionaryStats.java index 75aa2411d..5dd39d3d6 100644 --- a/java/src/com/android/inputmethod/latin/DictionaryStats.java +++ b/java/src/com/android/inputmethod/latin/DictionaryStats.java @@ -20,16 +20,24 @@ import java.io.File; import java.util.Locale; public class DictionaryStats { + public static final int NOT_AN_ENTRY_COUNT = -1; + public final Locale mLocale; public final String mDictName; public final String mDictFilePath; public final long mDictFileSize; + + public final int mUnigramCount; + public final int mNgramCount; // TODO: Add more members. - public DictionaryStats(final Locale locale, final String dictName, final File dictFile) { + public DictionaryStats(final Locale locale, final String dictName, final File dictFile, + final int unigramCount, final int ngramCount) { mLocale = locale; mDictName = dictName; mDictFilePath = dictFile.getAbsolutePath(); mDictFileSize = dictFile.length(); + mUnigramCount = unigramCount; + mNgramCount = ngramCount; } } diff --git a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java index 53abd2ecc..68f2b62f0 100644 --- a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java +++ b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java @@ -644,14 +644,36 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { }); } + private static int parseEntryCount(final String entryCountStr) { + int entryCount; + try { + entryCount = Integer.parseInt(entryCountStr); + } catch (final NumberFormatException e) { + entryCount = DictionaryStats.NOT_AN_ENTRY_COUNT; + } + return entryCount; + } + public DictionaryStats getDictionaryStats() { reloadDictionaryIfRequired(); final AsyncResultHolder<DictionaryStats> result = new AsyncResultHolder<>(); asyncExecuteTaskWithLock(mLock.readLock(), mDictName /* executorName */, new Runnable() { @Override public void run() { - // TODO: Get stats from the dictionary. - result.set(new DictionaryStats(mLocale, mDictName, mDictFile)); + if (mBinaryDictionary == null) { + result.set(new DictionaryStats(mLocale, mDictName, mDictFile, + DictionaryStats.NOT_AN_ENTRY_COUNT, + DictionaryStats.NOT_AN_ENTRY_COUNT)); + } + final int unigramCount = parseEntryCount( + mBinaryDictionary.getPropertyForGettingStats( + BinaryDictionary.MAX_UNIGRAM_COUNT_QUERY)); + // TODO: Get dedicated entry counts for bigram, trigram, and so on. + final int ngramCount = parseEntryCount(mBinaryDictionary.getPropertyForGettingStats( + BinaryDictionary.MAX_BIGRAM_COUNT_QUERY)); + // TODO: Get more information from dictionary. + result.set(new DictionaryStats(mLocale, mDictName, mDictFile, unigramCount, + ngramCount)); } }); return result.get(null /* defaultValue */, TIMEOUT_FOR_READ_OPS_IN_MILLISECONDS); |