mirror of https://github.com/tasks/tasks
Convert TaskDeleter to Kotlin
parent
f8debc072f
commit
0388422553
@ -1,122 +0,0 @@
|
|||||||
package com.todoroo.astrid.service;
|
|
||||||
|
|
||||||
import static org.tasks.db.DbUtils.collect;
|
|
||||||
import static org.tasks.db.QueryUtils.removeOrder;
|
|
||||||
import static org.tasks.db.QueryUtils.showHiddenAndCompleted;
|
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableList;
|
|
||||||
import com.todoroo.astrid.api.Filter;
|
|
||||||
import com.todoroo.astrid.dao.TaskDao;
|
|
||||||
import com.todoroo.astrid.data.Task;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
|
||||||
import javax.inject.Inject;
|
|
||||||
import org.tasks.LocalBroadcastManager;
|
|
||||||
import org.tasks.data.CaldavAccount;
|
|
||||||
import org.tasks.data.CaldavCalendar;
|
|
||||||
import org.tasks.data.DeletionDao;
|
|
||||||
import org.tasks.data.GoogleTaskAccount;
|
|
||||||
import org.tasks.data.GoogleTaskDao;
|
|
||||||
import org.tasks.data.GoogleTaskList;
|
|
||||||
import org.tasks.data.TaskContainer;
|
|
||||||
import org.tasks.jobs.WorkManager;
|
|
||||||
import org.tasks.preferences.Preferences;
|
|
||||||
|
|
||||||
public class TaskDeleter {
|
|
||||||
|
|
||||||
private final WorkManager workManager;
|
|
||||||
private final TaskDao taskDao;
|
|
||||||
private final LocalBroadcastManager localBroadcastManager;
|
|
||||||
private final GoogleTaskDao googleTaskDao;
|
|
||||||
private final Preferences preferences;
|
|
||||||
private final DeletionDao deletionDao;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
public TaskDeleter(
|
|
||||||
DeletionDao deletionDao,
|
|
||||||
WorkManager workManager,
|
|
||||||
TaskDao taskDao,
|
|
||||||
LocalBroadcastManager localBroadcastManager,
|
|
||||||
GoogleTaskDao googleTaskDao,
|
|
||||||
Preferences preferences) {
|
|
||||||
this.deletionDao = deletionDao;
|
|
||||||
this.workManager = workManager;
|
|
||||||
this.taskDao = taskDao;
|
|
||||||
this.localBroadcastManager = localBroadcastManager;
|
|
||||||
this.googleTaskDao = googleTaskDao;
|
|
||||||
this.preferences = preferences;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void markDeleted(Task item) {
|
|
||||||
markDeleted(ImmutableList.of(item.getId()));
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Task> markDeleted(List<Long> taskIds) {
|
|
||||||
Set<Long> ids = new HashSet<>(taskIds);
|
|
||||||
ids.addAll(collect(taskIds, googleTaskDao::getChildren));
|
|
||||||
ids.addAll(collect(taskIds, taskDao::getChildren));
|
|
||||||
deletionDao.markDeleted(ids);
|
|
||||||
workManager.cleanup(ids);
|
|
||||||
workManager.sync(false);
|
|
||||||
localBroadcastManager.broadcastRefresh();
|
|
||||||
return collect(ids, taskDao::fetch);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void delete(Task task) {
|
|
||||||
delete(task.getId());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void delete(Long task) {
|
|
||||||
delete(ImmutableList.of(task));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void delete(List<Long> tasks) {
|
|
||||||
deletionDao.delete(tasks);
|
|
||||||
workManager.cleanup(tasks);
|
|
||||||
localBroadcastManager.broadcastRefresh();
|
|
||||||
}
|
|
||||||
|
|
||||||
public int clearCompleted(Filter filter) {
|
|
||||||
List<Long> completed = new ArrayList<>();
|
|
||||||
Filter deleteFilter = new Filter(null, null);
|
|
||||||
deleteFilter.setFilterQueryOverride(
|
|
||||||
removeOrder(showHiddenAndCompleted(filter.getOriginalSqlQuery())));
|
|
||||||
for (TaskContainer task : taskDao.fetchTasks(preferences, deleteFilter)) {
|
|
||||||
if (task.isCompleted()) {
|
|
||||||
completed.add(task.getId());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
markDeleted(completed);
|
|
||||||
return completed.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void delete(GoogleTaskList googleTaskList) {
|
|
||||||
List<Long> ids = deletionDao.delete(googleTaskList);
|
|
||||||
workManager.cleanup(ids);
|
|
||||||
localBroadcastManager.broadcastRefresh();
|
|
||||||
localBroadcastManager.broadcastRefreshList();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void delete(GoogleTaskAccount googleTaskAccount) {
|
|
||||||
List<Long> ids = deletionDao.delete(googleTaskAccount);
|
|
||||||
workManager.cleanup(ids);
|
|
||||||
localBroadcastManager.broadcastRefresh();
|
|
||||||
localBroadcastManager.broadcastRefreshList();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void delete(CaldavCalendar caldavCalendar) {
|
|
||||||
List<Long> ids = deletionDao.delete(caldavCalendar);
|
|
||||||
workManager.cleanup(ids);
|
|
||||||
localBroadcastManager.broadcastRefresh();
|
|
||||||
localBroadcastManager.broadcastRefreshList();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void delete(CaldavAccount caldavAccount) {
|
|
||||||
List<Long> ids = deletionDao.delete(caldavAccount);
|
|
||||||
workManager.cleanup(ids);
|
|
||||||
localBroadcastManager.broadcastRefresh();
|
|
||||||
localBroadcastManager.broadcastRefreshList();
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,81 @@
|
|||||||
|
package com.todoroo.astrid.service
|
||||||
|
|
||||||
|
import com.todoroo.astrid.api.Filter
|
||||||
|
import com.todoroo.astrid.dao.TaskDao
|
||||||
|
import com.todoroo.astrid.data.Task
|
||||||
|
import kotlinx.collections.immutable.persistentListOf
|
||||||
|
import org.tasks.LocalBroadcastManager
|
||||||
|
import org.tasks.data.*
|
||||||
|
import org.tasks.db.DbUtils
|
||||||
|
import org.tasks.db.QueryUtils
|
||||||
|
import org.tasks.jobs.WorkManager
|
||||||
|
import org.tasks.preferences.Preferences
|
||||||
|
import java.util.*
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
class TaskDeleter @Inject constructor(
|
||||||
|
private val deletionDao: DeletionDao,
|
||||||
|
private val workManager: WorkManager,
|
||||||
|
private val taskDao: TaskDao,
|
||||||
|
private val localBroadcastManager: LocalBroadcastManager,
|
||||||
|
private val googleTaskDao: GoogleTaskDao,
|
||||||
|
private val preferences: Preferences) {
|
||||||
|
|
||||||
|
fun markDeleted(item: Task) = markDeleted(persistentListOf(item.id))
|
||||||
|
|
||||||
|
fun markDeleted(taskIds: List<Long>): List<Task> {
|
||||||
|
val ids: MutableSet<Long> = HashSet(taskIds)
|
||||||
|
ids.addAll(DbUtils.collect(taskIds) { googleTaskDao.getChildren(it!!) })
|
||||||
|
ids.addAll(DbUtils.collect(taskIds) { taskDao.getChildren(it!!) })
|
||||||
|
deletionDao.markDeleted(ids)
|
||||||
|
workManager.cleanup(ids)
|
||||||
|
workManager.sync(false)
|
||||||
|
localBroadcastManager.broadcastRefresh()
|
||||||
|
return DbUtils.collect(ids) { taskDao.fetch(it!!) }
|
||||||
|
}
|
||||||
|
|
||||||
|
fun clearCompleted(filter: Filter): Int {
|
||||||
|
val deleteFilter = Filter(null, null)
|
||||||
|
deleteFilter.setFilterQueryOverride(
|
||||||
|
QueryUtils.removeOrder(QueryUtils.showHiddenAndCompleted(filter.originalSqlQuery)))
|
||||||
|
val completed = taskDao.fetchTasks(preferences, deleteFilter)
|
||||||
|
.filter(TaskContainer::isCompleted)
|
||||||
|
.map(TaskContainer::getId)
|
||||||
|
markDeleted(completed)
|
||||||
|
return completed.size
|
||||||
|
}
|
||||||
|
|
||||||
|
fun delete(task: Task) = delete(task.id)
|
||||||
|
|
||||||
|
fun delete(task: Long) = delete(persistentListOf(task))
|
||||||
|
|
||||||
|
fun delete(tasks: List<Long>) {
|
||||||
|
deletionDao.delete(tasks)
|
||||||
|
workManager.cleanup(tasks)
|
||||||
|
localBroadcastManager.broadcastRefresh()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun delete(list: GoogleTaskList) {
|
||||||
|
val tasks = deletionDao.delete(list)
|
||||||
|
delete(tasks)
|
||||||
|
localBroadcastManager.broadcastRefreshList()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun delete(list: GoogleTaskAccount) {
|
||||||
|
val tasks = deletionDao.delete(list)
|
||||||
|
delete(tasks)
|
||||||
|
localBroadcastManager.broadcastRefreshList()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun delete(list: CaldavCalendar) {
|
||||||
|
val tasks = deletionDao.delete(list)
|
||||||
|
delete(tasks)
|
||||||
|
localBroadcastManager.broadcastRefreshList()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun delete(list: CaldavAccount) {
|
||||||
|
val tasks = deletionDao.delete(list)
|
||||||
|
delete(tasks)
|
||||||
|
localBroadcastManager.broadcastRefreshList()
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue