diff options
author | Richard MacGregor <rmacgregor@cyngn.com> | 2015-05-20 12:22:05 -0700 |
---|---|---|
committer | Richard MacGregor <rmacgregor@cyngn.com> | 2015-05-29 00:10:41 +0000 |
commit | 0d4fca36a06c9b03005a4c8ccc55e152849beff8 (patch) | |
tree | 60786c03cb6cff51b4e86733caba63cb0a4e67f9 | |
parent | b83a558be9b40d46dbcf40666550d8b2cc29fb3e (diff) | |
download | android_packages_providers_ThemesProvider-0d4fca36a06c9b03005a4c8ccc55e152849beff8.tar.gz android_packages_providers_ThemesProvider-0d4fca36a06c9b03005a4c8ccc55e152849beff8.tar.bz2 android_packages_providers_ThemesProvider-0d4fca36a06c9b03005a4c8ccc55e152849beff8.zip |
Handle null parameters when creating query strings
Sometimes parameters, selection, and selection arguments may be null.
Handle various null cases to get correct behavior.
Change-Id: I8b969b3e1a726498ea3044374b2d235b8f41091a
-rw-r--r-- | src/org/cyanogenmod/themes/provider/util/ProviderUtils.java | 37 |
1 files changed, 29 insertions, 8 deletions
diff --git a/src/org/cyanogenmod/themes/provider/util/ProviderUtils.java b/src/org/cyanogenmod/themes/provider/util/ProviderUtils.java index ab98530..66db924 100644 --- a/src/org/cyanogenmod/themes/provider/util/ProviderUtils.java +++ b/src/org/cyanogenmod/themes/provider/util/ProviderUtils.java @@ -26,6 +26,7 @@ import android.provider.ThemesContract; import android.provider.ThemesContract.MixnMatchColumns; import android.provider.ThemesContract.PreviewColumns; import android.provider.ThemesContract.ThemesColumns; +import android.text.TextUtils; import org.cyanogenmod.themes.provider.ThemesOpenHelper; import java.util.ArrayList; @@ -114,6 +115,8 @@ public class ProviderUtils { } public static String[] modifyPreviewsProjection(String[] projection) { + if (projection == null) return null; + Set<String> validKeys = new HashSet<String>(Arrays.asList(ThemesContract.PreviewColumns.VALID_KEYS)); ArrayList<String> newProjection = new ArrayList<String>(); @@ -129,15 +132,28 @@ public class ProviderUtils { public static String modifyDefaultPreviewsSelection(String selection, String[] projection) { String newSelection = modifyPreviewsSelection(selection, projection); - newSelection += " AND " + PreviewColumns.COMPONENT_ID + "=0"; + if (!TextUtils.isEmpty(newSelection)) { + newSelection += " AND "; + } else { + newSelection = ""; + } + newSelection += PreviewColumns.COMPONENT_ID + "=0"; return newSelection; } public static String modifyPreviewsSelection(String selection, String[] projection) { - String newSelection = selection; + if (selection == null && projection == null) return null; + + String newSelection = ""; + if (!TextUtils.isEmpty(selection)) { + newSelection += selection; + } List<String> projectionItems = getPreviewProjectionItems(projection); - if (projectionItems.size() > 0) { - newSelection += " AND ("; + if (projectionItems != null && projectionItems.size() > 0) { + if (!TextUtils.isEmpty(newSelection)) { + newSelection += " AND "; + } + newSelection += "("; for (int i = 0; i < projectionItems.size(); i++) { newSelection += PreviewColumns.COL_KEY + "=?"; if (i < projectionItems.size() - 1) { @@ -151,16 +167,21 @@ public class ProviderUtils { public static String[] modifyPreviewsSelectionArgs(String[] selectionArgs, String[] projection) { - ArrayList<String> newSelectionArgs = - new ArrayList<String>(Arrays.asList(selectionArgs)); + if (selectionArgs == null && projection == null) return null; + + ArrayList<String> newSelectionArgs = new ArrayList<String>(); + if (selectionArgs != null) { + newSelectionArgs.addAll(Arrays.asList(selectionArgs)); + } List<String> projectionItems = getPreviewProjectionItems(projection); - for (String item : projectionItems) { - newSelectionArgs.add(item); + if (projectionItems != null) { + newSelectionArgs.addAll(projectionItems); } return newSelectionArgs.toArray(new String[newSelectionArgs.size()]); } public static List<String> getPreviewProjectionItems(String[] projection) { + if (projection == null) return null; Set<String> validKeys = new HashSet<String>(Arrays.asList(PreviewColumns.VALID_KEYS)); ArrayList<String> newProjection = new ArrayList<String>(); |