示例#1
0
 @Override
 public int bulkInsert(Uri uri, ContentValues[] values) {
   final SQLiteDatabase db = mOpenHelper.getWritableDatabase();
   final int match = uriMatcher.match(uri);
   switch (match) {
     case CONTAINER:
       db.beginTransaction();
       int returnCount = 0;
       try {
         for (ContentValues value : values) {
           long _id = db.insert(RSUContract.ContainerEntry.TABLE_NAME, null, value);
           if (_id != -1) {
             returnCount++;
           }
         }
         db.setTransactionSuccessful();
       } finally {
         db.endTransaction();
       }
       getContext().getContentResolver().notifyChange(uri, null);
       return returnCount;
     default:
       return super.bulkInsert(uri, values);
   }
 }
示例#2
0
  @Override
  public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
    final SQLiteDatabase db = mOpenHelper.getWritableDatabase();
    final int match = uriMatcher.match(uri);
    int rowsUpdated;

    // this makes delete all rows return the number of rows deleted
    if (null == selection) selection = "1";
    switch (match) {
      case CONTAINER:
        rowsUpdated =
            db.update(RSUContract.ContainerEntry.TABLE_NAME, values, selection, selectionArgs);
        break;
      case TYPE:
        rowsUpdated = db.update(RSUContract.TypeEntry.TABLE_NAME, values, selection, selectionArgs);
        break;
      case LOCATION:
        rowsUpdated =
            db.update(RSUContract.LocationEntry.TABLE_NAME, values, selection, selectionArgs);
        break;
      default:
        throw new UnsupportedOperationException("Unknown uri: " + uri);
    }
    // Because a null deletes all rows
    if (rowsUpdated != 0) {
      getContext().getContentResolver().notifyChange(uri, null);
    }

    db.close();
    return rowsUpdated;
  }
示例#3
0
  /**
   * Create query to find containers by type
   *
   * @param uri
   * @param projection
   * @param sortOrder
   * @return
   */
  private Cursor getContainerByTypeSettings(Uri uri, String[] projection, String sortOrder) {
    String typeSetting = RSUContract.ContainerEntry.getTypeSettingFromUri(uri);

    // Type value ti search
    String[] selectionArgs = new String[] {typeSetting};

    // Where case for type.
    String selection = containerTypeByNameSelection;

    return containerByTypeSettingsQueryBuilder.query(
        mOpenHelper.getReadableDatabase(),
        projection,
        selection,
        selectionArgs,
        null,
        null,
        sortOrder);
  }
示例#4
0
  @Nullable
  @Override
  public Uri insert(Uri uri, ContentValues values) {
    final SQLiteDatabase db = mOpenHelper.getWritableDatabase();
    final int match = uriMatcher.match(uri);
    Uri returnUri;

    switch (match) {
      case CONTAINER:
        {
          long _id = db.insert(RSUContract.ContainerEntry.TABLE_NAME, null, values);
          if (_id > 0) returnUri = RSUContract.ContainerEntry.buildContainerUri(_id);
          else throw new android.database.SQLException("Failed to insert row into " + uri);
          break;
        }
      case TYPE:
        {
          long _id = db.insert(RSUContract.TypeEntry.TABLE_NAME, null, values);
          if (_id > 0) returnUri = RSUContract.TypeEntry.buildTypeUri(_id);
          else throw new android.database.SQLException("Failed to insert row into " + uri);
          break;
        }
      case LOCATION:
        {
          long _id = db.insert(RSUContract.LocationEntry.TABLE_NAME, null, values);
          if (_id > 0) returnUri = RSUContract.LocationEntry.buildLocationUri(_id);
          else throw new android.database.SQLException("Failed to insert row into " + uri);
          break;
        }
      default:
        throw new UnsupportedOperationException("Unknown uri: " + uri);
    }
    getContext().getContentResolver().notifyChange(uri, null);
    db.close();
    return returnUri;
  }
示例#5
0
 // You do not need to call this method. This is a method specifically to assist the testing
 // framework in running smoothly. You can read more at:
 // http://developer.android.com/reference/android/content/ContentProvider.html#shutdown()
 @Override
 @TargetApi(11)
 public void shutdown() {
   mOpenHelper.close();
   super.shutdown();
 }
示例#6
0
  @Nullable
  @Override
  public Cursor query(
      Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {

    // Here's the switch statement that, given a URI, will determine what kind of request it is,
    // and query the database accordingly.
    Cursor retCursor;
    switch (uriMatcher.match(uri)) {
        // "container"
      case CONTAINER:
        {
          retCursor =
              mOpenHelper
                  .getReadableDatabase()
                  .query(
                      RSUContract.ContainerEntry.TABLE_NAME,
                      projection,
                      selection,
                      selectionArgs,
                      null,
                      null,
                      sortOrder);
          break;
        }
        // "container/*"
      case CONTAINER_WITH_TYPE:
        {
          retCursor = getContainerByTypeSettings(uri, projection, sortOrder);
          break;
        }
        // "type"
      case TYPE:
        {
          retCursor =
              mOpenHelper
                  .getReadableDatabase()
                  .query(
                      RSUContract.TypeEntry.TABLE_NAME,
                      projection,
                      selection,
                      selectionArgs,
                      null,
                      null,
                      sortOrder);
          break;
        }
        // "location"
      case LOCATION:
        {
          retCursor =
              mOpenHelper
                  .getReadableDatabase()
                  .query(
                      RSUContract.LocationEntry.TABLE_NAME,
                      projection,
                      selection,
                      selectionArgs,
                      null,
                      null,
                      sortOrder);
          break;
        }
      default:
        throw new UnsupportedOperationException("Unknown uri: " + uri);
    }
    retCursor.setNotificationUri(getContext().getContentResolver(), uri);
    return retCursor;
  }