diff options
author | Chiao Cheng <chiaocheng@google.com> | 2013-07-22 18:12:00 -0700 |
---|---|---|
committer | Chiao Cheng <chiaocheng@google.com> | 2013-07-22 18:35:49 -0700 |
commit | 8d54a6e0fa9fb4bb0a2b3b2f36d0e9bf930d05c8 (patch) | |
tree | 5b90b38b47f545ac7a94f728c5cf9cf47c52acdd /src | |
parent | 17d6b4c1f7ce789475478375416959ff35fd09cb (diff) | |
parent | b8fb609bb80b1fd16de46a0248188fff8ca722ea (diff) | |
download | packages_providers_ContactsProvider-8d54a6e0fa9fb4bb0a2b3b2f36d0e9bf930d05c8.tar.gz packages_providers_ContactsProvider-8d54a6e0fa9fb4bb0a2b3b2f36d0e9bf930d05c8.tar.bz2 packages_providers_ContactsProvider-8d54a6e0fa9fb4bb0a2b3b2f36d0e9bf930d05c8.zip |
resolved conflicts for merge of b8fb609b to jb-mr1-dev
Change-Id: I336ee0b3f041f83a4b4e2c9973abb73852c2cc6f
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/providers/contacts/VoicemailContentTable.java | 20 | ||||
-rw-r--r-- | src/com/android/providers/contacts/util/DbQueryUtils.java | 15 |
2 files changed, 32 insertions, 3 deletions
diff --git a/src/com/android/providers/contacts/VoicemailContentTable.java b/src/com/android/providers/contacts/VoicemailContentTable.java index 3f00b262..dfa1e761 100644 --- a/src/com/android/providers/contacts/VoicemailContentTable.java +++ b/src/com/android/providers/contacts/VoicemailContentTable.java @@ -37,6 +37,7 @@ import android.util.Log; import com.android.common.content.ProjectionMap; import com.android.providers.contacts.VoicemailContentProvider.UriData; import com.android.providers.contacts.util.CloseUtils; +import com.google.common.collect.ImmutableSet; import java.io.File; import java.io.FileNotFoundException; @@ -54,6 +55,21 @@ public class VoicemailContentTable implements VoicemailTable.Delegate { private static final String[] FILENAME_ONLY_PROJECTION = new String[] { Voicemails._DATA }; + private static final ImmutableSet<String> ALLOWED_COLUMNS = new ImmutableSet.Builder<String>() + .add(Voicemails._ID) + .add(Voicemails.NUMBER) + .add(Voicemails.DATE) + .add(Voicemails.DURATION) + .add(Voicemails.IS_READ) + .add(Voicemails.STATE) + .add(Voicemails.SOURCE_DATA) + .add(Voicemails.SOURCE_PACKAGE) + .add(Voicemails.HAS_CONTENT) + .add(Voicemails.MIME_TYPE) + .add(OpenableColumns.DISPLAY_NAME) + .add(OpenableColumns.SIZE) + .build(); + private final String mTableName; private final SQLiteOpenHelper mDbHelper; private final Context mContext; @@ -211,8 +227,10 @@ public class VoicemailContentTable implements VoicemailTable.Delegate { @Override public int update(UriData uriData, ContentValues values, String selection, String[] selectionArgs) { - checkForSupportedColumns(mVoicemailProjectionMap, values); + + checkForSupportedColumns(ALLOWED_COLUMNS, values, "Updates are not allowed."); checkUpdateSupported(uriData); + final SQLiteDatabase db = mDbHelper.getWritableDatabase(); // TODO: This implementation does not allow bulk update because it only accepts // URI that include message Id. I think we do want to support bulk update. diff --git a/src/com/android/providers/contacts/util/DbQueryUtils.java b/src/com/android/providers/contacts/util/DbQueryUtils.java index c853a961..2b976a1a 100644 --- a/src/com/android/providers/contacts/util/DbQueryUtils.java +++ b/src/com/android/providers/contacts/util/DbQueryUtils.java @@ -20,6 +20,7 @@ import android.database.DatabaseUtils; import android.text.TextUtils; import java.util.HashMap; +import java.util.Set; /** * Static methods for helping us build database query selection strings. @@ -83,14 +84,24 @@ public class DbQueryUtils { /** * Checks if the given ContentValues contains values within the projection * map. + * * @throws IllegalArgumentException if any value in values is not found in * the projection map. */ public static void checkForSupportedColumns(HashMap<String, String> projectionMap, ContentValues values) { + checkForSupportedColumns(projectionMap.keySet(), values, "Is invalid."); + } + + /** + * @see #checkForSupportedColumns(HashMap, ContentValues) + */ + public static void checkForSupportedColumns(Set<String> allowedColumns, ContentValues values, + String msgSuffix) { for (String requestedColumn : values.keySet()) { - if (!projectionMap.keySet().contains(requestedColumn)) { - throw new IllegalArgumentException("Column '" + requestedColumn + "' is invalid."); + if (!allowedColumns.contains(requestedColumn)) { + throw new IllegalArgumentException("Column '" + requestedColumn + "'. " + + msgSuffix); } } } |