@Override public int delete(Uri uri, String selection, String[] selectionArgs) { SQLiteDatabase writableDatabase = mDbHelper.getWritableDatabase(); int count; switch (sUriMatcher.match(uri)) { case MESSAGE_ALLROWS: case PROFILE_ALLROWS: case TASK_ALLROWS: count = writableDatabase.delete(getTableName(uri), selection, selectionArgs); break; case MESSAGE_SINGLE_ROW: case PROFILE_SINGLE_ROW: case TASK_SINGLE_ROW: count = writableDatabase.delete( getTableName(uri), "_id = ?", new String[] {uri.getLastPathSegment()}); break; default: throw new IllegalArgumentException("Unsupported URI: " + uri); } getContext().getContentResolver().notifyChange(uri, null); return count; }
@Override public Uri insert(Uri uri, ContentValues values) { final SQLiteDatabase db = mDbHelper.getWritableDatabase(); final int match = sUriMatcher.match(uri); Uri returnUri; switch (match) { case PROFILE_ALLROWS: { long _id = db.insert(TasksContract.ProfileEntry.TABLE_NAME, null, values); if (_id > 0) returnUri = TasksContract.ProfileEntry.buildProfileUri(_id); else throw new android.database.SQLException("Failed to insert row into " + uri); break; } case TASK_ALLROWS: { long _id = db.insert(TasksContract.TaskEntry.TABLE_NAME, null, values); if (_id > 0) returnUri = TasksContract.TaskEntry.buildTaskUri(_id); else throw new android.database.SQLException("Failed to insert row into " + uri); break; } case MESSAGE_ALLROWS: { long _id = db.insert(TasksContract.MessageEntry.TABLE_NAME, null, values); if (_id > 0) returnUri = TasksContract.MessageEntry.buildMessageUri(_id); else throw new android.database.SQLException("Failed to insert row into " + uri); break; } default: throw new UnsupportedOperationException("Unknown uri: " + uri); } getContext().getContentResolver().notifyChange(uri, null); return returnUri; }
@Override public Cursor query( Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { SQLiteDatabase readableDatabase = mDbHelper.getReadableDatabase(); SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder(); switch (sUriMatcher.match(uri)) { case MESSAGE_ALLROWS: case PROFILE_ALLROWS: case TASK_ALLROWS: queryBuilder.setTables(getTableName(uri)); break; case MESSAGE_SINGLE_ROW: case PROFILE_SINGLE_ROW: case TASK_SINGLE_ROW: queryBuilder.setTables(getTableName(uri)); queryBuilder.appendWhere("_id = " + uri.getLastPathSegment()); break; default: throw new IllegalArgumentException("Unsupported URI: " + uri); } Cursor returnCursor = queryBuilder.query( readableDatabase, projection, selection, selectionArgs, null, null, sortOrder); returnCursor.setNotificationUri(getContext().getContentResolver(), uri); return returnCursor; }