aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java
diff options
context:
space:
mode:
authorJatin Matani <jatinm@google.com>2014-10-23 17:50:35 -0700
committerJatin Matani <jatinm@google.com>2014-11-13 14:21:38 -0800
commit5365191a9d850362f41eedf3f95adb5c80cceb8f (patch)
treebc518473448b34fc635af0600d28dfefc3e36b62 /java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java
parentb050b458dc1eac06412d116d6b57b849d3ccb06d (diff)
downloadlatinime-5365191a9d850362f41eedf3f95adb5c80cceb8f.tar.gz
latinime-5365191a9d850362f41eedf3f95adb5c80cceb8f.tar.xz
latinime-5365191a9d850362f41eedf3f95adb5c80cceb8f.zip
Implement UserHistoryDictionary for each user account.
UserHistoryDictionary currently uses locale to determine the UserHistoryDictionary on the filesystem. With this change we use the account name as well. Thus each UserHistoryDictionary would following the following spec: UserHistoryDictionary.<locale>.<account>.dict. In case no account is selected, we default to the existing spec: UserHistoryDictionary.<locale>.dict Example UserHistoryDictionary.en_US.testaccount@example.com.dict Bug: 18104749 Change-Id: Iab031e166b55cf2ded68275a7e9be22475737b37
Diffstat (limited to 'java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java')
-rw-r--r--java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java25
1 files changed, 19 insertions, 6 deletions
diff --git a/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java b/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java
index ac2fc07c2..8c5eb0aa7 100644
--- a/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java
+++ b/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java
@@ -28,32 +28,45 @@ import java.util.Locale;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+
+/**
+ * Helps handle and manage personalized dictionaries such as {@link UserHistoryDictionary} and
+ * {@link PersonalizationDictionary}.
+ */
public class PersonalizationHelper {
private static final String TAG = PersonalizationHelper.class.getSimpleName();
private static final boolean DEBUG = false;
+
private static final ConcurrentHashMap<String, SoftReference<UserHistoryDictionary>>
sLangUserHistoryDictCache = new ConcurrentHashMap<>();
private static final ConcurrentHashMap<String, SoftReference<PersonalizationDictionary>>
sLangPersonalizationDictCache = new ConcurrentHashMap<>();
+ @Nonnull
public static UserHistoryDictionary getUserHistoryDictionary(
- final Context context, final Locale locale) {
- final String localeStr = locale.toString();
+ final Context context, final Locale locale, @Nullable final String accountName) {
+ String lookupStr = locale.toString();
+ if (accountName != null) {
+ lookupStr += "." + accountName;
+ }
synchronized (sLangUserHistoryDictCache) {
- if (sLangUserHistoryDictCache.containsKey(localeStr)) {
+ if (sLangUserHistoryDictCache.containsKey(lookupStr)) {
final SoftReference<UserHistoryDictionary> ref =
- sLangUserHistoryDictCache.get(localeStr);
+ sLangUserHistoryDictCache.get(lookupStr);
final UserHistoryDictionary dict = ref == null ? null : ref.get();
if (dict != null) {
if (DEBUG) {
- Log.w(TAG, "Use cached UserHistoryDictionary for " + locale);
+ Log.d(TAG, "Use cached UserHistoryDictionary for " + locale +
+ " & account" + accountName);
}
dict.reloadDictionaryIfRequired();
return dict;
}
}
final UserHistoryDictionary dict = new UserHistoryDictionary(context, locale);
- sLangUserHistoryDictCache.put(localeStr, new SoftReference<>(dict));
+ sLangUserHistoryDictCache.put(lookupStr, new SoftReference<>(dict));
return dict;
}
}