Further progress on getting movement unit test to pass

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

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

@ -52,7 +52,6 @@ public class GtasksTaskListUpdater {
final AtomicInteger targetTaskIndent = new AtomicInteger(-1);
final AtomicInteger previousIndent = new AtomicInteger(-1);
final AtomicLong previousTask = new AtomicLong(-1);
final Task taskContainer = new Task();
iterateThroughList(list, new ListIterator() {
@Override
@ -71,8 +70,7 @@ public class GtasksTaskListUpdater {
parents.get(parents.get(taskId)));
else
metadata.setValue(GtasksMetadata.PARENT_TASK, Task.NO_ID);
if(PluginServices.getMetadataService().save(metadata))
updateModifiedDate(taskContainer, taskId);
saveAndUpdateModifiedDate(metadata, taskId);
}
} else if(targetTaskIndent.get() > -1) {
// found first task that is not beneath target
@ -80,8 +78,7 @@ public class GtasksTaskListUpdater {
targetTaskIndent.set(-1);
else {
metadata.setValue(GtasksMetadata.INDENT, indent + delta);
PluginServices.getMetadataService().save(metadata);
updateModifiedDate(taskContainer, taskId);
saveAndUpdateModifiedDate(metadata, taskId);
}
} else {
previousIndent.set(indent);
@ -129,20 +126,21 @@ public class GtasksTaskListUpdater {
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) {
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.INDENT, indent);
if(PluginServices.getMetadataService().save(metadata))
updateModifiedDate(taskContainer, node.taskId);
metadata.setValue(GtasksMetadata.PARENT_TASK, node.parent.taskId);
saveAndUpdateModifiedDate(metadata, node.taskId);
}
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) {
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);
iterateThroughList(list, new ListIterator() {
@ -183,6 +181,8 @@ public class GtasksTaskListUpdater {
currentNode.set(new Node(taskId, node));
node.children.add(currentNode.get());
}
previoustIndent.set(indent);
}
});
return root;
@ -197,7 +197,7 @@ public class GtasksTaskListUpdater {
iterateThroughList(list, new ListIterator() {
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.INDENT),
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.setValue(Task.DETAILS_DATE, DateUtilities.now());
PluginServices.getTaskService().save(taskContainer);

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

Loading…
Cancel
Save