public override int Update(Uri uri, ContentValues values, string selection, string[] selectionArgs)
        {
            if (LOGV)
            {
                Log.Verbose(TAG, "update(uri=" + uri + ", values=" + values.ToString() + ")");
            }
            SQLiteDatabase   db      = mOpenHelper.WritableDatabase;
            SelectionBuilder builder = BuildSimpleSelection(uri);
            int retVal = builder.Where(selection, selectionArgs).Update(db, values);

            Context.ContentResolver.NotifyChange(uri, null);
            return(retVal);
        }
        public override Uri Insert(Uri uri, ContentValues values)
        {
            if (LOGV)
            {
                Log.Verbose(TAG, "insert(uri=" + uri + ", values=" + values.ToString() + ")");
            }
            SQLiteDatabase db    = mOpenHelper.WritableDatabase;
            int            match = sUriMatcher.Match(uri);

            switch (match)
            {
            case BLOCKS: {
                db.InsertOrThrow(ScheduleDatabase.Tables.BLOCKS, null, values);
                Context.ContentResolver.NotifyChange(uri, null);
                return(ScheduleContract.Blocks.BuildBlockUri(values.GetAsString(ScheduleContract.Blocks.BLOCK_ID)));
            }

            case TRACKS: {
                db.InsertOrThrow(ScheduleDatabase.Tables.TRACKS, null, values);
                Context.ContentResolver.NotifyChange(uri, null);
                return(ScheduleContract.Tracks.BuildTrackUri(values.GetAsString(ScheduleContract.Tracks.TRACK_ID)));
            }

            case ROOMS: {
                db.InsertOrThrow(ScheduleDatabase.Tables.ROOMS, null, values);
                Context.ContentResolver.NotifyChange(uri, null);
                return(ScheduleContract.Rooms.BuildRoomUri(values.GetAsString(ScheduleContract.Rooms.ROOM_ID)));
            }

            case SESSIONS: {
                db.InsertOrThrow(ScheduleDatabase.Tables.SESSIONS, null, values);
                Context.ContentResolver.NotifyChange(uri, null);
                return(ScheduleContract.Sessions.BuildSessionUri(values.GetAsString(ScheduleContract.Sessions.SESSION_ID)));
            }

            case SESSIONS_ID_SPEAKERS: {
                db.InsertOrThrow(ScheduleDatabase.Tables.SESSIONS_SPEAKERS, null, values);
                Context.ContentResolver.NotifyChange(uri, null);
                return(ScheduleContract.Speakers.BuildSpeakerUri(values.GetAsString(ScheduleDatabase.SessionsSpeakers.SPEAKER_ID)));
            }

            case SESSIONS_ID_TRACKS: {
                db.InsertOrThrow(ScheduleDatabase.Tables.SESSIONS_TRACKS, null, values);
                Context.ContentResolver.NotifyChange(uri, null);
                return(ScheduleContract.Tracks.BuildTrackUri(values.GetAsString(ScheduleDatabase.SessionsTracks.TRACK_ID)));
            }

            case SPEAKERS: {
                db.InsertOrThrow(ScheduleDatabase.Tables.SPEAKERS, null, values);
                Context.ContentResolver.NotifyChange(uri, null);
                return(ScheduleContract.Speakers.BuildSpeakerUri(values.GetAsString(ScheduleContract.Speakers.SPEAKER_ID)));
            }

            case VENDORS: {
                db.InsertOrThrow(ScheduleDatabase.Tables.VENDORS, null, values);
                Context.ContentResolver.NotifyChange(uri, null);
                return(ScheduleContract.Vendors.BuildVendorUri(values.GetAsString(ScheduleContract.Vendors.VENDOR_ID)));
            }

            case SEARCH_SUGGEST: {
                db.InsertOrThrow(ScheduleDatabase.Tables.SEARCH_SUGGEST, null, values);
                Context.ContentResolver.NotifyChange(uri, null);
                return(ScheduleContract.SearchSuggest.CONTENT_URI);
            }

            default: {
                throw new Exception("Unknown uri: " + uri);
            }
            }
        }