package com.rakuishi.todo.persistence; import android.content.Context; import java.util.List; import io.realm.Realm; import io.realm.RealmResults; public class TodoRealmManager implements TodoManager { private Realm realm; public TodoRealmManager(Context context) { realm = Realm.getInstance(context); } @Override public Todo find(int id) { return realm.where(Todo.class).equalTo("id", id).findFirst(); } @Override public List<Todo> findAll() { RealmResults<Todo> results = realm.where(Todo.class).findAll(); return results.subList(0, results.size()); } @Override public void insert(String name, boolean completed) { realm.beginTransaction(); Todo todo = realm.createObject(Todo.class); todo.setId((int) realm.where(Todo.class).maximumInt("id") + 1); todo.setName(name); todo.setCompleted(completed); realm.commitTransaction(); } @Override public void update(int id, String name, boolean completed) { realm.beginTransaction(); Todo todo = find(id); todo.setName(name); todo.setCompleted(completed); realm.commitTransaction(); } @Override public void update(Todo todo, String name) { realm.beginTransaction(); todo = realm.copyToRealm(todo); todo.setName(name); realm.commitTransaction(); } @Override public void update(Todo todo, boolean completed) { realm.beginTransaction(); todo.setCompleted(completed); realm.commitTransaction(); } @Override public void deleteCompleted() { realm.beginTransaction(); RealmResults<Todo> results = realm.where(Todo.class).equalTo("completed", true).findAll(); results.clear(); realm.commitTransaction(); } }