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