|
|
|
|
@ -2,13 +2,13 @@ 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;
|
|
|
|
|
import com.todoroo.astrid.data.RemoteModel;
|
|
|
|
|
|
|
|
|
|
public class SyncDatabaseListener<MTYPE extends RemoteModel> implements ModelUpdateListener<MTYPE> {
|
|
|
|
|
public class SyncDatabaseListener<MTYPE extends AbstractModel> implements ModelUpdateListener<MTYPE> {
|
|
|
|
|
|
|
|
|
|
private final List<ClientToServerMessage<?>> queue;
|
|
|
|
|
private final Object monitor;
|
|
|
|
|
@ -23,9 +23,11 @@ public class SyncDatabaseListener<MTYPE extends RemoteModel> implements ModelUpd
|
|
|
|
|
@Override
|
|
|
|
|
public void onModelUpdated(MTYPE model) {
|
|
|
|
|
ChangesHappened<?, ?> ch = ChangesHappened.instantiateChangesHappened(model.getId(), modelType);
|
|
|
|
|
queue.add(ch);
|
|
|
|
|
synchronized(monitor) {
|
|
|
|
|
monitor.notifyAll();
|
|
|
|
|
if (!queue.contains(ch)) {
|
|
|
|
|
queue.add(ch);
|
|
|
|
|
synchronized(monitor) {
|
|
|
|
|
monitor.notifyAll();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|