During gtasks import, only prompt about tasks that aren't already in the specified tag

pull/14/head
Sam Bosley 11 years ago
parent 2c49b30c1f
commit 8049a3395d

@ -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 {

@ -194,5 +194,15 @@ public class MetadataDao extends DatabaseDao<Metadata> {
return new TodorooCursor<Metadata>(cursor, properties);
}
public boolean taskIsInTag(String taskUuid, String tagUuid) {
TodorooCursor<Metadata> 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();
}
}
}

Loading…
Cancel
Save