From 8049a3395d6ac2f8cee9490a8f1bd1d85bab4eb8 Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Tue, 5 Mar 2013 10:43:05 -0800 Subject: [PATCH] During gtasks import, only prompt about tasks that aren't already in the specified tag --- .../astrid/gtasks/sync/GtasksSyncV2Provider.java | 8 +++++++- astrid/src/com/todoroo/astrid/dao/MetadataDao.java | 10 ++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/astrid/plugin-src/com/todoroo/astrid/gtasks/sync/GtasksSyncV2Provider.java b/astrid/plugin-src/com/todoroo/astrid/gtasks/sync/GtasksSyncV2Provider.java index f9c620096..2bc8653ee 100644 --- a/astrid/plugin-src/com/todoroo/astrid/gtasks/sync/GtasksSyncV2Provider.java +++ b/astrid/plugin-src/com/todoroo/astrid/gtasks/sync/GtasksSyncV2Provider.java @@ -29,6 +29,7 @@ import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.Preferences; import com.todoroo.astrid.actfm.sync.ActFmPreferenceService; import com.todoroo.astrid.core.PluginServices; +import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria; import com.todoroo.astrid.dao.StoreObjectDao; import com.todoroo.astrid.dao.TagDataDao; @@ -64,6 +65,7 @@ public class GtasksSyncV2Provider extends SyncV2Provider { @Autowired TaskService taskService; @Autowired MetadataService metadataService; + @Autowired MetadataDao metadataDao; @Autowired StoreObjectDao storeObjectDao; @Autowired ActFmPreferenceService actFmPreferenceService; @Autowired GtasksPreferenceService gtasksPreferenceService; @@ -423,7 +425,9 @@ public class GtasksSyncV2Provider extends SyncV2Provider { existingTag.moveToFirst(); tagUuid = existingTag.get(TagData.UUID); - if (tagMetadataDao.tagHasMembers(tagUuid)) { + boolean taskIsInTag = metadataDao.taskIsInTag(tasks.get(Task.UUID), tagUuid); + + if (tagMetadataDao.tagHasMembers(tagUuid) && !taskIsInTag) { GtasksImportTuple tuple = new GtasksImportTuple(); tuple.taskId = tasks.get(Task.ID); tuple.taskUuid = tasks.get(Task.UUID); @@ -433,6 +437,8 @@ public class GtasksSyncV2Provider extends SyncV2Provider { if (gtCallback != null) gtCallback.addImportConflict(tuple); + continue; + } else if (taskIsInTag) { continue; } } else { diff --git a/astrid/src/com/todoroo/astrid/dao/MetadataDao.java b/astrid/src/com/todoroo/astrid/dao/MetadataDao.java index 08a5aae96..97b045383 100644 --- a/astrid/src/com/todoroo/astrid/dao/MetadataDao.java +++ b/astrid/src/com/todoroo/astrid/dao/MetadataDao.java @@ -194,5 +194,15 @@ public class MetadataDao extends DatabaseDao { return new TodorooCursor(cursor, properties); } + public boolean taskIsInTag(String taskUuid, String tagUuid) { + TodorooCursor cursor = query(Query.select(Metadata.ID).where(Criterion.and(MetadataCriteria.withKey(TaskToTagMetadata.KEY), + TaskToTagMetadata.TASK_UUID.eq(taskUuid), TaskToTagMetadata.TAG_UUID.eq(tagUuid), Metadata.DELETION_DATE.eq(0)))); + try { + return cursor.getCount() > 0; + } finally { + cursor.close(); + } + } + }