From 987c34811e405e1bcae4fb5e985402f0a7ec4c0a Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Wed, 23 Jan 2013 13:15:54 -0800 Subject: [PATCH] Added flag for suppressing outstanding entries when syncing tags --- .../actfm/sync/messages/MakeChanges.java | 2 +- .../com/todoroo/astrid/tags/TagService.java | 23 +++++++++---------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/MakeChanges.java b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/MakeChanges.java index 1d377ba84..3d1ede362 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/MakeChanges.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/MakeChanges.java @@ -202,7 +202,7 @@ public class MakeChanges extends ServerToClientMessage // } } - TagService.getInstance().deleteLinks(localId, uuid, toRemove.toArray(new String[toRemove.size()])); + TagService.getInstance().deleteLinks(localId, uuid, toRemove.toArray(new String[toRemove.size()]), true); } } diff --git a/astrid/plugin-src/com/todoroo/astrid/tags/TagService.java b/astrid/plugin-src/com/todoroo/astrid/tags/TagService.java index bb53af011..3aa5e77e2 100644 --- a/astrid/plugin-src/com/todoroo/astrid/tags/TagService.java +++ b/astrid/plugin-src/com/todoroo/astrid/tags/TagService.java @@ -283,6 +283,8 @@ public final class TagService { } Metadata link = TagMetadata.newTagMetadata(taskId, taskUuid, name, tagUuid); + if (suppressOutstanding) + link.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true); if (metadataDao.update(Criterion.and(MetadataCriteria.byTaskAndwithKey(taskId, TagMetadata.KEY), TagMetadata.TASK_UUID.eq(taskUuid), TagMetadata.TAG_UUID.eq(tagUuid)), link) <= 0) { if (suppressOutstanding) @@ -300,8 +302,10 @@ public final class TagService { * @param taskUuid * @param tagUuid */ - public void deleteLink(long taskId, String taskUuid, String tagUuid) { + public void deleteLink(long taskId, String taskUuid, String tagUuid, boolean suppressOutstanding) { Metadata deleteTemplate = new Metadata(); + if (suppressOutstanding) + deleteTemplate.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true); deleteTemplate.setValue(Metadata.TASK, taskId); // Need this for recording changes in outstanding table deleteTemplate.setValue(Metadata.DELETION_DATE, DateUtilities.now()); metadataDao.update(Criterion.and(MetadataCriteria.withKey(TagMetadata.KEY), Metadata.DELETION_DATE.eq(0), @@ -313,21 +317,16 @@ public final class TagService { * @param taskUuid * @param tagUuids */ - public void deleteLinks(long taskId, String taskUuid, String[] tagUuids) { + public void deleteLinks(long taskId, String taskUuid, String[] tagUuids, boolean suppressOutstanding) { Metadata deleteTemplate = new Metadata(); + if (suppressOutstanding) + deleteTemplate.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true); deleteTemplate.setValue(Metadata.TASK, taskId); // Need this for recording changes in outstanding table deleteTemplate.setValue(Metadata.DELETION_DATE, DateUtilities.now()); if (tagUuids != null) { - // TODO: We have this as a loop until I can figure out how to make update with multiple rows record outstanding - // entries for each model. Until then, do one row at a time - for (String uuid : tagUuids) { - metadataDao.update(Criterion.and(MetadataCriteria.withKey(TagMetadata.KEY), Metadata.DELETION_DATE.eq(0), - TagMetadata.TASK_UUID.eq(taskUuid), TagMetadata.TAG_UUID.eq(uuid)), deleteTemplate); - } + metadataDao.update(Criterion.and(MetadataCriteria.withKey(TagMetadata.KEY), Metadata.DELETION_DATE.eq(0), + TagMetadata.TASK_UUID.eq(taskUuid), TagMetadata.TAG_UUID.in(tagUuids)), deleteTemplate); } -// Eventually we want this one query version to work -// metadataDao.update(Criterion.and(MetadataCriteria.withKey(TagMetadata.KEY), Metadata.DELETION_DATE.eq(0), -// TagMetadata.TASK_UUID.eq(taskUuid), TagMetadata.TAG_UUID.in(tagUuids)), deleteTemplate); } /** @@ -515,7 +514,7 @@ public final class TagService { // Mark as deleted links that don't exist anymore Metadata deletedLinkTemplate = new Metadata(); deletedLinkTemplate.setValue(Metadata.DELETION_DATE, DateUtilities.now()); - deleteLinks(taskId, taskUuid, existingLinks.toArray(new String[existingLinks.size()])); + deleteLinks(taskId, taskUuid, existingLinks.toArray(new String[existingLinks.size()]), false); return true; }