Fix for removing tags doesn't remove tag detail

pull/14/head
Tim Su 13 years ago
parent fc7c385a12
commit e8cd162697

@ -78,7 +78,7 @@ public class AlarmService {
metadata.add(item);
}
boolean changed = service.synchronizeMetadata(taskId, metadata, Metadata.KEY.eq(AlarmFields.METADATA_KEY)) > 0;
boolean changed = service.synchronizeMetadata(taskId, metadata, Metadata.KEY.eq(AlarmFields.METADATA_KEY));
if(changed)
scheduleAlarms(taskId);
return changed;

@ -210,7 +210,7 @@ public final class TagService {
metadata.add(item);
}
return service.synchronizeMetadata(taskId, metadata, Metadata.KEY.eq(KEY)) > 0;
return service.synchronizeMetadata(taskId, metadata, Metadata.KEY.eq(KEY));
}
public int delete(String tag) {

@ -92,10 +92,11 @@ public class MetadataService {
* @param id
* @param metadata
* @param metadataKeys
* @return number of items saved
* @return true if there were changes
*/
public int synchronizeMetadata(long taskId, ArrayList<Metadata> metadata,
public boolean synchronizeMetadata(long taskId, ArrayList<Metadata> metadata,
Criterion metadataCriterion) {
boolean dirty = false;
HashSet<ContentValues> newMetadataValues = new HashSet<ContentValues>();
for(Metadata metadatum : metadata) {
metadatum.setValue(Metadata.TASK, taskId);
@ -123,21 +124,21 @@ public class MetadataService {
// not matched. cut it
metadataDao.delete(id);
dirty = true;
}
} finally {
cursor.close();
}
// everything that remains shall be written
int written = 0;
for(ContentValues values : newMetadataValues) {
item.clear();
item.mergeWith(values);
metadataDao.persist(item);
++written;
dirty = true;
}
return written;
return dirty;
}
/**

Loading…
Cancel
Save