Observe o código do projeto do curso!
public void insere(Aluno aluno) {
SQLiteDatabase db = getWritableDatabase();
insereIdSeNecessario(aluno);
ContentValues dados = pegaDadosDoAluno(aluno);
db.insert("Alunos", null, dados);
}
private void insereIdSeNecessario(Aluno aluno) {
if(aluno.getId() ==null) {
aluno.setId(geraUUID());
}
}
public void sincroniza(List<Aluno> alunos) {
for (Aluno aluno :
alunos) {
if (existe(aluno)) {
altera(aluno);
} else {
insere(aluno);
}
}
}
private boolean existe(Aluno aluno) {
SQLiteDatabase db = getReadableDatabase();
String existe = "SELECT id FROM Alunos WHERE id=? LIMIT 1";
Cursor cursor = db.rawQuery(existe, new String[]{aluno.getId()});
int quantidade = cursor.getCount();
return quantidade > 0;
}
Eu estou tentando fazer com Room, no meu projeto a minha classe ListaAlunosActivity está assim;
@Override
protected void onResume() {
AlunoDAO alunoDAO;
AgendaDatabase database = AgendaDatabase.getInstance(this);
alunoDAO = database.getRoomAlunoDAO();
super.onResume();
Call<List<Aluno>> call = new RetrofitInializador().getAlunoService().lista();
call.enqueue(new Callback<List<Aluno>>() {
@Override
public void onResponse(Call<List<Aluno>> call, Response<List<Aluno>> response) {
List<Aluno> alunos = response.body();
alunoDAO.insere(alunos);
}
@Override
public void onFailure(Call<List<Aluno>> call, Throwable t) {
}
});
listaAlunosView.atualizaAlunos();
}
E minha classe AlunoDAO tentei dessa forma;
@Dao public interface AlunoDAO {
@Insert
Long salva(Aluno aluno);
@Query("SELECT * FROM Aluno")
List<Aluno> todos();
@Delete
void remove(Aluno aluno);
@Update
void edita(Aluno aluno);
@Query("SELECT * FROM Aluno")
void insere(List<Aluno> alunos);
}
Por favor quais são as alterações que deveria fazer na minha classe AlunoDAO em modelo Room poderia ficar para seguir a mesma intensão do projeto do curso?