15fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project/* 28188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski * Copyright (C) 2013 The Android Open Source Project 35fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project * 45fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 55fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project * you may not use this file except in compliance with the License. 65fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project * You may obtain a copy of the License at 75fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project * 85fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 95fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project * 105fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 115fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 125fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project * See the License for the specific language governing permissions and 145fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project * limitations under the License. 155fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project */ 165fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project 17b839a7d1f42a1f3d58887f5a3c7978791d508cdbPaul Sliwowskipackage com.android.deskclock.provider; 185fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project 195fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Projectimport android.content.ContentProvider; 208188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowskiimport android.content.ContentUris; 215fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Projectimport android.content.ContentValues; 225fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Projectimport android.content.UriMatcher; 235fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Projectimport android.database.Cursor; 245fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Projectimport android.database.sqlite.SQLiteDatabase; 255fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Projectimport android.database.sqlite.SQLiteQueryBuilder; 265fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Projectimport android.net.Uri; 275fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Projectimport android.text.TextUtils; 285fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project 29cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassenimport com.android.deskclock.LogUtils; 30b839a7d1f42a1f3d58887f5a3c7978791d508cdbPaul Sliwowski 31b839a7d1f42a1f3d58887f5a3c7978791d508cdbPaul Sliwowskipublic class ClockProvider extends ContentProvider { 32b839a7d1f42a1f3d58887f5a3c7978791d508cdbPaul Sliwowski private ClockDatabaseHelper mOpenHelper; 335fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project 345fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project private static final int ALARMS = 1; 355fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project private static final int ALARMS_ID = 2; 368188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski private static final int INSTANCES = 3; 378188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski private static final int INSTANCES_ID = 4; 388188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski private static final int CITIES = 5; 398188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski private static final int CITIES_ID = 6; 405fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project 418188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski private static final UriMatcher sURLMatcher = new UriMatcher(UriMatcher.NO_MATCH); 425fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project static { 438188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski sURLMatcher.addURI(ClockContract.AUTHORITY, "alarms", ALARMS); 448188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski sURLMatcher.addURI(ClockContract.AUTHORITY, "alarms/#", ALARMS_ID); 458188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski sURLMatcher.addURI(ClockContract.AUTHORITY, "instances", INSTANCES); 468188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski sURLMatcher.addURI(ClockContract.AUTHORITY, "instances/#", INSTANCES_ID); 478188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski sURLMatcher.addURI(ClockContract.AUTHORITY, "cities", CITIES); 488188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski sURLMatcher.addURI(ClockContract.AUTHORITY, "cities/*", CITIES_ID); 495fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project } 505fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project 51b839a7d1f42a1f3d58887f5a3c7978791d508cdbPaul Sliwowski public ClockProvider() { 525fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project } 535fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project 545fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project @Override 555fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project public boolean onCreate() { 56b839a7d1f42a1f3d58887f5a3c7978791d508cdbPaul Sliwowski mOpenHelper = new ClockDatabaseHelper(getContext()); 575fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project return true; 585fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project } 595fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project 605fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project @Override 618188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski public Cursor query(Uri uri, String[] projectionIn, String selection, String[] selectionArgs, 628188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski String sort) { 635fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project SQLiteQueryBuilder qb = new SQLiteQueryBuilder(); 645fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project 655fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project // Generate the body of the query 668188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski int match = sURLMatcher.match(uri); 675fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project switch (match) { 685fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project case ALARMS: 698188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski qb.setTables(ClockDatabaseHelper.ALARMS_TABLE_NAME); 705fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project break; 715fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project case ALARMS_ID: 728188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski qb.setTables(ClockDatabaseHelper.ALARMS_TABLE_NAME); 738188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski qb.appendWhere(ClockContract.AlarmsColumns._ID + "="); 748188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski qb.appendWhere(uri.getLastPathSegment()); 758188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski break; 768188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski case INSTANCES: 778188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski qb.setTables(ClockDatabaseHelper.INSTANCES_TABLE_NAME); 788188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski break; 798188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski case INSTANCES_ID: 808188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski qb.setTables(ClockDatabaseHelper.INSTANCES_TABLE_NAME); 818188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski qb.appendWhere(ClockContract.InstancesColumns._ID + "="); 828188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski qb.appendWhere(uri.getLastPathSegment()); 838188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski break; 848188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski case CITIES: 858188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski qb.setTables(ClockDatabaseHelper.CITIES_TABLE_NAME); 868188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski break; 878188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski case CITIES_ID: 888188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski qb.setTables(ClockDatabaseHelper.CITIES_TABLE_NAME); 898188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski qb.appendWhere(ClockContract.CitiesColumns.CITY_ID + "="); 908188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski qb.appendWhere(uri.getLastPathSegment()); 915fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project break; 925fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project default: 938188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski throw new IllegalArgumentException("Unknown URL " + uri); 945fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project } 955fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project 965fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project SQLiteDatabase db = mOpenHelper.getReadableDatabase(); 975fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project Cursor ret = qb.query(db, projectionIn, selection, selectionArgs, 985fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project null, null, sort); 995fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project 1005fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project if (ret == null) { 101cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen LogUtils.e("Alarms.query: failed"); 1025fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project } else { 1038188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski ret.setNotificationUri(getContext().getContentResolver(), uri); 1045fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project } 1055fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project 1065fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project return ret; 1075fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project } 1085fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project 1095fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project @Override 1108188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski public String getType(Uri uri) { 1118188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski int match = sURLMatcher.match(uri); 1125fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project switch (match) { 1135fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project case ALARMS: 1145fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project return "vnd.android.cursor.dir/alarms"; 1155fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project case ALARMS_ID: 1165fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project return "vnd.android.cursor.item/alarms"; 1178188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski case INSTANCES: 1188188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski return "vnd.android.cursor.dir/instances"; 1198188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski case INSTANCES_ID: 1208188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski return "vnd.android.cursor.item/instances"; 1218188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski case CITIES: 1228188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski return "vnd.android.cursor.dir/cities"; 1238188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski case CITIES_ID: 1248188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski return "vnd.android.cursor.item/cities"; 1255fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project default: 1265fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project throw new IllegalArgumentException("Unknown URL"); 1275fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project } 1285fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project } 1295fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project 1305fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project @Override 1318188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski public int update(Uri uri, ContentValues values, String where, String[] whereArgs) { 1325fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project int count; 1338188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski String alarmId; 1345fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project SQLiteDatabase db = mOpenHelper.getWritableDatabase(); 1358188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski switch (sURLMatcher.match(uri)) { 1368188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski case ALARMS_ID: 1378188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski alarmId = uri.getLastPathSegment(); 1388188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski count = db.update(ClockDatabaseHelper.ALARMS_TABLE_NAME, values, 1398188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski ClockContract.AlarmsColumns._ID + "=" + alarmId, 1408188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski null); 1418188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski break; 1428188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski case INSTANCES_ID: 1438188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski alarmId = uri.getLastPathSegment(); 1448188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski count = db.update(ClockDatabaseHelper.INSTANCES_TABLE_NAME, values, 1458188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski ClockContract.InstancesColumns._ID + "=" + alarmId, 1468188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski null); 1478188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski break; 1488188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski case CITIES_ID: 1498188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski alarmId = uri.getLastPathSegment(); 1508188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski count = db.update(ClockDatabaseHelper.CITIES_TABLE_NAME, values, 1518188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski ClockContract.CitiesColumns.CITY_ID + "=" + alarmId, 1528188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski null); 1535fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project break; 1545fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project default: { 1555fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project throw new UnsupportedOperationException( 1568188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski "Cannot update URL: " + uri); 1575fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project } 1585fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project } 159cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen LogUtils.v("*** notifyChange() id: " + alarmId + " url " + uri); 1608188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski getContext().getContentResolver().notifyChange(uri, null); 1615fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project return count; 1625fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project } 1635fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project 1645fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project @Override 1658188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski public Uri insert(Uri uri, ContentValues initialValues) { 1668188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski long rowId; 1678188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski SQLiteDatabase db = mOpenHelper.getWritableDatabase(); 1688188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski switch (sURLMatcher.match(uri)) { 1698188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski case ALARMS: 1708188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski rowId = mOpenHelper.fixAlarmInsert(initialValues); 1718188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski break; 1728188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski case INSTANCES: 1738188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski rowId = db.insert(ClockDatabaseHelper.INSTANCES_TABLE_NAME, null, initialValues); 1748188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski break; 1758188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski case CITIES: 1768188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski rowId = db.insert(ClockDatabaseHelper.CITIES_TABLE_NAME, null, initialValues); 1778188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski break; 1788188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski default: 1798188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski throw new IllegalArgumentException("Cannot insert from URL: " + uri); 1808188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski } 1815fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project 1828188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski Uri uriResult = ContentUris.withAppendedId(ClockContract.AlarmsColumns.CONTENT_URI, rowId); 1838188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski getContext().getContentResolver().notifyChange(uriResult, null); 1848188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski return uriResult; 1855fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project } 1865fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project 1878188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski @Override 1888188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski public int delete(Uri uri, String where, String[] whereArgs) { 1895fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project int count; 1908188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski String primaryKey; 1918188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski SQLiteDatabase db = mOpenHelper.getWritableDatabase(); 1928188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski switch (sURLMatcher.match(uri)) { 1935fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project case ALARMS: 1948188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski count = db.delete(ClockDatabaseHelper.ALARMS_TABLE_NAME, where, whereArgs); 1955fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project break; 1965fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project case ALARMS_ID: 1978188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski primaryKey = uri.getLastPathSegment(); 1988188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski if (TextUtils.isEmpty(where)) { 1998188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski where = ClockContract.AlarmsColumns._ID + "=" + primaryKey; 2008188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski } else { 2018188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski where = ClockContract.AlarmsColumns._ID + "=" + primaryKey + 2028188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski " AND (" + where + ")"; 2038188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski } 2048188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski count = db.delete(ClockDatabaseHelper.ALARMS_TABLE_NAME, where, whereArgs); 2058188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski break; 2068188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski case INSTANCES: 2078188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski count = db.delete(ClockDatabaseHelper.INSTANCES_TABLE_NAME, where, whereArgs); 2088188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski break; 2098188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski case INSTANCES_ID: 2108188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski primaryKey = uri.getLastPathSegment(); 2118188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski if (TextUtils.isEmpty(where)) { 2128188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski where = ClockContract.InstancesColumns._ID + "=" + primaryKey; 2138188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski } else { 214ab0d28c68a77bea2a4a2ee50378da3670a1dd939Paul Sliwowski where = ClockContract.InstancesColumns._ID + "=" + primaryKey + 2158188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski " AND (" + where + ")"; 2168188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski } 2178188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski count = db.delete(ClockDatabaseHelper.INSTANCES_TABLE_NAME, where, whereArgs); 2188188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski break; 2198188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski case CITIES: 2208188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski count = db.delete(ClockDatabaseHelper.CITIES_TABLE_NAME, where, whereArgs); 2218188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski break; 2228188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski case CITIES_ID: 2238188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski primaryKey = uri.getLastPathSegment(); 2245fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project if (TextUtils.isEmpty(where)) { 2258188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski where = ClockContract.CitiesColumns.CITY_ID + "=" + primaryKey; 2265fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project } else { 2278188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski where = ClockContract.CitiesColumns.CITY_ID +"=" + primaryKey + 2288188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski " AND (" + where + ")"; 2295fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project } 2308188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski count = db.delete(ClockDatabaseHelper.CITIES_TABLE_NAME, where, whereArgs); 2315fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project break; 2325fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project default: 2338188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski throw new IllegalArgumentException("Cannot delete from URL: " + uri); 2345fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project } 2355fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project 2368188813bc869d3df4885f9c2972f9cc85745b59bPaul Sliwowski getContext().getContentResolver().notifyChange(uri, null); 2375fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project return count; 2385fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project } 2395fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project} 240