Wrote migration for task comments created offline. Other comments will be restored on sync

pull/14/head
Sam Bosley 13 years ago
parent 74dd1b3075
commit 5409912b0d

@ -20,6 +20,7 @@ import com.todoroo.astrid.dao.TagOutstandingDao;
import com.todoroo.astrid.dao.TaskDao; import com.todoroo.astrid.dao.TaskDao;
import com.todoroo.astrid.dao.TaskOutstandingDao; import com.todoroo.astrid.dao.TaskOutstandingDao;
import com.todoroo.astrid.dao.UpdateDao; import com.todoroo.astrid.dao.UpdateDao;
import com.todoroo.astrid.dao.UserActivityDao;
import com.todoroo.astrid.dao.UserDao; import com.todoroo.astrid.dao.UserDao;
import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.OutstandingEntry; 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.TagOutstanding;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.TaskOutstanding; 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.helper.UUIDHelper;
import com.todoroo.astrid.service.MetadataService; import com.todoroo.astrid.service.MetadataService;
import com.todoroo.astrid.service.TagDataService; import com.todoroo.astrid.service.TagDataService;
@ -43,6 +46,7 @@ public class AstridNewSyncMigrator {
@Autowired private TagDataDao tagDataDao; @Autowired private TagDataDao tagDataDao;
@Autowired private TaskDao taskDao; @Autowired private TaskDao taskDao;
@Autowired private UpdateDao updateDao; @Autowired private UpdateDao updateDao;
@Autowired private UserActivityDao userActivityDao;
@Autowired private UserDao userDao; @Autowired private UserDao userDao;
@Autowired private TaskOutstandingDao taskOutstandingDao; @Autowired private TaskOutstandingDao taskOutstandingDao;
@ -120,6 +124,43 @@ public class AstridNewSyncMigrator {
}); });
// TODO: Migrate updates here, somehow // TODO: Migrate updates here, somehow
TodorooCursor<Update> 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();
}
// -------------- // --------------

Loading…
Cancel
Save