|
|
@ -17,15 +17,9 @@ import com.todoroo.astrid.actfm.sync.messages.BriefMe;
|
|
|
|
import com.todoroo.astrid.actfm.sync.messages.ChangesHappened;
|
|
|
|
import com.todoroo.astrid.actfm.sync.messages.ChangesHappened;
|
|
|
|
import com.todoroo.astrid.actfm.sync.messages.ClientToServerMessage;
|
|
|
|
import com.todoroo.astrid.actfm.sync.messages.ClientToServerMessage;
|
|
|
|
import com.todoroo.astrid.actfm.sync.messages.ServerToClientMessage;
|
|
|
|
import com.todoroo.astrid.actfm.sync.messages.ServerToClientMessage;
|
|
|
|
import com.todoroo.astrid.dao.TagDataDao;
|
|
|
|
|
|
|
|
import com.todoroo.astrid.dao.TagOutstandingDao;
|
|
|
|
|
|
|
|
import com.todoroo.astrid.dao.TaskDao;
|
|
|
|
|
|
|
|
import com.todoroo.astrid.dao.TaskOutstandingDao;
|
|
|
|
|
|
|
|
import com.todoroo.astrid.data.RemoteModel;
|
|
|
|
import com.todoroo.astrid.data.RemoteModel;
|
|
|
|
import com.todoroo.astrid.data.TagData;
|
|
|
|
import com.todoroo.astrid.data.TagData;
|
|
|
|
import com.todoroo.astrid.data.TagOutstanding;
|
|
|
|
|
|
|
|
import com.todoroo.astrid.data.Task;
|
|
|
|
import com.todoroo.astrid.data.Task;
|
|
|
|
import com.todoroo.astrid.data.TaskOutstanding;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public class ActFmSyncThread {
|
|
|
|
public class ActFmSyncThread {
|
|
|
|
|
|
|
|
|
|
|
@ -33,18 +27,6 @@ public class ActFmSyncThread {
|
|
|
|
private final Object monitor;
|
|
|
|
private final Object monitor;
|
|
|
|
private Thread thread;
|
|
|
|
private Thread thread;
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private TaskDao taskDao;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private TagDataDao tagDataDao;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private TaskOutstandingDao taskOutstandingDao;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private TagOutstandingDao tagOutstandingDao;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
|
private ActFmInvoker actFmInvoker;
|
|
|
|
private ActFmInvoker actFmInvoker;
|
|
|
|
|
|
|
|
|
|
|
@ -96,15 +78,15 @@ public class ActFmSyncThread {
|
|
|
|
while (messages.size() < batchSize && !changesQueue.isEmpty()) {
|
|
|
|
while (messages.size() < batchSize && !changesQueue.isEmpty()) {
|
|
|
|
Pair<Long, ModelType> tuple = changesQueue.poll();
|
|
|
|
Pair<Long, ModelType> tuple = changesQueue.poll();
|
|
|
|
if (tuple != null) {
|
|
|
|
if (tuple != null) {
|
|
|
|
ChangesHappened<?, ?> changes = getChangesHappened(tuple);
|
|
|
|
ChangesHappened<?, ?> changes = ClientToServerMessage.instantiateChangesHappened(tuple.getLeft(), tuple.getRight());
|
|
|
|
if (changes != null)
|
|
|
|
if (changes != null)
|
|
|
|
messages.add(changes);
|
|
|
|
messages.add(changes);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (messages.isEmpty() && timeForBackgroundSync()) {
|
|
|
|
if (messages.isEmpty() && timeForBackgroundSync()) {
|
|
|
|
messages.add(getBriefMe(Task.class));
|
|
|
|
messages.add(instantiateBriefMe(Task.class));
|
|
|
|
messages.add(getBriefMe(TagData.class));
|
|
|
|
messages.add(instantiateBriefMe(TagData.class));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (!messages.isEmpty() && checkForToken()) {
|
|
|
|
if (!messages.isEmpty() && checkForToken()) {
|
|
|
@ -146,19 +128,7 @@ public class ActFmSyncThread {
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private ChangesHappened<?, ?> getChangesHappened(Pair<Long, ModelType> tuple) {
|
|
|
|
private <TYPE extends RemoteModel> BriefMe<TYPE> instantiateBriefMe(Class<TYPE> cls) {
|
|
|
|
ModelType modelType = tuple.getRight();
|
|
|
|
|
|
|
|
switch(modelType) {
|
|
|
|
|
|
|
|
case TYPE_TASK:
|
|
|
|
|
|
|
|
return new ChangesHappened<Task, TaskOutstanding>(tuple.getLeft(), Task.class, taskDao, taskOutstandingDao);
|
|
|
|
|
|
|
|
case TYPE_TAG:
|
|
|
|
|
|
|
|
return new ChangesHappened<TagData, TagOutstanding>(tuple.getLeft(), TagData.class, tagDataDao, tagOutstandingDao);
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private <TYPE extends RemoteModel> BriefMe<TYPE> getBriefMe(Class<TYPE> cls) {
|
|
|
|
|
|
|
|
// TODO: compute last pushed at value for model class
|
|
|
|
// TODO: compute last pushed at value for model class
|
|
|
|
long pushedAt = 0;
|
|
|
|
long pushedAt = 0;
|
|
|
|
return new BriefMe<TYPE>(cls, null, pushedAt);
|
|
|
|
return new BriefMe<TYPE>(cls, null, pushedAt);
|
|
|
|