Fix for task save triggered every time by tag erroneously

pull/14/head
Tim Su 13 years ago
parent 0153ec1bda
commit b4dcfd7970

@ -20,8 +20,10 @@ import com.todoroo.astrid.dao.MetadataDao;
import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria;
import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.MetadataService;
import com.todoroo.astrid.service.TagDataService;
import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.utility.Flags;
@ -57,11 +59,11 @@ public final class TagService {
// --- implementation details
@Autowired
private MetadataDao metadataDao;
@Autowired MetadataDao metadataDao;
@Autowired
private TaskService taskService;
@Autowired TaskService taskService;
@Autowired TagDataService tagDataService;
public TagService() {
DependencyInjectionService.getInstance().inject(this);
@ -207,6 +209,10 @@ public final class TagService {
Metadata item = new Metadata();
item.setValue(Metadata.KEY, KEY);
item.setValue(TAG, tag);
TagData tagData = tagDataService.getTag(tag, TagData.REMOTE_ID);
if(tagData != null)
item.setValue(REMOTE_ID, tagData.getValue(TagData.REMOTE_ID));
metadata.add(item);
}

@ -2,6 +2,7 @@ package com.todoroo.astrid.service;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Map.Entry;
import android.content.ContentValues;
@ -101,7 +102,13 @@ public class MetadataService {
for(Metadata metadatum : metadata) {
metadatum.setValue(Metadata.TASK, taskId);
metadatum.clearValue(Metadata.ID);
newMetadataValues.add(metadatum.getMergedValues());
ContentValues values = metadatum.getMergedValues();
for(Entry<String, Object> entry : values.valueSet()) {
if(entry.getKey().startsWith("value")) //$NON-NLS-1$
values.put(entry.getKey(), entry.getValue().toString());
}
newMetadataValues.add(values);
}
Metadata item = new Metadata();
@ -117,6 +124,7 @@ public class MetadataService {
item.clearValue(Metadata.ID);
item.clearValue(Metadata.CREATION_DATE);
ContentValues itemMergedValues = item.getMergedValues();
if(newMetadataValues.contains(itemMergedValues)) {
newMetadataValues.remove(itemMergedValues);
continue;

Loading…
Cancel
Save