List of usage examples for android.support.v4.database DatabaseUtilsCompat concatenateWhere
public static String concatenateWhere(String a, String b)
From source file:com.andryr.musicplayer.loaders.BaseLoader.java
@Nullable protected Cursor getCursor(Uri musicUri, String[] projection, String selection, String[] selectionArgs, String filteredFieldName, String filter, String orderBy) { if (!Utils.checkPermission(getContext(), Manifest.permission.READ_EXTERNAL_STORAGE)) { return null; }/*from ww w .j a v a2 s .co m*/ Cursor cursor; if (filter != null) { if (filter.equals("")) { return null; // empty filter means that we don't want any result } selection = DatabaseUtilsCompat.concatenateWhere(selection, filteredFieldName + " LIKE ?"); selectionArgs = DatabaseUtilsCompat.appendSelectionArgs(selectionArgs, new String[] { "%" + filter + "%" }); } cursor = getContext().getContentResolver().query(musicUri, projection, selection, selectionArgs, orderBy); return cursor; }
From source file:com.andryr.musicplayer.loaders.AlbumLoader.java
private Cursor getAlbumCursor() { Uri musicUri = MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI; String selection = getSelectionString(); String[] selectionArgs = getSelectionArgs(); if (mArtist != null) { selection = DatabaseUtilsCompat.concatenateWhere(selection, MediaStore.Audio.Albums.ARTIST + " = ?"); selectionArgs = DatabaseUtilsCompat.appendSelectionArgs(selectionArgs, new String[] { mArtist }); }/*from www . j a v a2 s .c om*/ String fieldName = MediaStore.Audio.Albums.ALBUM; String filter = getFilter(); return getCursor(musicUri, sProjection, selection, selectionArgs, fieldName, filter); }
From source file:com.andryr.musicplayer.loaders.SongLoader.java
protected Cursor getSongCursor() { Uri musicUri = getContentUri();// w ww . ja v a2 s.c o m String selection = getSelectionString(); String[] selectionArgs = getSelectionArgs(); selection = DatabaseUtilsCompat.concatenateWhere(selection, MediaStore.Audio.Media.IS_MUSIC + " = 1"); String fieldName = MediaStore.Audio.Media.TITLE; String filter = getFilter(); return getCursor(musicUri, sProjection, selection, selectionArgs, fieldName, filter); }
From source file:com.fututel.db.DBProvider.java
@Override public int delete(Uri uri, String where, String[] whereArgs) { SQLiteDatabase db = mOpenHelper.getWritableDatabase(); String finalWhere;//w w w .jav a 2 s .co m int count = 0; int matched = URI_MATCHER.match(uri); Uri regUri = uri; ArrayList<Long> oldRegistrationsAccounts = null; switch (matched) { case ACCOUNTS: count = db.delete(SipProfile.ACCOUNTS_TABLE_NAME, where, whereArgs); break; case ACCOUNTS_ID: finalWhere = DatabaseUtilsCompat .concatenateWhere(SipProfile.FIELD_ID + " = " + ContentUris.parseId(uri), where); count = db.delete(SipProfile.ACCOUNTS_TABLE_NAME, finalWhere, whereArgs); break; case CALLLOGS: count = db.delete(SipManager.CALLLOGS_TABLE_NAME, where, whereArgs); break; case CALLLOGS_ID: finalWhere = DatabaseUtilsCompat.concatenateWhere(CallLog.Calls._ID + " = " + ContentUris.parseId(uri), where); count = db.delete(SipManager.CALLLOGS_TABLE_NAME, finalWhere, whereArgs); break; case FILTERS: count = db.delete(SipManager.FILTERS_TABLE_NAME, where, whereArgs); break; case FILTERS_ID: finalWhere = DatabaseUtilsCompat.concatenateWhere(Filter._ID + " = " + ContentUris.parseId(uri), where); count = db.delete(SipManager.FILTERS_TABLE_NAME, finalWhere, whereArgs); break; case MESSAGES: count = db.delete(SipMessage.MESSAGES_TABLE_NAME, where, whereArgs); break; case MESSAGES_ID: finalWhere = DatabaseUtilsCompat .concatenateWhere(SipMessage.FIELD_ID + " = " + ContentUris.parseId(uri), where); count = db.delete(SipMessage.MESSAGES_TABLE_NAME, finalWhere, whereArgs); break; case THREADS_ID: String from = uri.getLastPathSegment(); if (!TextUtils.isEmpty(from)) { count = db.delete(SipMessage.MESSAGES_TABLE_NAME, MESSAGES_THREAD_SELECTION, new String[] { from, from }); } else { count = 0; } regUri = SipMessage.MESSAGE_URI; break; case ACCOUNTS_STATUS: oldRegistrationsAccounts = new ArrayList<Long>(); synchronized (profilesStatus) { for (Long accId : profilesStatus.keySet()) { oldRegistrationsAccounts.add(accId); } profilesStatus.clear(); } break; case ACCOUNTS_STATUS_ID: long id = ContentUris.parseId(uri); synchronized (profilesStatus) { profilesStatus.remove(id); } break; default: throw new IllegalArgumentException(UNKNOWN_URI_LOG + uri); } getContext().getContentResolver().notifyChange(regUri, null); if (matched == ACCOUNTS_ID || matched == ACCOUNTS_STATUS_ID) { long rowId = ContentUris.parseId(uri); if (rowId >= 0) { if (matched == ACCOUNTS_ID) { broadcastAccountChange(rowId); } else if (matched == ACCOUNTS_STATUS_ID) { broadcastRegistrationChange(rowId); } } } if (matched == FILTERS || matched == FILTERS_ID) { Filter.resetCache(); } if (matched == ACCOUNTS_STATUS && oldRegistrationsAccounts != null) { for (Long accId : oldRegistrationsAccounts) { if (accId != null) { broadcastRegistrationChange(accId); } } } return count; }
From source file:com.csipsimple.db.DBProvider.java
@Override public int delete(Uri uri, String where, String[] whereArgs) { SQLiteDatabase db = mOpenHelper.getWritableDatabase(); String finalWhere;/*from w w w . ja v a 2s. com*/ int count = 0; int matched = URI_MATCHER.match(uri); Uri regUri = uri; List<String> possibles = getPossibleFieldsForType(matched); checkSelection(possibles, where); ArrayList<Long> oldRegistrationsAccounts = null; switch (matched) { case ACCOUNTS: count = db.delete(SipProfile.ACCOUNTS_TABLE_NAME, where, whereArgs); break; case ACCOUNTS_ID: finalWhere = DatabaseUtilsCompat .concatenateWhere(SipProfile.FIELD_ID + " = " + ContentUris.parseId(uri), where); count = db.delete(SipProfile.ACCOUNTS_TABLE_NAME, finalWhere, whereArgs); break; case CALLLOGS: count = db.delete(SipManager.CALLLOGS_TABLE_NAME, where, whereArgs); break; case CALLLOGS_ID: finalWhere = DatabaseUtilsCompat.concatenateWhere(CallLog.Calls._ID + " = " + ContentUris.parseId(uri), where); count = db.delete(SipManager.CALLLOGS_TABLE_NAME, finalWhere, whereArgs); break; case FILTERS: count = db.delete(SipManager.FILTERS_TABLE_NAME, where, whereArgs); break; case FILTERS_ID: finalWhere = DatabaseUtilsCompat.concatenateWhere(Filter._ID + " = " + ContentUris.parseId(uri), where); count = db.delete(SipManager.FILTERS_TABLE_NAME, finalWhere, whereArgs); break; case MESSAGES: count = db.delete(SipMessage.MESSAGES_TABLE_NAME, where, whereArgs); break; case MESSAGES_ID: finalWhere = DatabaseUtilsCompat .concatenateWhere(SipMessage.FIELD_ID + " = " + ContentUris.parseId(uri), where); count = db.delete(SipMessage.MESSAGES_TABLE_NAME, finalWhere, whereArgs); break; case THREADS_ID: String from = uri.getLastPathSegment(); if (!TextUtils.isEmpty(from)) { count = db.delete(SipMessage.MESSAGES_TABLE_NAME, MESSAGES_THREAD_SELECTION, new String[] { from, from }); } else { count = 0; } regUri = SipMessage.MESSAGE_URI; break; case ACCOUNTS_STATUS: oldRegistrationsAccounts = new ArrayList<Long>(); synchronized (profilesStatus) { for (Long accId : profilesStatus.keySet()) { oldRegistrationsAccounts.add(accId); } profilesStatus.clear(); } break; case ACCOUNTS_STATUS_ID: long id = ContentUris.parseId(uri); synchronized (profilesStatus) { profilesStatus.remove(id); } break; default: throw new IllegalArgumentException(UNKNOWN_URI_LOG + uri); } getContext().getContentResolver().notifyChange(regUri, null); if (matched == ACCOUNTS_ID || matched == ACCOUNTS_STATUS_ID) { long rowId = ContentUris.parseId(uri); if (rowId >= 0) { if (matched == ACCOUNTS_ID) { broadcastAccountDelete(rowId); } else if (matched == ACCOUNTS_STATUS_ID) { broadcastRegistrationChange(rowId); } } } if (matched == FILTERS || matched == FILTERS_ID) { Filter.resetCache(); } if (matched == ACCOUNTS_STATUS && oldRegistrationsAccounts != null) { for (Long accId : oldRegistrationsAccounts) { if (accId != null) { broadcastRegistrationChange(accId); } } } return count; }
From source file:net.voxcorp.voxmobile.db.DBProvider.java
@Override public int delete(Uri uri, String where, String[] whereArgs) { SQLiteDatabase db = mOpenHelper.getWritableDatabase(); String finalWhere;// ww w. j a v a2 s .c om int count = 0; int matched = URI_MATCHER.match(uri); Uri regUri = uri; List<String> possibles = getPossibleFieldsForType(matched); checkSelection(possibles, where); ArrayList<Long> oldRegistrationsAccounts = null; switch (matched) { case ACCOUNTS: count = db.delete(SipProfile.ACCOUNTS_TABLE_NAME, where, whereArgs); break; case ACCOUNTS_ID: finalWhere = DatabaseUtilsCompat .concatenateWhere(SipProfile.FIELD_ID + " = " + ContentUris.parseId(uri), where); count = db.delete(SipProfile.ACCOUNTS_TABLE_NAME, finalWhere, whereArgs); break; case CALLLOGS: count = db.delete(SipManager.CALLLOGS_TABLE_NAME, where, whereArgs); break; case CALLLOGS_ID: finalWhere = DatabaseUtilsCompat.concatenateWhere(CallLog.Calls._ID + " = " + ContentUris.parseId(uri), where); count = db.delete(SipManager.CALLLOGS_TABLE_NAME, finalWhere, whereArgs); break; case FILTERS: count = db.delete(SipManager.FILTERS_TABLE_NAME, where, whereArgs); break; case FILTERS_ID: finalWhere = DatabaseUtilsCompat.concatenateWhere(Filter._ID + " = " + ContentUris.parseId(uri), where); count = db.delete(SipManager.FILTERS_TABLE_NAME, finalWhere, whereArgs); break; case MESSAGES: count = db.delete(SipMessage.MESSAGES_TABLE_NAME, where, whereArgs); break; case MESSAGES_ID: finalWhere = DatabaseUtilsCompat .concatenateWhere(SipMessage.FIELD_ID + " = " + ContentUris.parseId(uri), where); count = db.delete(SipMessage.MESSAGES_TABLE_NAME, finalWhere, whereArgs); break; case THREADS_ID: String from = uri.getLastPathSegment(); if (!TextUtils.isEmpty(from)) { count = db.delete(SipMessage.MESSAGES_TABLE_NAME, MESSAGES_THREAD_SELECTION, new String[] { from, from }); } else { count = 0; } regUri = SipMessage.MESSAGE_URI; break; case ACCOUNTS_STATUS: oldRegistrationsAccounts = new ArrayList<Long>(); synchronized (profilesStatus) { for (Long accId : profilesStatus.keySet()) { oldRegistrationsAccounts.add(accId); } profilesStatus.clear(); } break; case ACCOUNTS_STATUS_ID: long id = ContentUris.parseId(uri); synchronized (profilesStatus) { profilesStatus.remove(id); } break; default: throw new IllegalArgumentException(UNKNOWN_URI_LOG + uri); } getContext().getContentResolver().notifyChange(regUri, null); if (matched == ACCOUNTS_ID || matched == ACCOUNTS_STATUS_ID) { long rowId = ContentUris.parseId(uri); if (rowId >= 0) { if (matched == ACCOUNTS_ID) { broadcastAccountChange(rowId); } else if (matched == ACCOUNTS_STATUS_ID) { broadcastRegistrationChange(rowId); } } } if (matched == FILTERS || matched == FILTERS_ID) { Filter.resetCache(); } if (matched == ACCOUNTS_STATUS && oldRegistrationsAccounts != null) { for (Long accId : oldRegistrationsAccounts) { if (accId != null) { broadcastRegistrationChange(accId); } } } return count; }
From source file:org.kontalk.provider.UsersProvider.java
@Override public Cursor query(@NonNull Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {/*from www. j ava 2s . c o m*/ SQLiteQueryBuilder qb = new SQLiteQueryBuilder(); boolean offline = Boolean.parseBoolean(uri.getQueryParameter(Users.OFFLINE)); int match = sUriMatcher.match(uri); if (match == USERS || match == USERS_JID) { // use the same table name as an alias String table = offline ? (TABLE_USERS_OFFLINE + " " + TABLE_USERS) : TABLE_USERS; qb.setTables(table); qb.setProjectionMap(usersProjectionMap); } else if (match == KEYS || match == KEYS_JID || match == KEYS_JID_FINGERPRINT) { qb.setTables(TABLE_KEYS); qb.setProjectionMap(keysProjectionMap); } switch (match) { case USERS: // nothing to do break; case USERS_JID: { // TODO append to selection String userId = uri.getPathSegments().get(1); selection = TABLE_USERS + "." + Users.JID + " = ?"; selectionArgs = new String[] { userId }; break; } case KEYS: // nothing to do break; case KEYS_JID: case KEYS_JID_FINGERPRINT: String userId = uri.getPathSegments().get(1); selection = DatabaseUtilsCompat.concatenateWhere(selection, Keys.JID + "=?"); selectionArgs = DatabaseUtilsCompat.appendSelectionArgs(selectionArgs, new String[] { userId }); // TODO support for fingerprint in Uri break; default: throw new IllegalArgumentException("Unknown URI " + uri); } SQLiteDatabase db = dbHelper.getReadableDatabase(); Cursor c = qb.query(db, projection, selection, selectionArgs, null, null, sortOrder); if ((match == USERS || match == USERS_JID) && c.getCount() == 0 && (match != USERS_JID || !XMPPUtils.isDomainJID(uri.getPathSegments().get(1)))) { // empty result set and sync requested SyncAdapter.requestSync(getContext(), false); } if (Boolean.parseBoolean(uri.getQueryParameter(Users.EXTRA_INDEX)) && c.getCount() > 0) { UsersCursor uc = new UsersCursor(c); bundleFastScrollingIndexExtras(uc, uri, db, qb, selection, selectionArgs, sortOrder, null); c = uc; } c.setNotificationUri(getContext().getContentResolver(), uri); return c; }
From source file:com.fututel.db.DBProvider.java
@Override public int update(Uri uri, ContentValues values, String where, String[] whereArgs) { SQLiteDatabase db = mOpenHelper.getWritableDatabase(); int count;/*from ww w . j a va2 s .c o m*/ String finalWhere; int matched = URI_MATCHER.match(uri); switch (matched) { case ACCOUNTS: count = db.update(SipProfile.ACCOUNTS_TABLE_NAME, values, where, whereArgs); break; case ACCOUNTS_ID: finalWhere = DatabaseUtilsCompat .concatenateWhere(SipProfile.FIELD_ID + " = " + ContentUris.parseId(uri), where); count = db.update(SipProfile.ACCOUNTS_TABLE_NAME, values, finalWhere, whereArgs); break; case CALLLOGS: count = db.update(SipManager.CALLLOGS_TABLE_NAME, values, where, whereArgs); break; case CALLLOGS_ID: finalWhere = DatabaseUtilsCompat.concatenateWhere(CallLog.Calls._ID + " = " + ContentUris.parseId(uri), where); count = db.update(SipManager.CALLLOGS_TABLE_NAME, values, finalWhere, whereArgs); break; case FILTERS: count = db.update(SipManager.FILTERS_TABLE_NAME, values, where, whereArgs); break; case FILTERS_ID: finalWhere = DatabaseUtilsCompat.concatenateWhere(Filter._ID + " = " + ContentUris.parseId(uri), where); count = db.update(SipManager.FILTERS_TABLE_NAME, values, finalWhere, whereArgs); break; case MESSAGES: count = db.update(SipMessage.MESSAGES_TABLE_NAME, values, where, whereArgs); break; case MESSAGES_ID: finalWhere = DatabaseUtilsCompat .concatenateWhere(SipMessage.FIELD_ID + " = " + ContentUris.parseId(uri), where); count = db.update(SipMessage.MESSAGES_TABLE_NAME, values, where, whereArgs); break; case ACCOUNTS_STATUS_ID: long id = ContentUris.parseId(uri); synchronized (profilesStatus) { SipProfileState ps = new SipProfileState(); if (profilesStatus.containsKey(id)) { ContentValues currentValues = profilesStatus.get(id); ps.createFromContentValue(currentValues); } ps.createFromContentValue(values); ContentValues cv = ps.getAsContentValue(); cv.put(SipProfileState.ACCOUNT_ID, id); profilesStatus.put(id, cv); Log.d(THIS_FILE, "Updated " + cv); } count = 1; break; default: throw new IllegalArgumentException(UNKNOWN_URI_LOG + uri); } getContext().getContentResolver().notifyChange(uri, null); long rowId = -1; if (matched == ACCOUNTS_ID || matched == ACCOUNTS_STATUS_ID) { rowId = ContentUris.parseId(uri); } if (rowId >= 0) { if (matched == ACCOUNTS_ID) { // Don't broadcast if we only changed wizard or only changed priority boolean doBroadcast = true; if (values.size() == 1) { if (values.containsKey(SipProfile.FIELD_WIZARD)) { doBroadcast = false; } else if (values.containsKey(SipProfile.FIELD_PRIORITY)) { doBroadcast = false; } } if (doBroadcast) { broadcastAccountChange(rowId); } } else if (matched == ACCOUNTS_STATUS_ID) { broadcastRegistrationChange(rowId); } } if (matched == FILTERS || matched == FILTERS_ID) { Filter.resetCache(); } return count; }
From source file:com.csipsimple.db.DBProvider.java
@Override public int update(Uri uri, ContentValues values, String where, String[] whereArgs) { SQLiteDatabase db = mOpenHelper.getWritableDatabase(); int count;/*from w w w . j a v a2 s . c om*/ String finalWhere; int matched = URI_MATCHER.match(uri); List<String> possibles = getPossibleFieldsForType(matched); checkSelection(possibles, where); switch (matched) { case ACCOUNTS: count = db.update(SipProfile.ACCOUNTS_TABLE_NAME, values, where, whereArgs); break; case ACCOUNTS_ID: finalWhere = DatabaseUtilsCompat .concatenateWhere(SipProfile.FIELD_ID + " = " + ContentUris.parseId(uri), where); count = db.update(SipProfile.ACCOUNTS_TABLE_NAME, values, finalWhere, whereArgs); break; case CALLLOGS: count = db.update(SipManager.CALLLOGS_TABLE_NAME, values, where, whereArgs); break; case CALLLOGS_ID: finalWhere = DatabaseUtilsCompat.concatenateWhere(CallLog.Calls._ID + " = " + ContentUris.parseId(uri), where); count = db.update(SipManager.CALLLOGS_TABLE_NAME, values, finalWhere, whereArgs); break; case FILTERS: count = db.update(SipManager.FILTERS_TABLE_NAME, values, where, whereArgs); break; case FILTERS_ID: finalWhere = DatabaseUtilsCompat.concatenateWhere(Filter._ID + " = " + ContentUris.parseId(uri), where); count = db.update(SipManager.FILTERS_TABLE_NAME, values, finalWhere, whereArgs); break; case MESSAGES: count = db.update(SipMessage.MESSAGES_TABLE_NAME, values, where, whereArgs); break; case MESSAGES_ID: finalWhere = DatabaseUtilsCompat .concatenateWhere(SipMessage.FIELD_ID + " = " + ContentUris.parseId(uri), where); count = db.update(SipMessage.MESSAGES_TABLE_NAME, values, where, whereArgs); break; case ACCOUNTS_STATUS_ID: long id = ContentUris.parseId(uri); synchronized (profilesStatus) { SipProfileState ps = new SipProfileState(); if (profilesStatus.containsKey(id)) { ContentValues currentValues = profilesStatus.get(id); ps.createFromContentValue(currentValues); } ps.createFromContentValue(values); ContentValues cv = ps.getAsContentValue(); cv.put(SipProfileState.ACCOUNT_ID, id); profilesStatus.put(id, cv); Log.d(THIS_FILE, "Updated " + cv); } count = 1; break; default: throw new IllegalArgumentException(UNKNOWN_URI_LOG + uri); } getContext().getContentResolver().notifyChange(uri, null); long rowId = -1; if (matched == ACCOUNTS_ID || matched == ACCOUNTS_STATUS_ID) { rowId = ContentUris.parseId(uri); } if (rowId >= 0) { if (matched == ACCOUNTS_ID) { // Don't broadcast if we only changed wizard or only changed priority boolean doBroadcast = true; if (values.size() == 1) { if (values.containsKey(SipProfile.FIELD_WIZARD)) { doBroadcast = false; } else if (values.containsKey(SipProfile.FIELD_PRIORITY)) { doBroadcast = false; } } if (doBroadcast) { broadcastAccountChange(rowId); } } else if (matched == ACCOUNTS_STATUS_ID) { broadcastRegistrationChange(rowId); } } if (matched == FILTERS || matched == FILTERS_ID) { Filter.resetCache(); } return count; }