Exemple #1
0
  protected int performUpdateUnchecked(
      Uri uri, ContentValues values, String where, String[] whereArgs) {
    validateFields(DataColumns.ALL, values);
    removeRepoFields(values);

    QuerySelection query = new QuerySelection(where, whereArgs);
    query = query.add(querySingle(uri));

    int numRows = write().update(getTableName(), values, query.getSelection(), query.getArgs());
    if (!isApplyingBatch()) {
      getContext().getContentResolver().notifyChange(uri, null);
    }
    return numRows;
  }
Exemple #2
0
  @Override
  public Cursor query(
      Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {

    QuerySelection query = new QuerySelection(selection, selectionArgs);

    switch (matcher.match(uri)) {
      case CODE_LIST:
        break;

      case CODE_SINGLE:
        query = query.add(querySingle(uri));
        break;

      case CODE_APP:
        query = query.add(queryApp(uri.getLastPathSegment()));
        break;

      case CODE_APKS:
        query = query.add(queryApks(uri.getLastPathSegment()));
        break;

      case CODE_REPO:
        query = query.add(queryRepo(Long.parseLong(uri.getLastPathSegment())));
        break;

      case CODE_REPO_APPS:
        List<String> pathSegments = uri.getPathSegments();
        query = query.add(queryRepoApps(Long.parseLong(pathSegments.get(1)), pathSegments.get(2)));
        break;

      default:
        Log.e(TAG, "Invalid URI for apk content provider: " + uri);
        throw new UnsupportedOperationException("Invalid URI for apk content provider: " + uri);
    }

    Query queryBuilder = new Query();
    for (final String field : projection) {
      queryBuilder.addField(field);
    }
    queryBuilder.addSelection(query.getSelection());
    queryBuilder.addOrderBy(sortOrder);

    Cursor cursor = read().rawQuery(queryBuilder.toString(), query.getArgs());
    cursor.setNotificationUri(getContext().getContentResolver(), uri);
    return cursor;
  }
Exemple #3
0
  @Override
  public int delete(Uri uri, String where, String[] whereArgs) {

    QuerySelection query = new QuerySelection(where, whereArgs);

    switch (matcher.match(uri)) {
      case CODE_REPO:
        query = query.add(queryRepo(Long.parseLong(uri.getLastPathSegment())));
        break;

      case CODE_APP:
        query = query.add(queryApp(uri.getLastPathSegment()));
        break;

      case CODE_APKS:
        query = query.add(queryApks(uri.getLastPathSegment()));
        break;

        // TODO: Add tests for this.
      case CODE_REPO_APK:
        List<String> pathSegments = uri.getPathSegments();
        query =
            query
                .add(queryRepo(Long.parseLong(pathSegments.get(1))))
                .add(queryApks(pathSegments.get(2)));
        break;

      case CODE_LIST:
        throw new UnsupportedOperationException("Can't delete all apks.");

      case CODE_SINGLE:
        throw new UnsupportedOperationException("Can't delete individual apks.");

      default:
        Log.e(TAG, "Invalid URI for apk content provider: " + uri);
        throw new UnsupportedOperationException("Invalid URI for apk content provider: " + uri);
    }

    int rowsAffected = write().delete(getTableName(), query.getSelection(), query.getArgs());
    getContext().getContentResolver().notifyChange(uri, null);
    return rowsAffected;
  }