private Cursor getReviewsByMovieId(Uri uri, String[] projection, String sortOrder) { String movieId = MoviesContract.ReviewEntry.getMovieIdFromUri(uri); String[] selectionArgs = new String[] {movieId}; String selection = sMovieSelection; return sReviewByMovieIdQueryBuilder.query( moviesDbHelper.getReadableDatabase(), projection, selection, selectionArgs, null, null, sortOrder); }
@Nullable @Override public Uri insert(Uri uri, ContentValues values) { final SQLiteDatabase db = moviesDbHelper.getWritableDatabase(); final int match = sUriMatcher.match(uri); Uri returnUri; switch (match) { case MOVIE: { long _id = db.insert(MoviesContract.MovieEntry.TABLE_NAME, null, values); if (_id > 0) { returnUri = MoviesContract.MovieEntry.buildMovieUri(_id); } else { throw new SQLException("Failed to insert row into " + uri); } break; } case REVIEW: { long _id = db.insert(MoviesContract.ReviewEntry.TABLE_NAME, null, values); if (_id > 0) { returnUri = MoviesContract.ReviewEntry.buildReviewUri(_id); } else { throw new SQLException("Failed to insert row into " + uri); } break; } case TRAILER: { long _id = db.insert(MoviesContract.TrailerEntry.TABLE_NAME, null, values); if (_id > 0) { returnUri = MoviesContract.TrailerEntry.buildTrailerUri(_id); } else { throw new SQLException("Failed to insert row into " + uri); } break; } default: throw new UnsupportedOperationException("Unknown uri: " + uri); } getContext().getContentResolver().notifyChange(uri, null); return returnUri; }
@Nullable @Override public Cursor query( Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { Cursor retCursor; switch (sUriMatcher.match(uri)) { case MOVIE: { retCursor = moviesDbHelper .getReadableDatabase() .query( MoviesContract.MovieEntry.TABLE_NAME, projection, selection, selectionArgs, null, null, sortOrder); break; } case MOVIE_WITH_ID: { String movieId = MoviesContract.ReviewEntry.getMovieIdFromUri(uri); selectionArgs = new String[] {movieId}; selection = sMovieSelection; retCursor = moviesDbHelper .getReadableDatabase() .query( MoviesContract.MovieEntry.TABLE_NAME, projection, selection, selectionArgs, null, null, sortOrder); break; } case TRAILER: { retCursor = getTrailersByMovieId(uri, projection, sortOrder); break; } case REVIEW: { retCursor = getReviewsByMovieId(uri, projection, sortOrder); break; } case REVIEW_WITH_ID: { String movieId = MoviesContract.ReviewEntry.getMovieIdFromUri(uri); retCursor = sReviewByMovieIdQueryBuilder.query( moviesDbHelper.getReadableDatabase(), projection, sMovieSelection, new String[] {movieId}, null, null, sortOrder); break; } case TRAILER_WITH_ID: { String movieId = MoviesContract.TrailerEntry.getMovieIdFromUri(uri); retCursor = sTrailerByMovieIdQueryBuilder.query( moviesDbHelper.getReadableDatabase(), projection, sMovieSelection, new String[] {movieId}, null, null, sortOrder); break; } default: throw new UnsupportedOperationException("Unknown uri: " + uri); } retCursor.setNotificationUri(getContext().getContentResolver(), uri); return retCursor; }