Remove forEach dao methods

pull/618/head
Alex Baker 7 years ago
parent 3740e67455
commit 09e5fae5ca

@ -10,8 +10,6 @@ import android.content.res.Configuration;
import android.content.res.Resources;
import android.support.test.runner.AndroidJUnit4;
import com.todoroo.andlib.data.Callback;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.tasks.R;
@ -37,6 +35,10 @@ import static junit.framework.Assert.assertTrue;
@RunWith(AndroidJUnit4.class)
public class TranslationTests {
public interface Callback<T> {
void apply(T entry);
}
/**
* Loop through each locale and call runnable
*/

@ -100,13 +100,14 @@ public class GtasksListService {
}
public void deleteList(GtasksList gtasksList) {
taskListDataProvider
List<Task> tasks = taskListDataProvider
.constructCursor(new GtasksFilter(gtasksList), Task.PROPERTIES)
.forEach(task -> {
metadataDao.deleteWhere(MetadataDao.MetadataCriteria
.byTaskAndwithKey(task.getId(), GtasksMetadata.METADATA_KEY));
taskDeleter.delete(task);
});
.toList();
for (Task task : tasks) {
metadataDao.deleteWhere(MetadataDao.MetadataCriteria
.byTaskAndwithKey(task.getId(), GtasksMetadata.METADATA_KEY));
taskDeleter.delete(task);
}
storeObjectDao.delete(gtasksList.getId());
}

@ -1,5 +0,0 @@
package com.todoroo.andlib.data;
public interface Callback<T> {
void apply(T entry);
}

@ -51,23 +51,15 @@ public class TodorooCursor<TYPE extends AbstractModel> extends CursorWrapper {
}
public List<TYPE> toList() {
try {
List<TYPE> result = new ArrayList<>();
forEach(result::add);
return result;
} finally {
close();
}
}
public void forEach(Callback<TYPE> function) {
List<TYPE> result = new ArrayList<>();
try {
for (moveToFirst() ; !isAfterLast() ; moveToNext()) {
function.apply(toModel());
result.add(toModel());
}
} finally {
close();
}
return result;
}
public TYPE toModel() {

@ -13,13 +13,9 @@ import android.support.annotation.Nullable;
import android.util.Xml;
import android.widget.Toast;
import com.todoroo.astrid.dao.UserActivityDao;
import com.todoroo.astrid.data.UserActivity;
import com.todoroo.andlib.data.AbstractModel;
import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.Property.PropertyVisitor;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.sql.Order;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.DateUtilities;
@ -27,9 +23,11 @@ import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.dao.MetadataDao;
import com.todoroo.astrid.dao.TagDataDao;
import com.todoroo.astrid.dao.TaskDao;
import com.todoroo.astrid.dao.UserActivityDao;
import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.UserActivity;
import org.tasks.R;
import org.tasks.preferences.Preferences;
@ -38,6 +36,7 @@ import org.xmlpull.v1.XmlSerializer;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import javax.inject.Inject;
@ -174,26 +173,19 @@ public class TasksXmlExporter {
}
private void serializeTasks() throws IOException {
TodorooCursor<Task> cursor;
cursor = taskDao.query(Query.select(
Task.PROPERTIES).orderBy(Order.asc(Task.ID)));
try {
int length = cursor.getCount();
for(int i = 0; i < length; i++) {
cursor.moveToNext();
Task task = new Task(cursor);
setProgress(i, length);
xml.startTag(null, BackupConstants.TASK_TAG);
serializeModel(task, Task.PROPERTIES, Task.ID);
serializeMetadata(task);
serializeComments(task);
xml.endTag(null, BackupConstants.TASK_TAG);
this.exportCount++;
}
} finally {
cursor.close();
List<Task> tasks = taskDao.toList(Query.select(Task.PROPERTIES).orderBy(Order.asc(Task.ID)));
int length = tasks.size();
for(int i = 0; i < length; i++) {
Task task = tasks.get(i);
setProgress(i, length);
xml.startTag(null, BackupConstants.TASK_TAG);
serializeModel(task, Task.PROPERTIES, Task.ID);
serializeMetadata(task);
serializeComments(task);
xml.endTag(null, BackupConstants.TASK_TAG);
this.exportCount++;
}
}

@ -74,7 +74,9 @@ public class OldTaskPreferences extends InjectingPreferenceActivity {
protected Integer doInBackground(Void... params) {
Query query = Query.select(Task.ID, Task.CALENDAR_URI)
.where(Criterion.and(Task.DELETION_DATE.gt(0)));
taskDao.forEach(query, calendarEventProvider::deleteEvent);
for (Task task : taskDao.toList(query)) {
calendarEventProvider.deleteEvent(task);
}
int result = taskDao.deleteWhere(Task.DELETION_DATE.gt(0));
metadataDao.removeDanglingMetadata();
return result;

@ -10,7 +10,6 @@ import android.content.Context;
import android.database.sqlite.SQLiteConstraintException;
import com.todoroo.andlib.data.AbstractModel;
import com.todoroo.andlib.data.Callback;
import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.sql.Criterion;
@ -71,10 +70,6 @@ public class TaskDao {
return dao.query(query);
}
public void forEach(Query query, Callback<Task> callback) {
query(query).forEach(callback);
}
public List<Task> selectActive(Criterion criterion) {
return dao.toList(Query.select(Task.PROPERTIES).where(Criterion.and(TaskCriteria.isActive(), criterion)));
}

@ -173,7 +173,7 @@ public class Astrid2TaskProvider extends InjectingContentProvider {
Query query = Query.select(Task.ID, Task.TITLE, Task.IMPORTANCE, Task.DUE_DATE)
.where(Criterion.and(TaskCriteria.isActive(), TaskCriteria.isVisible()))
.orderBy(SortHelper.defaultTaskOrder()).limit(MAX_NUMBER_OF_TASKS);
taskDao.get().forEach(query, task -> {
for (Task task : taskDao.get().toList(query)) {
String taskTags = getTagsAsString(task.getId(), TAG_SEPARATOR);
Object[] values = new Object[7];
@ -186,7 +186,7 @@ public class Astrid2TaskProvider extends InjectingContentProvider {
values[6] = taskTags;
ret.addRow(values);
});
}
return ret;
}

@ -72,7 +72,9 @@ public final class ReminderService {
Query query = Query.select(NOTIFICATION_PROPERTIES).where(Criterion.and(
TaskCriteria.isActive(),
Criterion.or(Task.REMINDER_FLAGS.gt(0), Task.REMINDER_PERIOD.gt(0))));
taskDao.forEach(query, task -> scheduleAlarm(null, task));
for (Task task : taskDao.toList(query)) {
scheduleAlarm(null, task);
}
}
public void scheduleAlarm(TaskDao taskDao, Task task) {

@ -98,7 +98,7 @@ public class StartupService {
BackgroundScheduler.enqueueWork(context);
// perform startup activities in a background thread
new Thread(() -> taskDeleter.deleteTasksWithEmptyTitles(null)).start();
new Thread(() -> taskDeleter.deleteTasksWithEmptyTitles()).start();
}
private void upgrade(int from, int to) {

@ -27,14 +27,12 @@ public class TaskDeleter {
/**
* Clean up tasks. Typically called on startup
*/
void deleteTasksWithEmptyTitles(Long suppress) {
void deleteTasksWithEmptyTitles() {
Query query = Query.select(Task.ID).where(TaskDao.TaskCriteria.hasNoTitle());
taskDao.forEach(query, task -> {
for (Task task : taskDao.toList(query)) {
long id = task.getId();
if (suppress == null || suppress != id) {
taskDao.delete(id);
}
});
taskDao.delete(id);
}
}
public void delete(Task item) {
@ -69,11 +67,11 @@ public class TaskDeleter {
String query = filter.getSqlQuery()
.replace(isVisible().toString(), all.toString())
.replace(notCompleted().toString(), all.toString());
taskDao.fetchFiltered(query, Task.ID, Task.COMPLETION_DATE).forEach(task -> {
for (Task task : taskDao.fetchFiltered(query, Task.PROPERTIES).toList()) {
if (task.isCompleted()) {
completed.add(task);
}
});
}
return markDeleted(completed);
}
}

Loading…
Cancel
Save