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 39c50cf4b..a8856a6ea 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/AstridNewSyncMigrator.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/AstridNewSyncMigrator.java @@ -20,6 +20,7 @@ import com.todoroo.astrid.dao.TagOutstandingDao; import com.todoroo.astrid.dao.TaskDao; import com.todoroo.astrid.dao.TaskOutstandingDao; import com.todoroo.astrid.dao.UpdateDao; +import com.todoroo.astrid.dao.UserActivityDao; import com.todoroo.astrid.dao.UserDao; import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.OutstandingEntry; @@ -29,6 +30,8 @@ import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.TagOutstanding; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.TaskOutstanding; +import com.todoroo.astrid.data.Update; +import com.todoroo.astrid.data.UserActivity; import com.todoroo.astrid.helper.UUIDHelper; import com.todoroo.astrid.service.MetadataService; import com.todoroo.astrid.service.TagDataService; @@ -43,6 +46,7 @@ public class AstridNewSyncMigrator { @Autowired private TagDataDao tagDataDao; @Autowired private TaskDao taskDao; @Autowired private UpdateDao updateDao; + @Autowired private UserActivityDao userActivityDao; @Autowired private UserDao userDao; @Autowired private TaskOutstandingDao taskOutstandingDao; @@ -120,6 +124,43 @@ public class AstridNewSyncMigrator { }); // TODO: Migrate updates here, somehow + TodorooCursor updates = updateDao.query(Query.select(Update.PROPERTIES).where( + Criterion.and(Criterion.or(Update.UUID.eq(0), Update.UUID.isNull()), Criterion.or(Update.ACTION_CODE.eq(UserActivity.ACTION_TAG_COMMENT), + Update.ACTION_CODE.eq(UserActivity.ACTION_TASK_COMMENT))))); + try { + Update update = new Update(); + UserActivity userActivity = new UserActivity(); + for (updates.moveToFirst(); !updates.isAfterLast(); updates.moveToNext()) { + update.clear(); + userActivity.clear(); + + update.readFromCursor(updates); + + boolean setTarget = true; + if (!RemoteModel.isUuidEmpty(update.getValue(Update.TASK_UUID))) { + userActivity.setValue(UserActivity.TARGET_ID, update.getValue(Update.TASK_UUID)); + } else if (update.getValue(Update.TASK_LOCAL) > 0) { + Task local = taskDao.fetch(update.getValue(Update.TASK_LOCAL), Task.UUID); + if (local != null && !RemoteModel.isUuidEmpty(local.getUuid())) + userActivity.setValue(UserActivity.TARGET_ID, local.getUuid()); + else + setTarget = false; + } else { + setTarget = false; + } + + if (setTarget) { + userActivity.setValue(UserActivity.USER_UUID, update.getValue(Update.USER_ID)); + userActivity.setValue(UserActivity.ACTION, update.getValue(Update.ACTION_CODE)); + userActivity.setValue(UserActivity.MESSAGE, update.getValue(Update.MESSAGE)); + userActivity.setValue(UserActivity.CREATED_AT, update.getValue(Update.CREATION_DATE)); + userActivityDao.createNew(userActivity); + } + + } + } finally { + updates.close(); + } // --------------