Actively prevent duplicate tasks from showing up in subtasks

pull/14/head
Tim Su 14 years ago
parent a09babdc38
commit 12d1292442

@ -1,5 +1,6 @@
package com.todoroo.astrid.subtasks;
import java.util.HashSet;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
@ -109,6 +110,7 @@ public class SubtasksUpdater extends OrderedListUpdater<String> {
public void sanitizeTaskList(Filter filter, String list) {
final AtomicInteger previousIndent = new AtomicInteger(-1);
final AtomicLong previousOrder = new AtomicLong(-1);
final HashSet<Long> taskIds = new HashSet<Long>();
iterateThroughList(filter, list, new OrderedListIterator() {
@Override
@ -116,6 +118,11 @@ public class SubtasksUpdater extends OrderedListUpdater<String> {
if(!metadata.isSaved())
return;
if(taskIds.contains(taskId)) {
metadataService.delete(metadata);
return;
}
long order = metadata.getValue(SubtasksMetadata.ORDER);
if(order <= previousOrder.get()) // bad
order = previousOrder.get() + 1;
@ -130,6 +137,7 @@ public class SubtasksUpdater extends OrderedListUpdater<String> {
previousIndent.set(indent);
previousOrder.set(order);
taskIds.add(taskId);
}
});
}

@ -166,4 +166,12 @@ public class MetadataService {
cursor.close();
}
}
/**
* Deletes the given metadata
* @param metadata
*/
public void delete(Metadata metadata) {
metadataDao.delete(metadata.getId());
}
}

@ -219,9 +219,9 @@ public class TaskService {
if(queryTemplate == null) {
if(whereConstraint == null)
return taskDao.query(Query.select(properties));
return taskDao.query(Query.selectDistinct(properties));
else
return taskDao.query(Query.select(properties).where(whereConstraint));
return taskDao.query(Query.selectDistinct(properties).where(whereConstraint));
}
String sql;

Loading…
Cancel
Save