aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/com/android/inputmethod')
-rw-r--r--java/src/com/android/inputmethod/latin/BinaryDictionary.java2
-rw-r--r--java/src/com/android/inputmethod/latin/DictionaryStats.java10
-rw-r--r--java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java26
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);