@Override
 public Cursor query(
     Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
   Cursor retCursor;
   switch (sUriMatcher.match(uri)) {
       // All Flavors selected
     case FAVORITE_MOVIE:
       {
         retCursor =
             mOpenHelper
                 .getReadableDatabase()
                 .query(
                     FavoriteMoviesContract.FavoriteMovieEntry.TABLE_FAVORITE_MOVIES,
                     projection,
                     selection,
                     selectionArgs,
                     null,
                     null,
                     sortOrder);
         return retCursor;
       }
       // Individual flavor based on Id selected
     case FAVORITE_MOVIE_WITH_ID:
       {
         retCursor =
             mOpenHelper
                 .getReadableDatabase()
                 .query(
                     FavoriteMoviesContract.FavoriteMovieEntry.TABLE_FAVORITE_MOVIES,
                     projection,
                     FavoriteMoviesContract.FavoriteMovieEntry._ID + " = ?",
                     new String[] {String.valueOf(ContentUris.parseId(uri))},
                     null,
                     null,
                     sortOrder);
         return retCursor;
       }
     default:
       {
         // By default, we assume a bad URI
         throw new UnsupportedOperationException("Unknown uri: " + uri);
       }
   }
 }