diff options
author | 2013-02-02 16:30:11 +0900 | |
---|---|---|
committer | 2013-02-06 15:21:33 -0800 | |
commit | 6ecb4c4dcc9cededd94f9c010add9889f590def1 (patch) | |
tree | 0914c3546ab53f1f8f41ae1943df69604337150b /java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java | |
parent | afe889a83d43afe23d22d28a443b051bb115f023 (diff) | |
download | latinime-6ecb4c4dcc9cededd94f9c010add9889f590def1.tar.gz latinime-6ecb4c4dcc9cededd94f9c010add9889f590def1.tar.xz latinime-6ecb4c4dcc9cededd94f9c010add9889f590def1.zip |
[B11] Implement reset and passing of the URL to the dict pack
Bug: 7601410
Bug: 7595195
Change-Id: I78cf04dce7c1e64de6725d32317de288a83bd39d
Diffstat (limited to 'java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java')
-rw-r--r-- | java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java b/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java index d4cdc6c5c..8ade1ac52 100644 --- a/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java +++ b/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java @@ -17,6 +17,7 @@ package com.android.inputmethod.latin; import android.content.ContentResolver; +import android.content.ContentValues; import android.content.Context; import android.content.res.AssetFileDescriptor; import android.database.Cursor; @@ -68,6 +69,10 @@ public final class BinaryDictionaryFileDumper { // The path fragment to append after the client ID for dictionary info requests. private static final String QUERY_PATH_DICT_INFO = "dict"; + // The path fragment to append after the client ID for updating the metadata URI. + private static final String QUERY_PATH_METADATA = "metadata"; + private static final String INSERT_METADATA_CLIENT_ID_COLUMN = "clientid"; + private static final String INSERT_METADATA_METADATA_URI_COLUMN = "uri"; // Prevents this class to be accidentally instantiated. private BinaryDictionaryFileDumper() { @@ -103,7 +108,10 @@ public final class BinaryDictionaryFileDumper { final Uri dictionaryPackUri = builder.build(); final Cursor c = resolver.query(dictionaryPackUri, DICTIONARY_PROJECTION, null, null, null); - if (null == c) return Collections.<WordListInfo>emptyList(); + if (null == c) { + reinitializeClientRecordInDictionaryContentProvider(context, resolver, clientId); + return Collections.<WordListInfo>emptyList(); + } if (c.getCount() <= 0 || !c.moveToFirst()) { c.close(); return Collections.<WordListInfo>emptyList(); @@ -335,4 +343,22 @@ public final class BinaryDictionaryFileDumper { output.write(buffer, 0, readBytes); input.close(); } + + private static void reinitializeClientRecordInDictionaryContentProvider(final Context context, + final ContentResolver resolver, final String clientId) { + final String metadataFileUri = context.getString(R.string.dictionary_pack_metadata_uri); + if (TextUtils.isEmpty(metadataFileUri)) return; + // Tell the content provider to reset all information about this client id + final Uri metadataContentUri = getProviderUriBuilder(clientId) + .appendPath(QUERY_PATH_METADATA) + .appendQueryParameter(QUERY_PARAMETER_PROTOCOL, QUERY_PARAMETER_PROTOCOL_VALUE) + .build(); + resolver.delete(metadataContentUri, null, null); + // Update the metadata URI + final ContentValues metadataValues = new ContentValues(); + metadataValues.put(INSERT_METADATA_CLIENT_ID_COLUMN, clientId); + metadataValues.put(INSERT_METADATA_METADATA_URI_COLUMN, metadataFileUri); + resolver.insert(metadataContentUri, metadataValues); + // TODO: Update the versions of the dictionaries + } } |