Wire up user activity messages to the sync thread

pull/14/head
Sam Bosley 12 years ago
parent e9f8d1f4f8
commit 719380253a

@ -81,7 +81,8 @@ public class ActFmSyncThread {
public static enum ModelType { public static enum ModelType {
TYPE_TASK, TYPE_TASK,
TYPE_TAG TYPE_TAG,
TYPE_ACTIVITY
} }
private static volatile ActFmSyncThread instance; private static volatile ActFmSyncThread instance;
@ -90,14 +91,14 @@ public class ActFmSyncThread {
if (instance == null) { if (instance == null) {
synchronized(ActFmSyncThread.class) { synchronized(ActFmSyncThread.class) {
if (instance == null) { if (instance == null) {
initializeSyncComponents(PluginServices.getTaskDao(), PluginServices.getTagDataDao()); initializeSyncComponents(PluginServices.getTaskDao(), PluginServices.getTagDataDao(), PluginServices.getUserActivityDao());
} }
} }
} }
return instance; return instance;
} }
public static ActFmSyncThread initializeSyncComponents(TaskDao taskDao, TagDataDao tagDataDao) { public static ActFmSyncThread initializeSyncComponents(TaskDao taskDao, TagDataDao tagDataDao, UserActivityDao userActivityDao) {
if (instance == null) { if (instance == null) {
synchronized(ActFmSyncThread.class) { synchronized(ActFmSyncThread.class) {
if (instance == null) { if (instance == null) {
@ -108,6 +109,7 @@ public class ActFmSyncThread {
taskDao.addListener(new SyncDatabaseListener<Task>(instance, ModelType.TYPE_TASK)); taskDao.addListener(new SyncDatabaseListener<Task>(instance, ModelType.TYPE_TASK));
tagDataDao.addListener(new SyncDatabaseListener<TagData>(instance, ModelType.TYPE_TAG)); tagDataDao.addListener(new SyncDatabaseListener<TagData>(instance, ModelType.TYPE_TAG));
userActivityDao.addListener(new SyncDatabaseListener<UserActivity>(instance, ModelType.TYPE_ACTIVITY));
instance.startSyncThread(); instance.startSyncThread();
} }
@ -172,6 +174,7 @@ public class ActFmSyncThread {
Flags.checkAndClear(Flags.BG_SYNC); Flags.checkAndClear(Flags.BG_SYNC);
messageBatch.add(BriefMe.instantiateBriefMeForClass(Task.class, NameMaps.PUSHED_AT_TASKS)); messageBatch.add(BriefMe.instantiateBriefMeForClass(Task.class, NameMaps.PUSHED_AT_TASKS));
messageBatch.add(BriefMe.instantiateBriefMeForClass(TagData.class, NameMaps.PUSHED_AT_TAGS)); messageBatch.add(BriefMe.instantiateBriefMeForClass(TagData.class, NameMaps.PUSHED_AT_TAGS));
messageBatch.add(BriefMe.instantiateBriefMeForClass(UserActivity.class, NameMaps.PUSHED_AT_ACTIVITY));
} }
if (!messageBatch.isEmpty() && checkForToken()) { if (!messageBatch.isEmpty() && checkForToken()) {

@ -27,6 +27,8 @@ import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.TagOutstanding; import com.todoroo.astrid.data.TagOutstanding;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.TaskOutstanding; import com.todoroo.astrid.data.TaskOutstanding;
import com.todoroo.astrid.data.UserActivity;
import com.todoroo.astrid.data.UserActivityOutstanding;
@SuppressWarnings("nls") @SuppressWarnings("nls")
public class ChangesHappened<TYPE extends RemoteModel, OE extends OutstandingEntry<TYPE>> extends ClientToServerMessage<TYPE> { public class ChangesHappened<TYPE extends RemoteModel, OE extends OutstandingEntry<TYPE>> extends ClientToServerMessage<TYPE> {
@ -47,6 +49,9 @@ public class ChangesHappened<TYPE extends RemoteModel, OE extends OutstandingEnt
case TYPE_TAG: case TYPE_TAG:
return new ChangesHappened<TagData, TagOutstanding>(id, TagData.class, return new ChangesHappened<TagData, TagOutstanding>(id, TagData.class,
PluginServices.getTagDataDao(), PluginServices.getTagOutstandingDao()); PluginServices.getTagDataDao(), PluginServices.getTagOutstandingDao());
case TYPE_ACTIVITY:
return new ChangesHappened<UserActivity, UserActivityOutstanding>(id, UserActivity.class,
PluginServices.getUserActivityDao(), PluginServices.getUserActivityOutstandingDao());
default: default:
return null; return null;
} }

@ -52,6 +52,7 @@ import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria; import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria;
import com.todoroo.astrid.dao.TagDataDao; import com.todoroo.astrid.dao.TagDataDao;
import com.todoroo.astrid.dao.TaskDao; import com.todoroo.astrid.dao.TaskDao;
import com.todoroo.astrid.dao.UserActivityDao;
import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
@ -102,6 +103,8 @@ public class StartupService {
@Autowired TagDataDao tagDataDao; @Autowired TagDataDao tagDataDao;
@Autowired UserActivityDao userActivityDao;
@Autowired MetadataService metadataService; @Autowired MetadataService metadataService;
@Autowired Database database; @Autowired Database database;
@ -215,7 +218,7 @@ public class StartupService {
abTestInvoker.reportAcquisition(); abTestInvoker.reportAcquisition();
initializeDatabaseListeners(); initializeDatabaseListeners();
ActFmSyncThread.initializeSyncComponents(taskDao, tagDataDao); ActFmSyncThread.initializeSyncComponents(taskDao, tagDataDao, userActivityDao);
// perform startup activities in a background thread // perform startup activities in a background thread
new Thread(new Runnable() { new Thread(new Runnable() {

Loading…
Cancel
Save