@Override public int delete(Uri url, String where, String[] whereArgs) { SQLiteDatabase db = mOpenHelper.getWritableDatabase(); int count; switch (URI_MATCHER.match(url)) { case CONTACTS: count = db.delete(TABLE_ROSTER, where, whereArgs); break; case CONTACT_ID: String segment = url.getPathSegments().get(1); if (TextUtils.isEmpty(where)) { where = "_id=" + segment; } else { where = "_id=" + segment + " AND (" + where + ")"; } count = db.delete(TABLE_ROSTER, where, whereArgs); break; default: throw new IllegalArgumentException("Cannot delete from URL: " + url); } getContext().getContentResolver().notifyChange(GROUPS_URI, null); notifyChange(); return count; }
@Override public Uri insert(Uri url, ContentValues initialValues) { if (URI_MATCHER.match(url) != CONTACTS) { throw new IllegalArgumentException("Cannot insert into URL: " + url); } ContentValues values = (initialValues != null) ? new ContentValues(initialValues) : new ContentValues(); for (String colName : RosterConstants.getRequiredColumns()) { if (values.containsKey(colName) == false) { throw new IllegalArgumentException("Missing column: " + colName); } } SQLiteDatabase db = mOpenHelper.getWritableDatabase(); long rowId = db.insert(TABLE_ROSTER, RosterConstants.USER_ID, values); if (rowId < 0) { throw new SQLException("Failed to insert row into " + url); } Uri noteUri = ContentUris.withAppendedId(CONTENT_URI, rowId); notifyChange(); return noteUri; }
@Override public int update(Uri url, ContentValues values, String where, String[] whereArgs) { int count; long rowId = 0; int match = URI_MATCHER.match(url); SQLiteDatabase db = mOpenHelper.getWritableDatabase(); switch (match) { case CONTACTS: count = db.update(TABLE_ROSTER, values, where, whereArgs); break; case CONTACT_ID: String segment = url.getPathSegments().get(1); rowId = Long.parseLong(segment); count = db.update(TABLE_ROSTER, values, "_id=" + rowId, whereArgs); break; default: throw new UnsupportedOperationException("Cannot update URL: " + url); } notifyChange(); return count; }