assertEquals("No output because there is no further information in the GanttObject tree.", "",
ganttChartDO.getGanttObjectsAsXml());
findById(rootObject, getTask(prefix + "2").getId()).setPredecessorOffset(5).setDuration(new BigDecimal("12"));
findById(rootObject, getTask(prefix + "1.1").getId()).setDuration(new BigDecimal("2"));
ganttChartDao.writeGanttObjects(ganttChartDO, rootObject);
String xml = transform(prefix, "<ganttObject id='{}'>"
ganttChartDao.writeGanttObjects(ganttChartDO, ganttObject);
assertEquals(xml, ganttChartDO.getGanttObjectsAsXml());
assertEquals("duration", BigDecimal.TEN, findById(ganttObject, getTask(prefix + "1").getId()).getDuration());
assertEquals("startDate", dh.getDate(), findById(ganttObject, getTask(prefix + "1").getId()).getStartDate());
+ "</children>"
+ "</ganttObject>"), ganttChartDO.getGanttObjectsAsXml());
findById(ganttObject, getTask(prefix + "1").getId()).setStartDate(null);
ganttChartDao.writeGanttObjects(ganttChartDO, ganttObject);
ganttObject = ganttChartDao.readGanttObjects(ganttChartDO).getRootObject();
assertNull("Start date should be stored as null (start date of task is set).",
findById(ganttObject, getTask(prefix + "1").getId())
.getStartDate());
findById(ganttObject, getTask(prefix + "1").getId()).addChild(new GanttTaskImpl(-1).setTitle("Child of 1"));
findById(ganttObject, getTask(prefix + "1.1").getId()).addChild(
new GanttTaskImpl(-2).setTitle("Child of 1.1").addChild(new GanttTaskImpl(-3).setTitle("Grand child of 1.1")));
ganttChartDao.writeGanttObjects(ganttChartDO, ganttObject);