private GanttTaskImpl createGanttObject(final GanttTaskImpl parent, final String workpackageCode, final String title, final String durationDays, final GanttTask dependsOnGanttObject, final GanttRelationType type, final int dependDayOffset) { final GanttTaskImpl node = new GanttTaskImpl(); node.setTitle(title); node.setWorkpackageCode(workpackageCode); node.setDuration(new BigDecimal(durationDays)); node.setVisible(true); if (dependsOnGanttObject != null) { node.setPredecessor(dependsOnGanttObject); } if (type != null) { node.setRelationType(type); } if (dependDayOffset != 0) { node.setPredecessorOffset(dependDayOffset); } if (parent != null) { parent.addChild(node); } node.setPredecessor(dependsOnGanttObject); return node; }
@Test public void circularReferences() { final GanttTaskImpl a1 = createActivity(1).setTitle("a1"); final GanttTaskImpl a1_1 = createActivity(10).setTitle("a1_1"); a1_1.setPredecessor(a1); a1.addChild(a1_1); log.error("The two following error messages about circular reference detection are OK and part of this test."); assertNull(GanttUtils.getCalculatedStartDate(a1)); assertNull(GanttUtils.getCalculatedEndDate(a1)); assertNull(GanttUtils.getCalculatedStartDate(a1_1)); assertNull(GanttUtils.getCalculatedEndDate(a1_1)); }
final GanttTaskImpl a2 = createActivity(-1).setTitle("a2"); final GanttTaskImpl a2_1 = createActivity(2).setTitle("a2_1"); a2_1.setPredecessor(a1); a2.addChild(a2_1); final GanttTaskImpl a2_2 = createActivity(2).setTitle("a2_2"); a2_2.setPredecessor(a2_1); a2.addChild(a2_2); assertDates("2010-09-01", "2010-09-02", a1); assertDates("Start date and duration are fixed", "2010-09-01", "2010-09-03", a2); a2.setStartDate(null).setDuration(null).setPredecessor(a1).setPredecessorOffset(1); assertDates("Start date is calculated from predecessor.", "2010-09-03", "2010-09-08", a2); a2.setDuration(TWO);
activity2.setPredecessor(activity1); assertDate(2010, Calendar.FEBRUARY, 19, GanttUtils.getCalculatedStartDate(activity2)); activity2.setPredecessorOffset(2); a1.setStartDate(day.getDate()); final GanttTaskImpl a2 = createActivity(10).setTitle("a2"); a2.setPredecessor(a1); final GanttTaskImpl a2_1 = createActivity(10).setTitle("a2_1"); a2_1.setPredecessor(a2).setRelationType(GanttRelationType.START_START); a2.addChild(a2_1); final GanttTaskImpl a2_2 = createActivity(2).setTitle("a2_2"); a2_2.setPredecessor(a2).setRelationType(GanttRelationType.START_START); a2.addChild(a2_2); assertDate(2010, Calendar.FEBRUARY, 1, GanttUtils.getCalculatedStartDate(a1));