Further progress on getting movement unit test to pass

pull/14/head
Tim Su 15 years ago
parent d7d87f84ee
commit 919eec9c82

@ -55,6 +55,7 @@ public class GtasksListActivity extends DraggableTaskListActivity {
public void drop(int from, int to) { public void drop(int from, int to) {
long targetTaskId = taskAdapter.getItemId(from); long targetTaskId = taskAdapter.getItemId(from);
long destinationTaskId = taskAdapter.getItemId(to); long destinationTaskId = taskAdapter.getItemId(to);
System.err.format("%d -> %d ::: %d -> %d\n", from, to, targetTaskId, destinationTaskId);
gtasksTaskListUpdater.moveTo(listId, targetTaskId, destinationTaskId); gtasksTaskListUpdater.moveTo(listId, targetTaskId, destinationTaskId);
loadTaskListContent(true); loadTaskListContent(true);
} }

@ -52,7 +52,6 @@ public class GtasksTaskListUpdater {
final AtomicInteger targetTaskIndent = new AtomicInteger(-1); final AtomicInteger targetTaskIndent = new AtomicInteger(-1);
final AtomicInteger previousIndent = new AtomicInteger(-1); final AtomicInteger previousIndent = new AtomicInteger(-1);
final AtomicLong previousTask = new AtomicLong(-1); final AtomicLong previousTask = new AtomicLong(-1);
final Task taskContainer = new Task();
iterateThroughList(list, new ListIterator() { iterateThroughList(list, new ListIterator() {
@Override @Override
@ -71,8 +70,7 @@ public class GtasksTaskListUpdater {
parents.get(parents.get(taskId))); parents.get(parents.get(taskId)));
else else
metadata.setValue(GtasksMetadata.PARENT_TASK, Task.NO_ID); metadata.setValue(GtasksMetadata.PARENT_TASK, Task.NO_ID);
if(PluginServices.getMetadataService().save(metadata)) saveAndUpdateModifiedDate(metadata, taskId);
updateModifiedDate(taskContainer, taskId);
} }
} else if(targetTaskIndent.get() > -1) { } else if(targetTaskIndent.get() > -1) {
// found first task that is not beneath target // found first task that is not beneath target
@ -80,8 +78,7 @@ public class GtasksTaskListUpdater {
targetTaskIndent.set(-1); targetTaskIndent.set(-1);
else { else {
metadata.setValue(GtasksMetadata.INDENT, indent + delta); metadata.setValue(GtasksMetadata.INDENT, indent + delta);
PluginServices.getMetadataService().save(metadata); saveAndUpdateModifiedDate(metadata, taskId);
updateModifiedDate(taskContainer, taskId);
} }
} else { } else {
previousIndent.set(indent); previousIndent.set(indent);
@ -129,20 +126,21 @@ public class GtasksTaskListUpdater {
sibling.parent.children.add(index, sibling); sibling.parent.children.add(index, sibling);
} }
traverseTreeAndWriteValues(root, new AtomicInteger(0), 0, new Task()); traverseTreeAndWriteValues(root, new AtomicInteger(0), -1);
} }
private void traverseTreeAndWriteValues(Node node, AtomicInteger order, int indent, Task taskContainer) { private void traverseTreeAndWriteValues(Node node, AtomicInteger order, int indent) {
if(node.taskId != -1) { if(node.taskId != -1) {
Metadata metadata = gtasksMetadataService.getTaskMetadata(node.taskId); Metadata metadata = gtasksMetadataService.getTaskMetadata(node.taskId);
System.err.println("task id " + node.taskId + ", order " + order.get());
metadata.setValue(GtasksMetadata.ORDER, order.getAndIncrement()); metadata.setValue(GtasksMetadata.ORDER, order.getAndIncrement());
metadata.setValue(GtasksMetadata.INDENT, indent); metadata.setValue(GtasksMetadata.INDENT, indent);
if(PluginServices.getMetadataService().save(metadata)) metadata.setValue(GtasksMetadata.PARENT_TASK, node.parent.taskId);
updateModifiedDate(taskContainer, node.taskId); saveAndUpdateModifiedDate(metadata, node.taskId);
} }
for(Node child : node.children) { for(Node child : node.children) {
traverseTreeAndWriteValues(child, order, indent + 1, taskContainer); traverseTreeAndWriteValues(child, order, indent + 1);
} }
} }
@ -159,7 +157,7 @@ public class GtasksTaskListUpdater {
private Node buildTreeModel(StoreObject list) { private Node buildTreeModel(StoreObject list) {
final Node root = new Node(-1, null); final Node root = new Node(-1, null);
final AtomicInteger previoustIndent = new AtomicInteger(0); final AtomicInteger previoustIndent = new AtomicInteger(-1);
final AtomicReference<Node> currentNode = new AtomicReference<Node>(root); final AtomicReference<Node> currentNode = new AtomicReference<Node>(root);
iterateThroughList(list, new ListIterator() { iterateThroughList(list, new ListIterator() {
@ -183,6 +181,8 @@ public class GtasksTaskListUpdater {
currentNode.set(new Node(taskId, node)); currentNode.set(new Node(taskId, node));
node.children.add(currentNode.get()); node.children.add(currentNode.get());
} }
previoustIndent.set(indent);
} }
}); });
return root; return root;
@ -197,7 +197,7 @@ public class GtasksTaskListUpdater {
iterateThroughList(list, new ListIterator() { iterateThroughList(list, new ListIterator() {
public void processTask(long taskId, Metadata metadata) { public void processTask(long taskId, Metadata metadata) {
System.err.format("%d: %d, indent:%d, parent:%d\n", taskId, //$NON-NLS-1$ System.err.format("id %d: order %d, indent:%d, parent:%d\n", taskId, //$NON-NLS-1$
metadata.getValue(GtasksMetadata.ORDER), metadata.getValue(GtasksMetadata.ORDER),
metadata.getValue(GtasksMetadata.INDENT), metadata.getValue(GtasksMetadata.INDENT),
metadata.getValue(GtasksMetadata.PARENT_TASK)); metadata.getValue(GtasksMetadata.PARENT_TASK));
@ -205,7 +205,12 @@ public class GtasksTaskListUpdater {
}); });
} }
private void updateModifiedDate(Task taskContainer, long taskId) { private final Task taskContainer = new Task();
private void saveAndUpdateModifiedDate(Metadata metadata, long taskId) {
if(metadata.getSetValues().size() == 0)
return;
PluginServices.getMetadataService().save(metadata);
taskContainer.setId(taskId); taskContainer.setId(taskId);
taskContainer.setValue(Task.DETAILS_DATE, DateUtilities.now()); taskContainer.setValue(Task.DETAILS_DATE, DateUtilities.now());
PluginServices.getTaskService().save(taskContainer); PluginServices.getTaskService().save(taskContainer);

@ -30,17 +30,17 @@ public class GtasksTaskMovingTest extends DatabaseTestCase {
whenTriggerMove(F, null); whenTriggerMove(F, null);
thenExpectMetadataIndentAndOrder(E, 4, 0); thenExpectMetadataOrderAndIndent(E, 4, 0);
thenExpectMetadataIndentAndOrder(F, 5, 0); thenExpectMetadataOrderAndIndent(F, 5, 0);
} }
public void testMoveDownToListbottom() { public void testMoveDownToListBottom() {
givenTasksABCDEF(); givenTasksABCDEF();
whenTriggerMove(E, null); whenTriggerMove(E, null);
thenExpectMetadataIndentAndOrder(E, 5, 0); thenExpectMetadataOrderAndIndent(E, 5, 0);
thenExpectMetadataIndentAndOrder(F, 4, 00); thenExpectMetadataOrderAndIndent(F, 4, 0);
} }
public void testMoveUpSimple() { public void testMoveUpSimple() {
@ -48,11 +48,11 @@ public class GtasksTaskMovingTest extends DatabaseTestCase {
whenTriggerMove(F, E); whenTriggerMove(F, E);
thenExpectMetadataIndentAndOrder(E, 5, 0); thenExpectMetadataOrderAndIndent(E, 5, 0);
thenExpectMetadataIndentAndOrder(F, 4, 00); thenExpectMetadataOrderAndIndent(F, 4, 0);
} }
public void testMoveWithSubtasks() { public void testMoveUpWithSubtasks() {
givenTasksABCDEF(); givenTasksABCDEF();
whenTriggerMove(C, B); whenTriggerMove(C, B);
@ -64,13 +64,13 @@ public class GtasksTaskMovingTest extends DatabaseTestCase {
* B * B
*/ */
thenExpectMetadataIndentAndOrder(A, 0, 0); thenExpectMetadataOrderAndIndent(A, 0, 0);
thenExpectMetadataIndentAndOrder(B, 3, 1); thenExpectMetadataOrderAndIndent(B, 3, 1);
thenExpectMetadataIndentAndOrder(C, 1, 1); thenExpectMetadataOrderAndIndent(C, 1, 1);
thenExpectMetadataIndentAndOrder(D, 2, 2); thenExpectMetadataOrderAndIndent(D, 2, 2);
} }
public void testMoveThroughSubtasks() { public void testMoveDownThroughSubtasks() {
givenTasksABCDEF(); givenTasksABCDEF();
whenTriggerMove(B, E); whenTriggerMove(B, E);
@ -83,10 +83,10 @@ public class GtasksTaskMovingTest extends DatabaseTestCase {
* E * E
*/ */
thenExpectMetadataIndentAndOrder(A, 0, 0); thenExpectMetadataOrderAndIndent(A, 0, 0);
thenExpectMetadataIndentAndOrder(B, 3, 0); thenExpectMetadataOrderAndIndent(B, 3, 0);
thenExpectMetadataIndentAndOrder(C, 1, 1); thenExpectMetadataOrderAndIndent(C, 1, 1);
thenExpectMetadataIndentAndOrder(D, 2, 2); thenExpectMetadataOrderAndIndent(D, 2, 2);
} }
public void testMoveUpAboveParent() { public void testMoveUpAboveParent() {
@ -103,9 +103,9 @@ public class GtasksTaskMovingTest extends DatabaseTestCase {
* F * F
*/ */
thenExpectMetadataIndentAndOrder(A, 1, 0); thenExpectMetadataOrderAndIndent(A, 1, 0);
thenExpectMetadataIndentAndOrder(B, 0, 0); thenExpectMetadataOrderAndIndent(B, 0, 0);
thenExpectMetadataIndentAndOrder(C, 2, 1); thenExpectMetadataOrderAndIndent(C, 2, 1);
} }
public void testMoveDownWithChildren() { public void testMoveDownWithChildren() {
@ -122,11 +122,11 @@ public class GtasksTaskMovingTest extends DatabaseTestCase {
* F * F
*/ */
thenExpectMetadataIndentAndOrder(A, 0, 0); thenExpectMetadataOrderAndIndent(A, 0, 0);
thenExpectMetadataIndentAndOrder(B, 1, 1); thenExpectMetadataOrderAndIndent(B, 1, 1);
thenExpectMetadataIndentAndOrder(C, 3, 0); thenExpectMetadataOrderAndIndent(C, 3, 0);
thenExpectMetadataIndentAndOrder(D, 4, 1); thenExpectMetadataOrderAndIndent(D, 4, 1);
thenExpectMetadataIndentAndOrder(E, 2, 0); thenExpectMetadataOrderAndIndent(E, 2, 0);
} }
public void testMoveDownIndentingTwice() { public void testMoveDownIndentingTwice() {
@ -142,11 +142,11 @@ public class GtasksTaskMovingTest extends DatabaseTestCase {
* D * D
*/ */
thenExpectMetadataIndentAndOrder(A, 0, 0); thenExpectMetadataOrderAndIndent(A, 0, 0);
thenExpectMetadataIndentAndOrder(B, 1, 1); thenExpectMetadataOrderAndIndent(B, 1, 1);
thenExpectMetadataIndentAndOrder(C, 2, 1); thenExpectMetadataOrderAndIndent(C, 2, 1);
thenExpectMetadataIndentAndOrder(D, 4, 0); thenExpectMetadataOrderAndIndent(D, 4, 0);
thenExpectMetadataIndentAndOrder(E, 3, 0); thenExpectMetadataOrderAndIndent(E, 3, 0);
} }
public void testMoveUpMultiple() { public void testMoveUpMultiple() {
@ -161,10 +161,10 @@ public class GtasksTaskMovingTest extends DatabaseTestCase {
* B * B
*/ */
thenExpectMetadataIndentAndOrder(A, 2, 0); thenExpectMetadataOrderAndIndent(A, 2, 0);
thenExpectMetadataIndentAndOrder(B, 3, 1); thenExpectMetadataOrderAndIndent(B, 3, 1);
thenExpectMetadataIndentAndOrder(C, 0, 0); thenExpectMetadataOrderAndIndent(C, 0, 0);
thenExpectMetadataIndentAndOrder(D, 1, 1); thenExpectMetadataOrderAndIndent(D, 1, 1);
} }
public void testMoveUpIntoSublist() { public void testMoveUpIntoSublist() {
@ -180,12 +180,12 @@ public class GtasksTaskMovingTest extends DatabaseTestCase {
* D * D
*/ */
thenExpectMetadataIndentAndOrder(A, 0, 0); thenExpectMetadataOrderAndIndent(A, 0, 0);
thenExpectMetadataIndentAndOrder(B, 1, 1); thenExpectMetadataOrderAndIndent(B, 1, 1);
thenExpectMetadataIndentAndOrder(C, 2, 1); thenExpectMetadataOrderAndIndent(C, 2, 1);
thenExpectMetadataIndentAndOrder(D, 4, 2); thenExpectMetadataOrderAndIndent(D, 4, 2);
thenExpectMetadataIndentAndOrder(E, 5, 0); thenExpectMetadataOrderAndIndent(E, 5, 0);
thenExpectMetadataIndentAndOrder(F, 3, 2); thenExpectMetadataOrderAndIndent(F, 3, 2);
} }
public void testMoveDownMultiple() { public void testMoveDownMultiple() {
@ -201,12 +201,12 @@ public class GtasksTaskMovingTest extends DatabaseTestCase {
* B * B
*/ */
thenExpectMetadataIndentAndOrder(A, 0, 0); thenExpectMetadataOrderAndIndent(A, 0, 0);
thenExpectMetadataIndentAndOrder(B, 4, 0); thenExpectMetadataOrderAndIndent(B, 4, 0);
thenExpectMetadataIndentAndOrder(C, 1, 1); thenExpectMetadataOrderAndIndent(C, 1, 1);
thenExpectMetadataIndentAndOrder(D, 2, 2); thenExpectMetadataOrderAndIndent(D, 2, 2);
thenExpectMetadataIndentAndOrder(E, 3, 0); thenExpectMetadataOrderAndIndent(E, 3, 0);
thenExpectMetadataIndentAndOrder(F, 5, 0); thenExpectMetadataOrderAndIndent(F, 5, 0);
} }
@ -215,9 +215,10 @@ public class GtasksTaskMovingTest extends DatabaseTestCase {
/** moveTo = null => move to end */ /** moveTo = null => move to end */
private void whenTriggerMove(Task target, Task moveTo) { private void whenTriggerMove(Task target, Task moveTo) {
gtasksTaskListUpdater.moveTo("1", target.getId(), moveTo == null ? -1 : moveTo.getId()); gtasksTaskListUpdater.moveTo("1", target.getId(), moveTo == null ? -1 : moveTo.getId());
gtasksTaskListUpdater.debugPrint("1");
} }
private void thenExpectMetadataIndentAndOrder(Task task, int order, int indent) { private void thenExpectMetadataOrderAndIndent(Task task, int order, int indent) {
Metadata metadata = gtasksMetadataService.getTaskMetadata(task.getId()); Metadata metadata = gtasksMetadataService.getTaskMetadata(task.getId());
assertNotNull("metadata was found", metadata); assertNotNull("metadata was found", metadata);
assertEquals("order", order, (int)metadata.getValue(GtasksMetadata.ORDER)); assertEquals("order", order, (int)metadata.getValue(GtasksMetadata.ORDER));
@ -243,7 +244,7 @@ public class GtasksTaskMovingTest extends DatabaseTestCase {
* F * F
*/ */
private Task[] givenTasksABCDEF() { private Task[] givenTasksABCDEF() {
return new Task[] { Task[] tasks = new Task[] {
A = createTask("A", 0, 0), A = createTask("A", 0, 0),
B = createTask("B", 1, 1), B = createTask("B", 1, 1),
C = createTask("C", 2, 1), C = createTask("C", 2, 1),
@ -251,6 +252,8 @@ public class GtasksTaskMovingTest extends DatabaseTestCase {
E = createTask("E", 4, 0), E = createTask("E", 4, 0),
F = createTask("F", 5, 0), F = createTask("F", 5, 0),
}; };
gtasksTaskListUpdater.correctMetadataForList("1");
return tasks;
} }
private Task createTask(String title, int order, int indent) { private Task createTask(String title, int order, int indent) {

Loading…
Cancel
Save