From e70686068dea7cbb11e435689b49c1969d118a16 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Thu, 9 Nov 2017 17:05:05 -0600 Subject: [PATCH] Remove dao query callbacks --- .../astrid/gtasks/GtasksTaskListUpdater.java | 3 +- .../astrid/gtasks/sync/GtasksSyncService.java | 4 +-- .../tasks/gtasks/GoogleTaskSyncAdapter.java | 4 +-- .../com/todoroo/andlib/data/DatabaseDao.java | 4 --- .../todoroo/astrid/alarms/AlarmService.java | 29 +++++++++++-------- .../astrid/backup/TasksXmlExporter.java | 8 ++--- .../com/todoroo/astrid/dao/MetadataDao.java | 20 ++----------- .../com/todoroo/astrid/dao/TagDataDao.java | 16 +++++----- .../todoroo/astrid/dao/TaskAttachmentDao.java | 8 ++--- .../java/com/todoroo/astrid/dao/TaskDao.java | 4 +-- .../todoroo/astrid/files/FilesControlSet.java | 4 +-- .../com/todoroo/astrid/tags/TagService.java | 12 ++++---- .../todoroo/astrid/ui/ReminderControlSet.java | 5 +++- .../org/tasks/location/GeofenceService.java | 4 +-- .../tasks/scheduling/BackgroundScheduler.java | 6 ++-- 15 files changed, 59 insertions(+), 72 deletions(-) diff --git a/app/src/googleplay/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdater.java b/app/src/googleplay/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdater.java index 50d9edf0b..7147f5de5 100644 --- a/app/src/googleplay/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdater.java +++ b/app/src/googleplay/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdater.java @@ -88,7 +88,7 @@ public class GtasksTaskListUpdater { GtasksMetadata.LIST_ID.eq(listId), GtasksMetadata.PARENT_TASK.eq(parent))) .orderBy(Order.asc(Functions.cast(GtasksMetadata.GTASKS_ORDER, "INTEGER"))); - metadataDao.query(query, curr -> { + for (Metadata curr : metadataDao.toList(query)) { if (!alreadyChecked.contains(curr.getTask())) { curr.setValue(GtasksMetadata.INDENT, indentLevel); curr.setValue(GtasksMetadata.ORDER, order.getAndIncrement()); @@ -98,7 +98,6 @@ public class GtasksTaskListUpdater { orderAndIndentHelper(listId, order, curr.getTask(), indentLevel + 1, alreadyChecked); } } - ); } void updateParentSiblingMapsFor(GtasksList list) { diff --git a/app/src/googleplay/java/com/todoroo/astrid/gtasks/sync/GtasksSyncService.java b/app/src/googleplay/java/com/todoroo/astrid/gtasks/sync/GtasksSyncService.java index 80b2de23e..cd7618066 100644 --- a/app/src/googleplay/java/com/todoroo/astrid/gtasks/sync/GtasksSyncService.java +++ b/app/src/googleplay/java/com/todoroo/astrid/gtasks/sync/GtasksSyncService.java @@ -179,13 +179,13 @@ public class GtasksSyncService { startAtCriterion)). orderBy(order); - metadataDao.query(query, entry -> { + for (Metadata entry : metadataDao.toList(query)) { long taskId = entry.getValue(Metadata.TASK); Metadata metadata = metadataDao.getFirstActiveByTaskAndKey(taskId, GtasksMetadata.METADATA_KEY); if(metadata != null) { iterator.processTask(taskId, metadata); } - }); + } } /** diff --git a/app/src/googleplay/java/org/tasks/gtasks/GoogleTaskSyncAdapter.java b/app/src/googleplay/java/org/tasks/gtasks/GoogleTaskSyncAdapter.java index f20e441cd..38578f9d6 100644 --- a/app/src/googleplay/java/org/tasks/gtasks/GoogleTaskSyncAdapter.java +++ b/app/src/googleplay/java/org/tasks/gtasks/GoogleTaskSyncAdapter.java @@ -428,7 +428,7 @@ public class GoogleTaskSyncAdapter extends InjectingAbstractThreadedSyncAdapter newMetadataValues.add(metadatum.getMergedValues()); } - metadataDao.byTaskAndKey(taskId, metadataKey, item -> { + for (Metadata item : metadataDao.byTaskAndKey(taskId, metadataKey)) { long id = item.getId(); // clear item id when matching with incoming values @@ -440,7 +440,7 @@ public class GoogleTaskSyncAdapter extends InjectingAbstractThreadedSyncAdapter // not matched. cut it metadataDao.delete(id); } - }); + } // everything that remains shall be written for(ContentValues values : newMetadataValues) { diff --git a/app/src/main/java/com/todoroo/andlib/data/DatabaseDao.java b/app/src/main/java/com/todoroo/andlib/data/DatabaseDao.java index fd9d7053a..c795d405e 100644 --- a/app/src/main/java/com/todoroo/andlib/data/DatabaseDao.java +++ b/app/src/main/java/com/todoroo/andlib/data/DatabaseDao.java @@ -55,10 +55,6 @@ public class DatabaseDao { return query(query).toList(); } - public void query(Query query, Callback callback) { - query(query).forEach(callback); - } - public TYPE getFirst(Query query) { return query(query).first(); } diff --git a/app/src/main/java/com/todoroo/astrid/alarms/AlarmService.java b/app/src/main/java/com/todoroo/astrid/alarms/AlarmService.java index 4d95afb6b..e9124c978 100644 --- a/app/src/main/java/com/todoroo/astrid/alarms/AlarmService.java +++ b/app/src/main/java/com/todoroo/astrid/alarms/AlarmService.java @@ -7,7 +7,6 @@ package com.todoroo.astrid.alarms; import android.content.ContentValues; -import com.todoroo.andlib.data.Callback; import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.sql.Join; import com.todoroo.andlib.sql.Order; @@ -60,14 +59,16 @@ public class AlarmService { } final Set alarms = new LinkedHashSet<>(); - getAlarms(taskId, metadata -> alarms.add(metadata.getValue(AlarmFields.TIME) + (newDueDate - oldDueDate))); + for (Metadata metadata : getAlarms(taskId)) { + alarms.add(metadata.getValue(AlarmFields.TIME) + (newDueDate - oldDueDate)); + } if (!alarms.isEmpty()) { synchronizeAlarms(taskId, alarms); } } - public void getAlarms(long taskId, Callback callback) { - metadataDao.query(callback, Query.select( + public List getAlarms(long taskId) { + return metadataDao.toList(Query.select( Metadata.PROPERTIES).where(MetadataCriteria.byTaskAndwithKey( taskId, AlarmFields.METADATA_KEY)).orderBy(Order.asc(AlarmFields.TIME))); } @@ -96,16 +97,16 @@ public class AlarmService { // --- alarm scheduling - private void getActiveAlarms(Callback callback) { - metadataDao.query(callback, Query.select(Metadata.PROPERTIES). + private List getActiveAlarms() { + return metadataDao.toList(Query.select(Metadata.PROPERTIES). join(Join.inner(Task.TABLE, Metadata.TASK.eq(Task.ID))). where(Criterion.and(TaskCriteria.isActive(), Task.REMINDER_LAST.lt(AlarmFields.TIME), MetadataCriteria.withKey(AlarmFields.METADATA_KEY)))); } - private void getActiveAlarmsForTask(long taskId, Callback callback) { - metadataDao.query(callback, Query.select(Metadata.PROPERTIES). + private List getActiveAlarmsForTask(long taskId) { + return metadataDao.toList(Query.select(Metadata.PROPERTIES). join(Join.inner(Task.TABLE, Metadata.TASK.eq(Task.ID))). where(Criterion.and(TaskCriteria.isActive(), Task.REMINDER_LAST.lt(AlarmFields.TIME), @@ -116,14 +117,18 @@ public class AlarmService { * Schedules all alarms */ public void scheduleAllAlarms() { - getActiveAlarms(this::scheduleAlarm); + for (Metadata metadata : getActiveAlarms()) { + scheduleAlarm(metadata); + } } /** * Schedules alarms for a single task */ private void scheduleAlarms(long taskId) { - getActiveAlarmsForTask(taskId, this::scheduleAlarm); + for (Metadata metadata : getActiveAlarmsForTask(taskId)) { + scheduleAlarm(metadata); + } } /** @@ -161,7 +166,7 @@ public class AlarmService { newMetadataValues.add(values); } - metadataDao.byTaskAndKey(taskId, AlarmFields.METADATA_KEY, item -> { + for (Metadata item : metadataDao.byTaskAndKey(taskId, AlarmFields.METADATA_KEY)) { long id = item.getId(); // clear item id when matching with incoming values @@ -180,7 +185,7 @@ public class AlarmService { metadataDao.delete(id); dirty[0] = true; } - }); + } // everything that remains shall be written for(ContentValues values : newMetadataValues) { diff --git a/app/src/main/java/com/todoroo/astrid/backup/TasksXmlExporter.java b/app/src/main/java/com/todoroo/astrid/backup/TasksXmlExporter.java index d19004c39..5c35c52d8 100755 --- a/app/src/main/java/com/todoroo/astrid/backup/TasksXmlExporter.java +++ b/app/src/main/java/com/todoroo/astrid/backup/TasksXmlExporter.java @@ -162,7 +162,7 @@ public class TasksXmlExporter { } private void serializeTagDatas() { - tagDataDao.allTags(tag -> { + for (TagData tag : tagDataDao.allTags()) { try { xml.startTag(null, BackupConstants.TAGDATA_TAG); serializeModel(tag, TagData.PROPERTIES, TagData.ID); @@ -170,7 +170,7 @@ public class TasksXmlExporter { } catch(IOException e) { throw new RuntimeException(e); } - }); + } } private void serializeTasks() throws IOException { @@ -214,7 +214,7 @@ public class TasksXmlExporter { } private synchronized void serializeMetadata(Task task) { - metadataDao.byTask(task.getId(), metadata -> { + for (Metadata metadata : metadataDao.byTask(task.getId())) { try { xml.startTag(null, BackupConstants.METADATA_TAG); serializeModel(metadata, Metadata.PROPERTIES, Metadata.ID, Metadata.TASK); @@ -222,7 +222,7 @@ public class TasksXmlExporter { } catch (IOException e) { throw new RuntimeException(e); } - }); + } } /** diff --git a/app/src/main/java/com/todoroo/astrid/dao/MetadataDao.java b/app/src/main/java/com/todoroo/astrid/dao/MetadataDao.java index d7c6e6ec7..b7c6491f7 100644 --- a/app/src/main/java/com/todoroo/astrid/dao/MetadataDao.java +++ b/app/src/main/java/com/todoroo/astrid/dao/MetadataDao.java @@ -5,7 +5,6 @@ */ package com.todoroo.astrid.dao; -import com.todoroo.andlib.data.Callback; import com.todoroo.andlib.data.DatabaseDao; import com.todoroo.andlib.data.Property; import com.todoroo.andlib.sql.Criterion; @@ -37,12 +36,8 @@ public class MetadataDao { dao = new DatabaseDao<>(database, Metadata.class); } - public void query(Callback callback, Query query) { - query(query, callback); - } - - public void query(Query query, Callback callback) { - dao.query(query, callback); + public List query(Query query) { + return dao.toList(query); } public Metadata getFirst(Query query) { @@ -141,20 +136,9 @@ public class MetadataDao { return toList(MetadataCriteria.byTask(taskId)); } - public void byTask(long taskId, Callback callback) { - Query query = Query.select(Metadata.PROPERTIES).where(Metadata.TASK.eq(taskId)); - dao.query(query, callback); - } - public List byTaskAndKey(long taskId, String key) { return dao.toList(Query.select(Metadata.PROPERTIES).where( Criterion.and(Metadata.TASK.eq(taskId), Metadata.KEY.eq(key)))); } - - public void byTaskAndKey(long taskId, String key, Callback callback) { - Query query = Query.select(Metadata.PROPERTIES) - .where(Criterion.and(Metadata.TASK.eq(taskId), Metadata.KEY.eq(key))); - dao.query(query, callback); - } } diff --git a/app/src/main/java/com/todoroo/astrid/dao/TagDataDao.java b/app/src/main/java/com/todoroo/astrid/dao/TagDataDao.java index 0120683a5..7ae774429 100644 --- a/app/src/main/java/com/todoroo/astrid/dao/TagDataDao.java +++ b/app/src/main/java/com/todoroo/astrid/dao/TagDataDao.java @@ -16,6 +16,8 @@ import com.todoroo.astrid.data.TagData; import org.tasks.injection.ApplicationScope; +import java.util.List; + import javax.inject.Inject; /** @@ -37,12 +39,11 @@ public class TagDataDao { return dao.getFirst(Query.select(properties).where(TagData.NAME.eqCaseInsensitive(name))); } - public void allTags(Callback callback) { + public List allTags() { // TODO: does this need to be ordered? - Query query = Query.select(TagData.PROPERTIES) + return dao.toList(Query.select(TagData.PROPERTIES) .where(TagData.DELETION_DATE.eq(0)) - .orderBy(Order.asc(TagData.ID)); - dao.query(query, callback); + .orderBy(Order.asc(TagData.ID))); } public TagData getByUuid(String uuid) { @@ -53,12 +54,11 @@ public class TagDataDao { return dao.getFirst(Query.select(properties).where(TagData.UUID.eq(uuid))); } - public void tagDataOrderedByName(Callback callback) { - Query query = Query.select(TagData.PROPERTIES).where(Criterion.and( + public List tagDataOrderedByName() { + return dao.toList(Query.select(TagData.PROPERTIES).where(Criterion.and( TagData.DELETION_DATE.eq(0), TagData.NAME.isNotNull())) - .orderBy(Order.asc(Functions.upper(TagData.NAME))); - dao.query(query, callback); + .orderBy(Order.asc(Functions.upper(TagData.NAME)))); } public void persist(TagData tagData) { diff --git a/app/src/main/java/com/todoroo/astrid/dao/TaskAttachmentDao.java b/app/src/main/java/com/todoroo/astrid/dao/TaskAttachmentDao.java index 377a8f78e..a977d078f 100644 --- a/app/src/main/java/com/todoroo/astrid/dao/TaskAttachmentDao.java +++ b/app/src/main/java/com/todoroo/astrid/dao/TaskAttachmentDao.java @@ -5,12 +5,13 @@ */ package com.todoroo.astrid.dao; -import com.todoroo.andlib.data.Callback; import com.todoroo.andlib.data.Property; import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.sql.Query; import com.todoroo.astrid.data.TaskAttachment; +import java.util.List; + import javax.inject.Inject; public class TaskAttachmentDao { @@ -26,9 +27,8 @@ public class TaskAttachmentDao { return dao.count(byUuid(taskUuid, TaskAttachment.TASK_UUID).limit(1)) > 0; } - public void getAttachments(String taskUuid, Callback callback) { - Query query = byUuid(taskUuid, TaskAttachment.PROPERTIES); - dao.query(query, callback); + public List getAttachments(String taskUuid) { + return dao.toList(byUuid(taskUuid, TaskAttachment.PROPERTIES)); } private static Query byUuid(String taskUuid, Property... properties) { diff --git a/app/src/main/java/com/todoroo/astrid/dao/TaskDao.java b/app/src/main/java/com/todoroo/astrid/dao/TaskDao.java index 2490346b3..9f3a75be5 100644 --- a/app/src/main/java/com/todoroo/astrid/dao/TaskDao.java +++ b/app/src/main/java/com/todoroo/astrid/dao/TaskDao.java @@ -75,8 +75,8 @@ public class TaskDao { query(query).forEach(callback); } - public void selectActive(Criterion criterion, Callback callback) { - dao.query(Query.select(Task.PROPERTIES).where(Criterion.and(TaskCriteria.isActive(), criterion)), callback); + public List selectActive(Criterion criterion) { + return dao.toList(Query.select(Task.PROPERTIES).where(Criterion.and(TaskCriteria.isActive(), criterion))); } public Task fetch(long id) { diff --git a/app/src/main/java/com/todoroo/astrid/files/FilesControlSet.java b/app/src/main/java/com/todoroo/astrid/files/FilesControlSet.java index 6af402162..2e3275566 100644 --- a/app/src/main/java/com/todoroo/astrid/files/FilesControlSet.java +++ b/app/src/main/java/com/todoroo/astrid/files/FilesControlSet.java @@ -73,10 +73,10 @@ public class FilesControlSet extends TaskEditControlFragment { } final List files = new ArrayList<>(); - taskAttachmentDao.getAttachments(taskUuid, attachment -> { + for (TaskAttachment attachment : taskAttachmentDao.getAttachments(taskUuid)) { files.add(attachment); addAttachment(attachment); - }); + } validateFiles(files); return view; } diff --git a/app/src/main/java/com/todoroo/astrid/tags/TagService.java b/app/src/main/java/com/todoroo/astrid/tags/TagService.java index fb19ffd4b..d7047ebe2 100644 --- a/app/src/main/java/com/todoroo/astrid/tags/TagService.java +++ b/app/src/main/java/com/todoroo/astrid/tags/TagService.java @@ -70,12 +70,12 @@ public final class TagService { MetadataCriteria.withKey(TaskToTagMetadata.KEY))). orderBy(order).groupBy(TaskToTagMetadata.TAG_NAME); final List array = new ArrayList<>(); - metadataDao.query(query, metadata -> { + for (Metadata metadata : metadataDao.query(query)) { TagData tag = tagFromUUID(metadata.getValue(TaskToTagMetadata.TAG_UUID)); if (tag != null) { array.add(tag); } - }); + } return array.toArray(new TagData[array.size()]); } @@ -109,9 +109,9 @@ public final class TagService { MetadataCriteria.byTask(taskId))) .orderBy(Order.asc(Functions.upper(TaskToTagMetadata.TAG_NAME))); final ArrayList tagNames = new ArrayList<>(); - metadataDao.query(query, entry -> { + for (Metadata entry : metadataDao.query(query)) { tagNames.add(entry.getValue(TaskToTagMetadata.TAG_NAME)); - }); + } return tagNames; } @@ -120,11 +120,11 @@ public final class TagService { */ public List getTagList() { final List tagList = new ArrayList<>(); - tagDataDao.tagDataOrderedByName(tagData -> { + for (TagData tagData : tagDataDao.tagDataOrderedByName()) { if (!TextUtils.isEmpty(tagData.getName())) { tagList.add(tagData); } - }); + } return tagList; } diff --git a/app/src/main/java/com/todoroo/astrid/ui/ReminderControlSet.java b/app/src/main/java/com/todoroo/astrid/ui/ReminderControlSet.java index 12b47461d..b2cf9c187 100644 --- a/app/src/main/java/com/todoroo/astrid/ui/ReminderControlSet.java +++ b/app/src/main/java/com/todoroo/astrid/ui/ReminderControlSet.java @@ -25,6 +25,7 @@ import com.google.common.primitives.Longs; import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.astrid.alarms.AlarmFields; import com.todoroo.astrid.alarms.AlarmService; +import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Task; import org.tasks.R; @@ -140,7 +141,9 @@ public class ReminderControlSet extends TaskEditControlFragment { private List currentAlarms() { final List alarms = new ArrayList<>(); - alarmService.getAlarms(taskId, entry -> alarms.add(entry.getValue(AlarmFields.TIME))); + for (Metadata entry : alarmService.getAlarms(taskId)) { + alarms.add(entry.getValue(AlarmFields.TIME)); + } return alarms; } diff --git a/app/src/main/java/org/tasks/location/GeofenceService.java b/app/src/main/java/org/tasks/location/GeofenceService.java index a360fc3d5..7b618793a 100644 --- a/app/src/main/java/org/tasks/location/GeofenceService.java +++ b/app/src/main/java/org/tasks/location/GeofenceService.java @@ -105,7 +105,7 @@ public class GeofenceService { newMetadataValues.add(values); } - metadataDao.byTaskAndKey(taskId, GeofenceFields.METADATA_KEY, item -> { + for (Metadata item : metadataDao.byTaskAndKey(taskId, GeofenceFields.METADATA_KEY)) { long id = item.getId(); // clear item id when matching with incoming values @@ -124,7 +124,7 @@ public class GeofenceService { metadataDao.delete(id); dirty[0] = true; } - }); + } // everything that remains shall be written for(ContentValues values : newMetadataValues) { diff --git a/app/src/main/java/org/tasks/scheduling/BackgroundScheduler.java b/app/src/main/java/org/tasks/scheduling/BackgroundScheduler.java index 7953f2353..2d1520c0e 100644 --- a/app/src/main/java/org/tasks/scheduling/BackgroundScheduler.java +++ b/app/src/main/java/org/tasks/scheduling/BackgroundScheduler.java @@ -45,9 +45,9 @@ public class BackgroundScheduler extends InjectingJobIntentService { refreshScheduler.clear(); long now = currentTimeMillis(); - taskDao.selectActive( - Criterion.or(Task.HIDE_UNTIL.gt(now), Task.DUE_DATE.gt(now)), - refreshScheduler::scheduleRefresh); + for (Task task : taskDao.selectActive(Criterion.or(Task.HIDE_UNTIL.gt(now), Task.DUE_DATE.gt(now)))) { + refreshScheduler.scheduleRefresh(task); + } } @Override