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) { 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); } } public synchronized void execute() { String selfId = ActFmPreferenceService.userId(); execute(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); } }