Added flag for suppressing outstanding entries when syncing tags

pull/14/head
Sam Bosley 13 years ago
parent 55b2f827c0
commit 987c34811e

@ -202,7 +202,7 @@ public class MakeChanges<TYPE extends RemoteModel> 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);
} }
} }

@ -283,6 +283,8 @@ public final class TagService {
} }
Metadata link = TagMetadata.newTagMetadata(taskId, taskUuid, name, tagUuid); 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), if (metadataDao.update(Criterion.and(MetadataCriteria.byTaskAndwithKey(taskId, TagMetadata.KEY),
TagMetadata.TASK_UUID.eq(taskUuid), TagMetadata.TAG_UUID.eq(tagUuid)), link) <= 0) { TagMetadata.TASK_UUID.eq(taskUuid), TagMetadata.TAG_UUID.eq(tagUuid)), link) <= 0) {
if (suppressOutstanding) if (suppressOutstanding)
@ -300,8 +302,10 @@ public final class TagService {
* @param taskUuid * @param taskUuid
* @param tagUuid * @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(); 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.TASK, taskId); // Need this for recording changes in outstanding table
deleteTemplate.setValue(Metadata.DELETION_DATE, DateUtilities.now()); deleteTemplate.setValue(Metadata.DELETION_DATE, DateUtilities.now());
metadataDao.update(Criterion.and(MetadataCriteria.withKey(TagMetadata.KEY), Metadata.DELETION_DATE.eq(0), metadataDao.update(Criterion.and(MetadataCriteria.withKey(TagMetadata.KEY), Metadata.DELETION_DATE.eq(0),
@ -313,21 +317,16 @@ public final class TagService {
* @param taskUuid * @param taskUuid
* @param tagUuids * @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(); 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.TASK, taskId); // Need this for recording changes in outstanding table
deleteTemplate.setValue(Metadata.DELETION_DATE, DateUtilities.now()); deleteTemplate.setValue(Metadata.DELETION_DATE, DateUtilities.now());
if (tagUuids != null) { if (tagUuids != null) {
// TODO: We have this as a loop until I can figure out how to make update with multiple rows record outstanding metadataDao.update(Criterion.and(MetadataCriteria.withKey(TagMetadata.KEY), Metadata.DELETION_DATE.eq(0),
// entries for each model. Until then, do one row at a time TagMetadata.TASK_UUID.eq(taskUuid), TagMetadata.TAG_UUID.in(tagUuids)), deleteTemplate);
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);
}
} }
// 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 // Mark as deleted links that don't exist anymore
Metadata deletedLinkTemplate = new Metadata(); Metadata deletedLinkTemplate = new Metadata();
deletedLinkTemplate.setValue(Metadata.DELETION_DATE, DateUtilities.now()); 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; return true;
} }

Loading…
Cancel
Save