Migrate list to use tag name. Fix unit tests with rearranging

pull/14/head
Tim Su 13 years ago
parent b12ffda59c
commit c844b8967a

@ -75,7 +75,8 @@ abstract public class OrderedListUpdater<LIST> {
public void processTask(long taskId, Metadata metadata) {
if(!metadata.isSaved())
metadata = createEmptyMetadata(list, taskId);
int indent = metadata.getValue(indentProperty());
int indent = metadata.containsNonNullValue(indentProperty()) ?
metadata.getValue(indentProperty()) : 0;
if(targetTaskId == taskId) {
// if indenting is warranted, indent me and my children
@ -167,11 +168,12 @@ abstract public class OrderedListUpdater<LIST> {
Node sibling = findNode(root, moveBeforeTaskId);
if(sibling != null && !ancestorOf(target, sibling)) {
int index = sibling.parent.children.indexOf(sibling);
target.parent.children.remove(target);
if(target.parent == sibling.parent &&
target.parent.children.indexOf(target) < index)
index--;
target.parent.children.remove(target);
sibling.parent.children.add(index, target);
target.parent = sibling.parent;
}

@ -50,11 +50,10 @@ public class SubtasksListFragment extends TaskListFragment {
getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics);
}
@SuppressWarnings("nls")
@Override
protected void setUpTaskList() {
updater.applySubtasksToFilter(filter);
updater.applySubtasksToFilter(filter, null);
super.setUpTaskList();

@ -2,22 +2,24 @@ package com.todoroo.astrid.subtasks;
import com.todoroo.andlib.data.Property.IntegerProperty;
import com.todoroo.andlib.data.Property.LongProperty;
import com.todoroo.andlib.data.Property.StringProperty;
import com.todoroo.astrid.data.Metadata;
/**
* Metadata entries for a GTasks Task
* Metadata entries for a Subtask list
*
* @author Tim Su <tim@todoroo.com>
*
*/
public class SubtasksMetadata {
public static final long LIST_ACTIVE_TASKS = 0;
public static final String LIST_ACTIVE_TASKS = "[AT]"; //$NON-NLS-1$
/** metadata key */
public static final String METADATA_KEY = "subtasks"; //$NON-NLS-1$
/** list id */
public static final LongProperty LIST_ID = new LongProperty(Metadata.TABLE,
/** tag name */
public static final StringProperty TAG = new StringProperty(Metadata.TABLE,
Metadata.VALUE1.name);
public static final IntegerProperty INDENT = new IntegerProperty(Metadata.TABLE,

@ -12,7 +12,7 @@ import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.MetadataService;
import com.todoroo.astrid.service.TaskService;
public class SubtasksUpdater extends OrderedListUpdater<Long> {
public class SubtasksUpdater extends OrderedListUpdater<String> {
private static final String METADATA_ID = "mdi"; //$NON-NLS-1$
@ -34,12 +34,12 @@ public class SubtasksUpdater extends OrderedListUpdater<Long> {
}
@Override
protected Metadata getTaskMetadata(Long list, long taskId) {
protected Metadata getTaskMetadata(String list, long taskId) {
TodorooCursor<Metadata> cursor = metadataService.query(Query.select(Metadata.PROPERTIES).where(
Criterion.and(
Metadata.TASK.eq(taskId),
Metadata.KEY.eq(SubtasksMetadata.METADATA_KEY),
SubtasksMetadata.LIST_ID.eq(list))));
SubtasksMetadata.TAG.eq(list))));
try {
cursor.moveToFirst();
if(cursor.isAfterLast())
@ -51,16 +51,16 @@ public class SubtasksUpdater extends OrderedListUpdater<Long> {
}
@Override
protected Metadata createEmptyMetadata(Long list, long taskId) {
protected Metadata createEmptyMetadata(String list, long taskId) {
Metadata m = new Metadata();
m.setValue(Metadata.TASK, taskId);
m.setValue(Metadata.KEY, SubtasksMetadata.METADATA_KEY);
m.setValue(SubtasksMetadata.LIST_ID, list);
m.setValue(SubtasksMetadata.TAG, list);
return m;
}
@Override
protected void iterateThroughList(Filter filter, Long list, OrderedListIterator iterator) {
protected void iterateThroughList(Filter filter, String list, OrderedListIterator iterator) {
TodorooCursor<Task> cursor = taskService.query(Query.select(Task.ID,
Metadata.ID.as(METADATA_ID), Metadata.TASK, Metadata.KEY, SubtasksMetadata.INDENT,
SubtasksMetadata.ORDER).withQueryTemplate(filter.sqlQuery));
@ -79,12 +79,16 @@ public class SubtasksUpdater extends OrderedListUpdater<Long> {
}
@SuppressWarnings("nls")
public void applySubtasksToFilter(Filter filter) {
public void applySubtasksToFilter(Filter filter, String tagName) {
String query = filter.sqlQuery;
String subtaskJoin = String.format("LEFT JOIN %s ON (%s = %s AND %s = '%s') ",
if(tagName == null)
tagName = SubtasksMetadata.LIST_ACTIVE_TASKS;
String subtaskJoin = String.format("LEFT JOIN %s ON (%s = %s AND %s = '%s' AND %s = '%s') ",
Metadata.TABLE, Task.ID, Metadata.TASK,
Metadata.KEY, SubtasksMetadata.METADATA_KEY);
Metadata.KEY, SubtasksMetadata.METADATA_KEY,
SubtasksMetadata.TAG, tagName);
if(!query.contains(subtaskJoin)) {
query = subtaskJoin + query;
query = query.replaceAll("ORDER BY .*", "");

@ -14,7 +14,7 @@ public class SubtasksMovingTest extends DatabaseTestCase {
private Filter filter;
private Task A, B, C, D, E, F;
private final long list = SubtasksMetadata.LIST_ACTIVE_TASKS;
private final String list = SubtasksMetadata.LIST_ACTIVE_TASKS;
/* Starting State:
*
@ -125,7 +125,7 @@ public class SubtasksMovingTest extends DatabaseTestCase {
updater = new SubtasksUpdater();
filter = CoreFilterExposer.buildInboxFilter(getContext().getResources());
updater.applySubtasksToFilter(filter);
updater.applySubtasksToFilter(filter, list);
}
private Task[] givenTasksABCDEF() {

Loading…
Cancel
Save