/*
* Created on 24.02.2005
*/
package net.sourceforge.ganttproject.test.task;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import net.sourceforge.ganttproject.CustomPropertyClass;
import net.sourceforge.ganttproject.CustomPropertyDefinition;
import net.sourceforge.ganttproject.CustomPropertyManager;
import net.sourceforge.ganttproject.task.Task;
import net.sourceforge.ganttproject.task.TaskManager;
/**
* @author bard
*/
public class ImportTasksTestCase extends TaskTestCase {
public void testImportingPreservesIDs() {
TaskManager taskManager = getTaskManager();
{
Task root = taskManager.getTaskHierarchy().getRootTask();
Task[] nestedTasks = taskManager.getTaskHierarchy().getNestedTasks(root);
assertEquals(
"Unexpected count of the root's children BEFORE importing",
0, nestedTasks.length);
}
TaskManager importFrom = newTaskManager();
{
Task importRoot = importFrom.getTaskHierarchy().getRootTask();
importFrom.createTask(2).move(importRoot);
importFrom.createTask(3).move(importRoot);
}
taskManager.importData(importFrom, Collections.<CustomPropertyDefinition, CustomPropertyDefinition>emptyMap());
{
Task root = taskManager.getTaskHierarchy().getRootTask();
Task[] nestedTasks = taskManager.getTaskHierarchy().getNestedTasks(
root);
assertEquals(
"Unexpected count of the root's children AFTER importing. root="
+ root, 2, nestedTasks.length);
List<Integer> expectedIDs = Arrays.asList(new Integer[] { new Integer(2),
new Integer(3) });
List<Integer> actualIds = new ArrayList<Integer>(2);
actualIds.add(new Integer(nestedTasks[0].getTaskID()));
actualIds.add(new Integer(nestedTasks[1].getTaskID()));
assertEquals("Unexpected IDs of the imported tasks", new HashSet<Integer>(
expectedIDs), new HashSet<Integer>(actualIds));
}
}
private static CustomPropertyDefinition findCustomPropertyByName(CustomPropertyManager mgr, String name) {
for (CustomPropertyDefinition def : mgr.getDefinitions()) {
if (def.getName().equals(name)) {
return def;
}
}
return null;
}
public void testImportCustomColumns() {
TaskManager importTo = getTaskManager();
{
CustomPropertyDefinition def = importTo.getCustomPropertyManager().createDefinition(
"col1", CustomPropertyClass.TEXT.getID(), "foo", "foo");
Task root = importTo.getTaskHierarchy().getRootTask();
importTo.createTask(1).move(root);
assertEquals("foo", importTo.getTask(1).getCustomValues().getValue(def));
}
TaskManager importFrom = newTaskManager();
{
CustomPropertyDefinition def = importFrom.getCustomPropertyManager().createDefinition(
"col1", CustomPropertyClass.TEXT.getID(), "bar", "bar");
Task root = importTo.getTaskHierarchy().getRootTask();
importFrom.createTask(1).move(root);
assertEquals("bar", importFrom.getTask(1).getCustomValues().getValue(def));
}
Map<CustomPropertyDefinition, CustomPropertyDefinition> customDefsMapping =
importTo.getCustomPropertyManager().importData(importFrom.getCustomPropertyManager());
importTo.importData(importFrom, customDefsMapping);
CustomPropertyDefinition fooDef = findCustomPropertyByName(importTo.getCustomPropertyManager(), "foo");
assertNotNull(fooDef);
assertEquals("foo", importTo.getTask(1).getCustomValues().getValue(fooDef));
CustomPropertyDefinition barDef = findCustomPropertyByName(importTo.getCustomPropertyManager(), "bar");
assertNotNull(barDef);
assertEquals("bar", importTo.getTask(1).getCustomValues().getValue(barDef));
}
}