mirror of https://github.com/tasks/tasks
When logged in user id changes, do a db migration to update the user id properties and clear table pushed at values. Should fix issues when merging accounts
parent
f6f0e5b64f
commit
fb8905f469
@ -0,0 +1,61 @@
|
|||||||
|
package com.todoroo.astrid.actfm.sync.messages;
|
||||||
|
|
||||||
|
import com.todoroo.andlib.data.AbstractModel;
|
||||||
|
import com.todoroo.andlib.data.DatabaseDao;
|
||||||
|
import com.todoroo.andlib.data.Property.StringProperty;
|
||||||
|
import com.todoroo.andlib.service.Autowired;
|
||||||
|
import com.todoroo.andlib.service.DependencyInjectionService;
|
||||||
|
import com.todoroo.astrid.actfm.sync.ActFmPreferenceService;
|
||||||
|
import com.todoroo.astrid.dao.HistoryDao;
|
||||||
|
import com.todoroo.astrid.dao.TagDataDao;
|
||||||
|
import com.todoroo.astrid.dao.TaskDao;
|
||||||
|
import com.todoroo.astrid.dao.UserActivityDao;
|
||||||
|
import com.todoroo.astrid.dao.WaitingOnMeDao;
|
||||||
|
import com.todoroo.astrid.data.History;
|
||||||
|
import com.todoroo.astrid.data.RemoteModel;
|
||||||
|
import com.todoroo.astrid.data.SyncFlags;
|
||||||
|
import com.todoroo.astrid.data.TagData;
|
||||||
|
import com.todoroo.astrid.data.Task;
|
||||||
|
import com.todoroo.astrid.data.UserActivity;
|
||||||
|
import com.todoroo.astrid.data.WaitingOnMe;
|
||||||
|
|
||||||
|
public class ConvertSelfUserIdsToZero {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private TaskDao taskDao;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private TagDataDao tagDataDao;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private HistoryDao historyDao;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserActivityDao userActivityDao;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private WaitingOnMeDao waitingOnMeDao;
|
||||||
|
|
||||||
|
public ConvertSelfUserIdsToZero() {
|
||||||
|
DependencyInjectionService.getInstance().inject(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public synchronized void execute() {
|
||||||
|
String selfId = ActFmPreferenceService.userId();
|
||||||
|
if (RemoteModel.isValidUuid(selfId)) {
|
||||||
|
updateDatabase(taskDao, new Task(), Task.CREATOR_ID, selfId);
|
||||||
|
updateDatabase(taskDao, new Task(), Task.USER_ID, selfId);
|
||||||
|
updateDatabase(tagDataDao, new TagData(), TagData.USER_ID, selfId);
|
||||||
|
updateDatabase(historyDao, new History(), History.USER_UUID, selfId);
|
||||||
|
updateDatabase(userActivityDao, new UserActivity(), UserActivity.USER_UUID, selfId);
|
||||||
|
updateDatabase(waitingOnMeDao, new WaitingOnMe(), WaitingOnMe.WAITING_USER_ID, selfId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private <T extends AbstractModel> void updateDatabase(DatabaseDao<T> dao, T instance, StringProperty property, String selfId) {
|
||||||
|
instance.setValue(property, Task.USER_ID_SELF);
|
||||||
|
instance.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true);
|
||||||
|
dao.update(property.eq(selfId), instance);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue