示例#1
0
  @Override
  public Cursor query(
      Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
    Cursor retCursor;
    switch (uriMatcher.match(uri)) {
      case BOOK:
        retCursor =
            dbHelper
                .getReadableDatabase()
                .query(
                    com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.BookEntry
                        .TABLE_NAME,
                    projection,
                    selection,
                    selection == null ? null : selectionArgs,
                    null,
                    null,
                    sortOrder);
        break;
      case AUTHOR:
        retCursor =
            dbHelper
                .getReadableDatabase()
                .query(
                    com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.AuthorEntry
                        .TABLE_NAME,
                    projection,
                    selection,
                    selectionArgs,
                    null,
                    null,
                    sortOrder);
        break;
      case CATEGORY:
        retCursor =
            dbHelper
                .getReadableDatabase()
                .query(
                    com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.CategoryEntry
                        .TABLE_NAME,
                    projection,
                    selection,
                    selectionArgs,
                    null,
                    null,
                    sortOrder);
        break;
      case BOOK_ID:
        retCursor =
            dbHelper
                .getReadableDatabase()
                .query(
                    com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.BookEntry
                        .TABLE_NAME,
                    projection,
                    com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.BookEntry._ID
                        + " = '"
                        + ContentUris.parseId(uri)
                        + "'",
                    selectionArgs,
                    null,
                    null,
                    sortOrder);
        break;
      case AUTHOR_ID:
        retCursor =
            dbHelper
                .getReadableDatabase()
                .query(
                    com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.AuthorEntry
                        .TABLE_NAME,
                    projection,
                    com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.AuthorEntry._ID
                        + " = '"
                        + ContentUris.parseId(uri)
                        + "'",
                    selectionArgs,
                    null,
                    null,
                    sortOrder);
        break;
      case CATEGORY_ID:
        retCursor =
            dbHelper
                .getReadableDatabase()
                .query(
                    com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.CategoryEntry
                        .TABLE_NAME,
                    projection,
                    com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.CategoryEntry._ID
                        + " = '"
                        + ContentUris.parseId(uri)
                        + "'",
                    selectionArgs,
                    null,
                    null,
                    sortOrder);
        break;
      case BOOK_FULLDETAIL:
        String[] bfd_projection = {
          com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.BookEntry.TABLE_NAME
              + "."
              + AlexandriaContract.BookEntry._ID,
          com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.BookEntry.TABLE_NAME
              + "."
              + com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.BookEntry.TITLE,
          com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.BookEntry.TABLE_NAME
              + "."
              + com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.BookEntry.SUBTITLE,
          com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.BookEntry.TABLE_NAME
              + "."
              + com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.BookEntry.IMAGE_URL,
          com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.BookEntry.TABLE_NAME
              + "."
              + com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.BookEntry.DESC,
          "group_concat(DISTINCT "
              + com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.AuthorEntry.TABLE_NAME
              + "."
              + com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.AuthorEntry.AUTHOR
              + ") as "
              + com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.AuthorEntry.AUTHOR,
          "group_concat(DISTINCT "
              + com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.CategoryEntry.TABLE_NAME
              + "."
              + com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.CategoryEntry.CATEGORY
              + ") as "
              + com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.CategoryEntry.CATEGORY
        };
        retCursor =
            bookFull.query(
                dbHelper.getReadableDatabase(),
                bfd_projection,
                com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.BookEntry.TABLE_NAME
                    + "."
                    + com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.BookEntry._ID
                    + " = '"
                    + ContentUris.parseId(uri)
                    + "'",
                selectionArgs,
                com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.BookEntry.TABLE_NAME
                    + "."
                    + com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.BookEntry._ID,
                null,
                sortOrder);
        break;
      case BOOK_FULL:
        String[] bf_projection = {
          com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.BookEntry.TABLE_NAME
              + "."
              + com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.BookEntry.TITLE,
          com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.BookEntry.TABLE_NAME
              + "."
              + com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.BookEntry.IMAGE_URL,
          "group_concat(DISTINCT "
              + com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.AuthorEntry.TABLE_NAME
              + "."
              + com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.AuthorEntry.AUTHOR
              + ") as "
              + com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.AuthorEntry.AUTHOR,
          "group_concat(DISTINCT "
              + com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.CategoryEntry.TABLE_NAME
              + "."
              + com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.CategoryEntry.CATEGORY
              + ") as "
              + com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.CategoryEntry.CATEGORY
        };
        retCursor =
            bookFull.query(
                dbHelper.getReadableDatabase(),
                bf_projection,
                null,
                selectionArgs,
                com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.BookEntry.TABLE_NAME
                    + "."
                    + com.awesome.byunghwa.app.alexandria.data.AlexandriaContract.BookEntry._ID,
                null,
                sortOrder);
        break;
      default:
        throw new UnsupportedOperationException("Unknown uri: " + uri);
    }

    retCursor.setNotificationUri(getContext().getContentResolver(), uri);

    return retCursor;
  }