package com.todoroo.astrid.actfm.sync;
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.dao.RemoteModelDao;
public class SyncDatabaseListener<MTYPE extends AbstractModel> implements ModelUpdateListener<MTYPE> {
private final ModelType modelType;
protected final ActFmSyncThread actFmSyncThread;
public SyncDatabaseListener(ActFmSyncThread actFmSyncThread, ModelType modelType) {
this.actFmSyncThread = actFmSyncThread;
this.modelType = modelType;
}
@Override
public void onModelUpdated(MTYPE model, boolean outstandingEntries) {
if (outstandingEntries && RemoteModelDao.getOutstandingEntryFlag(RemoteModelDao.OUTSTANDING_ENTRY_FLAG_ENQUEUE_MESSAGES)) {
ChangesHappened<?, ?> ch = ChangesHappened.instantiateChangesHappened(model.getId(), modelType);
enqueueMessage(model, ch);
}
}
protected void enqueueMessage(MTYPE model, ClientToServerMessage<?> message) {
actFmSyncThread.enqueueMessage(message, null);
}
}