diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/AstridNewSyncMigrator.java b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/AstridNewSyncMigrator.java index 663107fd3..ed19512ec 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/AstridNewSyncMigrator.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/AstridNewSyncMigrator.java @@ -24,6 +24,7 @@ import com.todoroo.astrid.dao.TagDataDao; import com.todoroo.astrid.dao.TagOutstandingDao; import com.todoroo.astrid.dao.TaskAttachmentDao; import com.todoroo.astrid.dao.TaskDao; +import com.todoroo.astrid.dao.TaskListMetadataDao; import com.todoroo.astrid.dao.TaskOutstandingDao; import com.todoroo.astrid.dao.UpdateDao; import com.todoroo.astrid.dao.UserActivityDao; @@ -36,6 +37,7 @@ import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.TagOutstanding; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.TaskAttachment; +import com.todoroo.astrid.data.TaskListMetadata; import com.todoroo.astrid.data.TaskOutstanding; import com.todoroo.astrid.data.Update; import com.todoroo.astrid.data.User; @@ -44,6 +46,7 @@ import com.todoroo.astrid.files.FileMetadata; import com.todoroo.astrid.helper.UUIDHelper; import com.todoroo.astrid.service.MetadataService; import com.todoroo.astrid.service.TagDataService; +import com.todoroo.astrid.subtasks.SubtasksUpdater; import com.todoroo.astrid.tags.TaskToTagMetadata; @SuppressWarnings("nls") @@ -57,6 +60,7 @@ public class AstridNewSyncMigrator { @Autowired private UserActivityDao userActivityDao; @Autowired private UserDao userDao; @Autowired private TaskAttachmentDao taskAttachmentDao; + @Autowired private TaskListMetadataDao taskListMetadataDao; @Autowired private TaskOutstandingDao taskOutstandingDao; @Autowired private TagOutstandingDao tagOutstandingDao; @@ -300,6 +304,51 @@ public class AstridNewSyncMigrator { Log.e(LOG_TAG, "Error migrating task attachment metadata", e); } + // -------------- + // Migrate legacy FileMetadata models to new TaskAttachment models + // -------------- + try { + String activeTasksOrder = Preferences.getStringValue(SubtasksUpdater.ACTIVE_TASKS_ORDER); + if (TextUtils.isEmpty(activeTasksOrder)) + activeTasksOrder = "[]"; + + TaskListMetadata tlm = new TaskListMetadata(); + tlm.setValue(TaskListMetadata.FILTER, TaskListMetadata.FILTER_ID_ALL); + tlm.setValue(TaskListMetadata.TASK_IDS, activeTasksOrder); + tlm.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true); + taskListMetadataDao.createNew(tlm); + + tlm.clear(); + String todayTasksOrder = Preferences.getStringValue(SubtasksUpdater.TODAY_TASKS_ORDER); + if (TextUtils.isEmpty(todayTasksOrder)) + todayTasksOrder = "[]"; + + tlm.setValue(TaskListMetadata.FILTER, TaskListMetadata.FILTER_ID_TODAY); + tlm.setValue(TaskListMetadata.TASK_IDS, todayTasksOrder); + tlm.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true); + taskListMetadataDao.createNew(tlm); + + TodorooCursor allTagData = tagDataDao.query(Query.select(TagData.UUID, TagData.TAG_ORDERING)); + try { + TagData td = new TagData(); + for (allTagData.moveToFirst(); !allTagData.isAfterLast(); allTagData.moveToNext()) { + tlm.clear(); + td.clear(); + + td.readFromCursor(allTagData); + String tagOrdering = td.getValue(TagData.TAG_ORDERING); + tlm.setValue(TaskListMetadata.TASK_IDS, tagOrdering); + tlm.setValue(TaskListMetadata.TAG_UUID, td.getUuid()); + taskListMetadataDao.createNew(tlm); + } + } finally { + allTagData.close(); + } + + } catch (Exception e) { + Log.e(LOG_TAG, "Error migrating tag ordering", e); + } + // -------------- // Ensure that all tag metadata entities have all important fields filled in // --------------