Refactored SyncDatabaseListener to use ActFmSyncThread.enqueueMessage

pull/14/head
Sam Bosley 13 years ago
parent 508f533e6d
commit 6bd6b82bac

@ -94,10 +94,11 @@ public class ActFmSyncThread {
List<ClientToServerMessage<?>> syncQueue = Collections.synchronizedList(new LinkedList<ClientToServerMessage<?>>());
ActFmSyncMonitor monitor = ActFmSyncMonitor.getInstance();
taskDao.addListener(new SyncDatabaseListener<Task>(syncQueue, monitor, ModelType.TYPE_TASK));
tagDataDao.addListener(new SyncDatabaseListener<TagData>(syncQueue, monitor, ModelType.TYPE_TAG));
instance = new ActFmSyncThread(syncQueue, monitor);
taskDao.addListener(new SyncDatabaseListener<Task>(instance, ModelType.TYPE_TASK));
tagDataDao.addListener(new SyncDatabaseListener<TagData>(instance, ModelType.TYPE_TAG));
instance.startSyncThread();
}
}
@ -125,11 +126,13 @@ public class ActFmSyncThread {
}
public void enqueueMessage(ClientToServerMessage<?> message) {
if (!pendingMessages.contains(message)) {
pendingMessages.add(message);
synchronized(monitor) {
monitor.notifyAll();
}
}
}
@SuppressWarnings("nls")
private void sync() {

@ -1,22 +1,16 @@
package com.todoroo.astrid.actfm.sync;
import java.util.List;
import com.todoroo.andlib.data.AbstractModel;
import com.todoroo.andlib.data.DatabaseDao.ModelUpdateListener;
import com.todoroo.astrid.actfm.sync.ActFmSyncThread.ModelType;
import com.todoroo.astrid.actfm.sync.messages.ChangesHappened;
import com.todoroo.astrid.actfm.sync.messages.ClientToServerMessage;
public class SyncDatabaseListener<MTYPE extends AbstractModel> implements ModelUpdateListener<MTYPE> {
private final List<ClientToServerMessage<?>> queue;
private final Object monitor;
private final ModelType modelType;
public SyncDatabaseListener(List<ClientToServerMessage<?>> queue, Object syncMonitor, ModelType modelType) {
this.queue = queue;
this.monitor = syncMonitor;
private final ActFmSyncThread actFmSyncThread;
public SyncDatabaseListener(ActFmSyncThread actFmSyncThread, ModelType modelType) {
this.actFmSyncThread = actFmSyncThread;
this.modelType = modelType;
}
@ -24,12 +18,7 @@ public class SyncDatabaseListener<MTYPE extends AbstractModel> implements ModelU
public void onModelUpdated(MTYPE model, boolean outstandingEntries) {
if (outstandingEntries) {
ChangesHappened<?, ?> ch = ChangesHappened.instantiateChangesHappened(model.getId(), modelType);
if (!queue.contains(ch)) {
queue.add(ch);
synchronized(monitor) {
monitor.notifyAll();
}
}
actFmSyncThread.enqueueMessage(ch);
}
}

Loading…
Cancel
Save