Convert refresh query to Room

pull/618/head
Alex Baker 8 years ago
parent 2cd63f89b2
commit 198c9a4fce

@ -35,6 +35,8 @@ import java.util.concurrent.atomic.AtomicBoolean;
import timber.log.Timber; import timber.log.Timber;
import static com.todoroo.andlib.utility.DateUtilities.now;
/** /**
* Data Access layer for {@link Task}-related operations. * Data Access layer for {@link Task}-related operations.
* *
@ -60,10 +62,13 @@ public abstract class TaskDao {
this.preferences = preferences; this.preferences = preferences;
} }
public List<Task> selectActive(Criterion criterion) { public List<Task> needsRefresh() {
return query(Query.select(Task.PROPERTIES).where(Criterion.and(TaskCriteria.isActive(), criterion))).toList(); return needsRefresh(now());
} }
@android.arch.persistence.room.Query("SELECT * FROM tasks WHERE completed = 0 AND deleted = 0 AND (hideUntil > :now OR dueDate > :now)")
abstract List<Task> needsRefresh(long now);
@android.arch.persistence.room.Query("SELECT * FROM tasks WHERE _id = :id LIMIT 1") @android.arch.persistence.room.Query("SELECT * FROM tasks WHERE _id = :id LIMIT 1")
public abstract Task fetch(long id); public abstract Task fetch(long id);
@ -170,9 +175,9 @@ public abstract class TaskDao {
public ContentValues createNew(Task item) { public ContentValues createNew(Task item) {
if(!item.containsValue(Task.CREATION_DATE)) { if(!item.containsValue(Task.CREATION_DATE)) {
item.setCreationDate(DateUtilities.now()); item.setCreationDate(now());
} }
item.setModificationDate(DateUtilities.now()); item.setModificationDate(now());
// set up task defaults // set up task defaults
if(!item.containsValue(Task.IMPORTANCE)) { if(!item.containsValue(Task.IMPORTANCE)) {
@ -247,7 +252,7 @@ public abstract class TaskDao {
} }
if(!TaskApiDao.insignificantChange(values)) { if(!TaskApiDao.insignificantChange(values)) {
if(!values.containsKey(Task.MODIFICATION_DATE.name)) { if(!values.containsKey(Task.MODIFICATION_DATE.name)) {
item.setModificationDate(DateUtilities.now()); item.setModificationDate(now());
} }
} }
DatabaseChangeOp update = new DatabaseChangeOp() { DatabaseChangeOp update = new DatabaseChangeOp() {
@ -273,7 +278,7 @@ public abstract class TaskDao {
*/ */
public void setComplete(Task item, boolean completed) { public void setComplete(Task item, boolean completed) {
if(completed) { if(completed) {
item.setCompletionDate(DateUtilities.now()); item.setCompletionDate(now());
} else { } else {
item.setCompletionDate(0L); item.setCompletionDate(0L);
} }

@ -4,7 +4,6 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.astrid.dao.TaskDao; import com.todoroo.astrid.dao.TaskDao;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
@ -17,8 +16,6 @@ import javax.inject.Inject;
import timber.log.Timber; import timber.log.Timber;
import static java.lang.System.currentTimeMillis;
public class BackgroundScheduler extends InjectingJobIntentService { public class BackgroundScheduler extends InjectingJobIntentService {
public static void enqueueWork(Context context) { public static void enqueueWork(Context context) {
@ -44,8 +41,7 @@ public class BackgroundScheduler extends InjectingJobIntentService {
jobManager.scheduleMidnightRefresh(); jobManager.scheduleMidnightRefresh();
refreshScheduler.clear(); refreshScheduler.clear();
long now = currentTimeMillis(); for (Task task : taskDao.needsRefresh()) {
for (Task task : taskDao.selectActive(Criterion.or(Task.HIDE_UNTIL.gt(now), Task.DUE_DATE.gt(now)))) {
refreshScheduler.scheduleRefresh(task); refreshScheduler.scheduleRefresh(task);
} }
} }

Loading…
Cancel
Save