// Adiciona notas @Override public Uri insert(Uri uri, ContentValues values) { int uriTipo = sURIMatcher.match(uri); SQLiteDatabase sqlDB = notasDB.getWritableDatabase(); long id = 0; Uri returnUri; switch (uriTipo) { case NOTAS: // Insere no banco de dados id = sqlDB.insert(Nota.TABELA, null, values); // Adiciona o ID da nova nota no final do URI returnUri = Uri.parse(BASE_PATH + "/" + id); break; // Caso o tipo não seja válido default: throw new IllegalArgumentException("URI desconhecida: " + uri); } // Notifica as mudanças getContext().getContentResolver().notifyChange(uri, null); // Retorna um URI com o ID da nota adicionada no final return returnUri; }
// Atualiza uma nota @Override public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { int uriTipo = sURIMatcher.match(uri); SQLiteDatabase sqlDB = notasDB.getWritableDatabase(); int totalEditadas = 0; switch (uriTipo) { case NOTAS: totalEditadas = sqlDB.update(Nota.TABELA, values, selection, selectionArgs); break; case NOTAS_ID: String id = uri.getLastPathSegment(); if (TextUtils.isEmpty(selection)) { totalEditadas = sqlDB.update(Nota.TABELA, values, "_id=" + id, selectionArgs); } else { totalEditadas = sqlDB.update(Nota.TABELA, values, "_id=" + id + " and " + selection, selectionArgs); } break; default: throw new IllegalArgumentException("URI desconhecida: " + uri); } // Notifica as mudanças getContext().getContentResolver().notifyChange(uri, null); // Retorna o número de notas que foram editadas return totalEditadas; }
// Busca notas @Override public Cursor query( Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { // Construtor da query SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder(); queryBuilder.setTables(Nota.TABELA); // Descobre o tipo da URI (pode ser NOTAS(1) ou NOTAS_ID(2) int uriTipo = sURIMatcher.match(uri); switch (uriTipo) { // Busca TODAS as notas (não é necessário especificar nada dentro do case) // Exemplo: content://com.iop.listprovider.model.NotaCP/notas/ case NOTAS: break; // Busca apenas a nota com o ID especificado // Exemplo: content://com.iop.listprovider.model.NotaCP/notas/5 (5 é o ID da nota) case NOTAS_ID: queryBuilder.appendWhere(Nota.ID + "=" + uri.getLastPathSegment()); break; // Caso o tipo não seja válido default: throw new IllegalArgumentException("URI desconhecida: " + uri); } // Conexão e busca SQLiteDatabase database = notasDB.getWritableDatabase(); Cursor cursor = queryBuilder.query(database, projection, selection, selectionArgs, null, null, sortOrder); // Notifica as mudanças cursor.setNotificationUri(getContext().getContentResolver(), uri); return cursor; }