aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java
diff options
context:
space:
mode:
authorKeisuke Kuroyanagi <ksk@google.com>2013-12-25 11:44:16 +0900
committerKeisuke Kuroyanagi <ksk@google.com>2013-12-25 11:44:16 +0900
commitf1457e7a221082688b6399853e84e77948633c7b (patch)
treebf5e3e4d77e9c63113cd3a7f0e36ed9752ba18e6 /java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java
parentafca1ddd233c03d79433931a0b6ba97ed22663ed (diff)
downloadlatinime-f1457e7a221082688b6399853e84e77948633c7b.tar.gz
latinime-f1457e7a221082688b6399853e84e77948633c7b.tar.xz
latinime-f1457e7a221082688b6399853e84e77948633c7b.zip
Remove personalized dicts when the option is turned off.
Bug: 11757851 Change-Id: I94f32859d862fe41e39845ab2bfc2d396c6aea0f
Diffstat (limited to 'java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java')
-rw-r--r--java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java46
1 files changed, 46 insertions, 0 deletions
diff --git a/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java b/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java
index d55cae132..38b22e5f6 100644
--- a/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java
+++ b/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java
@@ -17,10 +17,13 @@
package com.android.inputmethod.latin.personalization;
import com.android.inputmethod.latin.utils.CollectionUtils;
+import com.android.inputmethod.latin.utils.FileUtils;
import android.content.Context;
import android.util.Log;
+import java.io.File;
+import java.io.FilenameFilter;
import java.lang.ref.SoftReference;
import java.util.Locale;
import java.util.concurrent.ConcurrentHashMap;
@@ -96,4 +99,47 @@ public class PersonalizationHelper {
return dict;
}
}
+
+ public static void removeAllPersonalizedDictionaries(final Context context) {
+ removeAllDictionaries(context, sLangUserHistoryDictCache,
+ UserHistoryDictionary.NAME);
+ removeAllDictionaries(context, sLangPersonalizationDictCache,
+ PersonalizationDictionary.NAME);
+ }
+
+ private static <T extends DecayingExpandableBinaryDictionaryBase> void removeAllDictionaries(
+ final Context context, final ConcurrentHashMap<String, SoftReference<T>> dictionaryMap,
+ final String dictNamePrefix) {
+ synchronized (dictionaryMap) {
+ for (final ConcurrentHashMap.Entry<String, SoftReference<T>> entry
+ : dictionaryMap.entrySet()) {
+ if (entry.getValue() != null) {
+ final DecayingExpandableBinaryDictionaryBase dict = entry.getValue().get();
+ if (dict != null) {
+ dict.clearAndFlushDictionary();
+ }
+ }
+ }
+ dictionaryMap.clear();
+ if (!FileUtils.deleteFilteredFiles(
+ context.getFilesDir(), new DictFilter(dictNamePrefix))) {
+ Log.e(TAG, "Cannot remove all existing dictionary files. filesDir: "
+ + context.getFilesDir().getAbsolutePath() + ", dictNamePrefix: "
+ + dictNamePrefix);
+ }
+ }
+ }
+
+ private static class DictFilter implements FilenameFilter {
+ private final String mName;
+
+ DictFilter(final String name) {
+ mName = name;
+ }
+
+ @Override
+ public boolean accept(final File dir, final String name) {
+ return name.startsWith(mName);
+ }
+ }
}