Minor refactor to changes happened instantiation

pull/14/head
Sam Bosley 12 years ago
parent 8810e962c8
commit 78cf95f767

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

@ -5,9 +5,15 @@ import org.json.JSONObject;
import com.todoroo.andlib.data.AbstractModel;
import com.todoroo.andlib.data.Table;
import com.todoroo.astrid.actfm.sync.ActFmSyncThread.ModelType;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.dao.DaoReflectionHelpers;
import com.todoroo.astrid.dao.RemoteModelDao;
import com.todoroo.astrid.data.RemoteModel;
import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.TagOutstanding;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.TaskOutstanding;
@SuppressWarnings("nls")
public abstract class ClientToServerMessage<TYPE extends RemoteModel> {
@ -77,4 +83,17 @@ public abstract class ClientToServerMessage<TYPE extends RemoteModel> {
protected abstract void serializeToJSONImpl(JSONObject serializeTo) throws JSONException;
protected abstract String getTypeString();
public static ChangesHappened<?, ?> instantiateChangesHappened(Long id, ModelType modelType) {
switch(modelType) {
case TYPE_TASK:
return new ChangesHappened<Task, TaskOutstanding>(id, Task.class,
PluginServices.getTaskDao(), PluginServices.getTaskOutstandingDao());
case TYPE_TAG:
return new ChangesHappened<TagData, TagOutstanding>(id, TagData.class,
PluginServices.getTagDataDao(), PluginServices.getTagOutstandingDao());
default:
return null;
}
}
}

@ -3,19 +3,20 @@ package com.todoroo.astrid.sync;
import org.json.JSONException;
import org.json.JSONObject;
import com.todoroo.astrid.actfm.sync.ActFmSyncThread.ModelType;
import com.todoroo.astrid.actfm.sync.messages.ChangesHappened;
import com.todoroo.astrid.actfm.sync.messages.ClientToServerMessage;
import com.todoroo.astrid.actfm.sync.messages.NameMaps;
import com.todoroo.astrid.actfm.sync.messages.ServerToClientMessage;
import com.todoroo.astrid.data.RemoteModel;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.TaskOutstanding;
public class SyncMessageTest extends NewSyncTestCase {
public void testTaskChangesHappenedConstructor() {
Task t = createTask();
try {
ChangesHappened<Task, TaskOutstanding> changes = new ChangesHappened<Task, TaskOutstanding>(t.getId(), Task.class, taskDao, taskOutstandingDao);
ChangesHappened<?, ?> changes = ClientToServerMessage.instantiateChangesHappened(t.getId(), ModelType.TYPE_TASK);
assertTrue(changes.numChanges() > 0);
assertFalse(RemoteModel.NO_UUID.equals(changes.getUUID()));
assertEquals(t.getValue(Task.UUID), changes.getUUID());

Loading…
Cancel
Save