diff --git a/api/src/com/todoroo/andlib/data/DatabaseDao.java b/api/src/com/todoroo/andlib/data/DatabaseDao.java index 836ac7ecf..17c4b27b4 100644 --- a/api/src/com/todoroo/andlib/data/DatabaseDao.java +++ b/api/src/com/todoroo/andlib/data/DatabaseDao.java @@ -310,10 +310,11 @@ public class DatabaseDao { public void onBegin() {/**/} }); } + int numOutstanding = 0; try { result.set(op.makeChange()); if(result.get()) { - if (recordOutstanding && createOutstandingEntries(item.getId(), values)) // Create entries for setValues in outstanding table + if (recordOutstanding && ((numOutstanding = createOutstandingEntries(item.getId(), values)) != -1)) // Create entries for setValues in outstanding table database.getDatabase().setTransactionSuccessful(); } } finally { @@ -321,7 +322,7 @@ public class DatabaseDao { database.getDatabase().endTransaction(); } if (result.get()) { - onModelUpdated(item, recordOutstanding); + onModelUpdated(item, recordOutstanding && numOutstanding > 0); item.markSaved(); } return result.get(); @@ -378,27 +379,29 @@ public class DatabaseDao { return insertOrUpdateAndRecordChanges(item, values, update); } - protected boolean createOutstandingEntries(long modelId, ContentValues modelSetValues) { + protected int createOutstandingEntries(long modelId, ContentValues modelSetValues) { Set> entries = modelSetValues.valueSet(); long now = DateUtilities.now(); + int count = 0; for (Entry entry : entries) { if (entry.getValue() != null && shouldRecordOutstandingEntry(entry.getKey())) { AbstractModel m; try { m = outstandingTable.modelClass.newInstance(); } catch (IllegalAccessException e) { - return false; + return -1; } catch (InstantiationException e2) { - return false; + return -1; } m.setValue(OutstandingEntry.ENTITY_ID_PROPERTY, modelId); m.setValue(OutstandingEntry.COLUMN_STRING_PROPERTY, entry.getKey()); m.setValue(OutstandingEntry.VALUE_STRING_PROPERTY, entry.getValue().toString()); m.setValue(OutstandingEntry.CREATED_AT_PROPERTY, now); database.insert(outstandingTable.name, null, m.getSetValues()); + count++; } } - return true; + return count; } /** diff --git a/api/src/com/todoroo/astrid/data/SyncFlags.java b/api/src/com/todoroo/astrid/data/SyncFlags.java index b6e011950..74057a28c 100644 --- a/api/src/com/todoroo/astrid/data/SyncFlags.java +++ b/api/src/com/todoroo/astrid/data/SyncFlags.java @@ -8,8 +8,6 @@ package com.todoroo.astrid.data; @SuppressWarnings("nls") public class SyncFlags { - public static final String ACTFM_SUPPRESS_SYNC = "actfm_suppress_sync"; - public static final String GTASKS_SUPPRESS_SYNC = "gtasks_suppress_sync"; public static final String ACTFM_SUPPRESS_OUTSTANDING_ENTRIES = "actfm-suppress-outstanding"; diff --git a/astrid/plugin-src/com/timsu/astrid/GCMIntentService.java b/astrid/plugin-src/com/timsu/astrid/GCMIntentService.java index 811bd01d8..45bc1fc16 100644 --- a/astrid/plugin-src/com/timsu/astrid/GCMIntentService.java +++ b/astrid/plugin-src/com/timsu/astrid/GCMIntentService.java @@ -286,7 +286,6 @@ public class GCMIntentService extends GCMBaseIntentService { task.setValue(Task.TITLE, intent.getStringExtra("title")); task.setValue(Task.UUID, intent.getStringExtra("task_id")); task.setValue(Task.USER_ID, Task.USER_ID_UNASSIGNED); - task.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true); task.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true); taskService.save(task); } else { @@ -318,7 +317,6 @@ public class GCMIntentService extends GCMBaseIntentService { if(cursor.getCount() == 0) { tagData.setValue(TagData.NAME, intent.getStringExtra("title")); tagData.setValue(TagData.UUID, intent.getStringExtra("tag_id")); - tagData.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true); tagData.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true); tagDataService.save(tagData); } else { diff --git a/astrid/src/com/todoroo/astrid/dao/MetadataDao.java b/astrid/src/com/todoroo/astrid/dao/MetadataDao.java index ef93af688..52339ce40 100644 --- a/astrid/src/com/todoroo/astrid/dao/MetadataDao.java +++ b/astrid/src/com/todoroo/astrid/dao/MetadataDao.java @@ -87,12 +87,12 @@ public class MetadataDao extends DatabaseDao { } @Override - protected boolean createOutstandingEntries(long modelId, ContentValues modelSetValues) { + protected int createOutstandingEntries(long modelId, ContentValues modelSetValues) { Long taskId = modelSetValues.getAsLong(Metadata.TASK.name); String tagUuid = modelSetValues.getAsString(TaskToTagMetadata.TAG_UUID.name); Long deletionDate = modelSetValues.getAsLong(Metadata.DELETION_DATE.name); if (taskId == null || taskId == AbstractModel.NO_ID || RemoteModel.isUuidEmpty(tagUuid)) - return false; + return -1; TaskOutstanding to = new TaskOutstanding(); to.setValue(OutstandingEntry.ENTITY_ID_PROPERTY, taskId); @@ -107,7 +107,7 @@ public class MetadataDao extends DatabaseDao { database.insert(outstandingTable.name, null, to.getSetValues()); ActFmSyncThread.getInstance().enqueueMessage(new ChangesHappened(taskId, Task.class, PluginServices.getTaskDao(), PluginServices.getTaskOutstandingDao()), null); - return true; + return 1; } @Override diff --git a/astrid/src/com/todoroo/astrid/dao/TagMetadataDao.java b/astrid/src/com/todoroo/astrid/dao/TagMetadataDao.java index 7bb126931..3d82297ec 100644 --- a/astrid/src/com/todoroo/astrid/dao/TagMetadataDao.java +++ b/astrid/src/com/todoroo/astrid/dao/TagMetadataDao.java @@ -81,12 +81,12 @@ public class TagMetadataDao extends DatabaseDao { } @Override - protected boolean createOutstandingEntries(long modelId, ContentValues modelSetValues) { + protected int createOutstandingEntries(long modelId, ContentValues modelSetValues) { Long tagDataId = modelSetValues.getAsLong(TagMetadata.TAG_ID.name); String memberId = modelSetValues.getAsString(TagMemberMetadata.USER_UUID.name); Long deletionDate = modelSetValues.getAsLong(TagMetadata.DELETION_DATE.name); if (tagDataId == null || tagDataId == AbstractModel.NO_ID || RemoteModel.isUuidEmpty(memberId)) - return false; + return -1; TagOutstanding to = new TagOutstanding(); to.setValue(OutstandingEntry.ENTITY_ID_PROPERTY, tagDataId); @@ -101,7 +101,7 @@ public class TagMetadataDao extends DatabaseDao { database.insert(outstandingTable.name, null, to.getSetValues()); ActFmSyncThread.getInstance().enqueueMessage(new ChangesHappened(tagDataId, TagData.class, PluginServices.getTagDataDao(), PluginServices.getTagOutstandingDao()), null); - return true; + return 1; } public void createMemberLink(long tagId, String tagUuid, String memberId, boolean suppressOutstanding) { diff --git a/astrid/src/com/todoroo/astrid/helper/DueDateTimeMigrator.java b/astrid/src/com/todoroo/astrid/helper/DueDateTimeMigrator.java index bca21211a..1bfc980f8 100644 --- a/astrid/src/com/todoroo/astrid/helper/DueDateTimeMigrator.java +++ b/astrid/src/com/todoroo/astrid/helper/DueDateTimeMigrator.java @@ -90,7 +90,7 @@ public class DueDateTimeMigrator { adjuster.adjust(date); curr.setValue(Task.DUE_DATE, date.getTime()); curr.getSetValues().put(Task.MODIFICATION_DATE.name, curr.getValue(Task.MODIFICATION_DATE)); // Don't change modification date - curr.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true); + curr.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true); curr.putTransitory(SyncFlags.GTASKS_SUPPRESS_SYNC, true); taskDao.save(curr); } diff --git a/astrid/src/com/todoroo/astrid/service/TaskService.java b/astrid/src/com/todoroo/astrid/service/TaskService.java index 6e0595917..68afd31f7 100644 --- a/astrid/src/com/todoroo/astrid/service/TaskService.java +++ b/astrid/src/com/todoroo/astrid/service/TaskService.java @@ -190,7 +190,6 @@ public class TaskService { try { if(cursor.getCount() > 0) { Metadata metadata = new Metadata(); - newTask.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true); newTask.putTransitory(SyncFlags.GTASKS_SUPPRESS_SYNC, true); taskDao.save(newTask); long newId = newTask.getId(); diff --git a/astrid/src/com/todoroo/astrid/ui/QuickAddBar.java b/astrid/src/com/todoroo/astrid/ui/QuickAddBar.java index a29a5187d..f1875db4a 100644 --- a/astrid/src/com/todoroo/astrid/ui/QuickAddBar.java +++ b/astrid/src/com/todoroo/astrid/ui/QuickAddBar.java @@ -384,7 +384,6 @@ public class QuickAddBar extends LinearLayout { Uri calendarUri = GCalHelper.createTaskEvent(task, ContextManager.getContext().getContentResolver(), new ContentValues()); task.setValue(Task.CALENDAR_URI, calendarUri.toString()); - task.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true); task.putTransitory(SyncFlags.GTASKS_SUPPRESS_SYNC, true); PluginServices.getTaskService().save(task); }