Fix subtasks after importing backup file

gtask_related_email
Alex Baker 5 years ago
parent b5a85e44bb
commit c91ebff147

@ -3,7 +3,6 @@ package com.todoroo.astrid.service;
import static com.google.common.base.Strings.isNullOrEmpty;
import static com.google.common.collect.Iterables.transform;
import static com.google.common.collect.Lists.newArrayList;
import static com.google.common.collect.Sets.newHashSet;
import static org.tasks.caldav.CaldavUtils.applyRelatedTo;
import static org.tasks.db.DbUtils.batch;
@ -130,10 +129,7 @@ public class Upgrader {
}
caldavDao.update(updated);
for (String calendar : newHashSet(transform(updated, CaldavTask::getCalendar))) {
caldavDao.updateParents(calendar);
}
caldavDao.updateParents();
}
private void applyCaldavCategories() {

@ -236,6 +236,10 @@ public class TasksJsonImporter {
}
importCount++;
}
googleTaskDao.updateParents();
caldavDao.updateParents();
for (Entry<String, Integer> entry : backupContainer.getIntPrefs().entrySet()) {
preferences.setInt(entry.getKey(), entry.getValue());
}

@ -123,6 +123,17 @@ public abstract class CaldavDao {
+ "GROUP BY tasks._id")
public abstract List<Long> getTasksWithTags();
@Query(
"UPDATE caldav_tasks"
+ " SET cd_parent = IFNULL(("
+ " SELECT cd_task FROM caldav_tasks AS p "
+ " WHERE p.cd_remote_id = caldav_tasks.cd_remote_parent"
+ " AND p.cd_calendar = caldav_tasks.cd_calendar"
+ " AND p.cd_deleted = 0),"
+ " 0)"
+ " WHERE cd_remote_parent IS NOT NULL AND cd_remote_parent != ''")
public abstract void updateParents();
@Query("UPDATE caldav_tasks SET cd_parent = IFNULL((SELECT cd_task FROM caldav_tasks AS p WHERE p.cd_remote_id = caldav_tasks.cd_remote_parent), 0) WHERE cd_calendar = :calendar AND cd_remote_parent IS NOT NULL and cd_remote_parent != ''")
public abstract void updateParents(String calendar);

@ -30,10 +30,10 @@ public class CaldavTask {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "cd_id")
private long id;
private transient long id;
@ColumnInfo(name = "cd_task")
private long task;
private transient long task;
@ColumnInfo(name = "cd_calendar")
private String calendar;
@ -57,7 +57,7 @@ public class CaldavTask {
private String vtodo;
@ColumnInfo(name = "cd_parent")
private long parent;
private transient long parent;
@ColumnInfo(name = "cd_remote_parent")
private String remoteParent;

@ -43,16 +43,16 @@ public class GoogleTask {
private String listId = "";
@ColumnInfo(name = "gt_parent")
private long parent;
private transient long parent;
@ColumnInfo(name = "gt_remote_parent")
private String remoteParent;
@ColumnInfo(name = "gt_moved")
private boolean moved;
private transient boolean moved;
@ColumnInfo(name = "gt_order")
private long order;
private transient long order;
@ColumnInfo(name = "gt_remote_order")
private long remoteOrder;

@ -128,6 +128,17 @@ public abstract class GoogleTaskDao {
"SELECT google_tasks.*, gt_remote_order AS primary_sort, NULL AS secondary_sort FROM google_tasks JOIN tasks ON tasks._id = gt_task WHERE gt_parent = 0 AND gt_list_id = :listId AND tasks.deleted = 0 UNION SELECT c.*, p.gt_remote_order AS primary_sort, c.gt_remote_order AS secondary_sort FROM google_tasks AS c LEFT JOIN google_tasks AS p ON c.gt_parent = p.gt_task JOIN tasks ON tasks._id = c.gt_task WHERE c.gt_parent > 0 AND c.gt_list_id = :listId AND tasks.deleted = 0 ORDER BY primary_sort ASC, secondary_sort ASC")
abstract List<GoogleTask> getByRemoteOrder(String listId);
@Query(
"UPDATE google_tasks"
+ " SET gt_parent = IFNULL(("
+ " SELECT gt_task FROM google_tasks AS p"
+ " WHERE p.gt_remote_id = google_tasks.gt_remote_parent"
+ " AND p.gt_list_id = google_tasks.gt_list_id "
+ " AND p.gt_deleted = 0),"
+ " gt_parent)"
+ " WHERE gt_moved = 0 AND gt_remote_parent IS NOT NULL AND gt_remote_parent != ''")
public abstract void updateParents();
@Query(
"UPDATE google_tasks SET gt_parent = IFNULL((SELECT gt_task FROM google_tasks AS p WHERE p.gt_remote_id = google_tasks.gt_remote_parent), gt_parent) WHERE gt_list_id = :listId AND gt_moved = 0 AND gt_remote_parent IS NOT NULL AND gt_remote_parent != ''")
abstract void updateParents(String listId);

Loading…
Cancel
Save