package org.hwo.ui.gantt; import org.hwo.datetime.DateTime; public class GanttResolver { JGantt gantt; public GanttResolver(JGantt gantt) { this.gantt = gantt; } /* Optimieren links: (Einsetzen) * * Schneidendes Objekt bei startTime finden, startTime korrigieren, wiederholen für abhängige in gleicher resource * * */ public void leftOptimize(IGanttObject object){ for (IGanttResource resource: object.getResources()){ IGanttObject o = gantt.findObjectAt(resource, object.getStartTime()); if (o != null){ DateTime dt = o.getEndTime(); dt.addSeconds(1); System.err.println(String.format("Resolver: Move Start Time of %s from %s to %s after end of %s",object.toString(),object.getStartTime(),dt.toString(),o.toString())); object.setStartTime(dt); for (IGanttObject dobj: gantt.findDependedObjects(o, resource)){ leftOptimize(dobj); } } } } /* Optimieren rechts: (Verschieben) * * Objekte mit StartTime innerhalb finden, und nach rechts verschieben * * */ public void rightOptimize(IGanttObject object){ for (IGanttResource resource: object.getResources()){ IGanttObject o = gantt.findObjectAt(resource, object.getStartTime()); if (o != null){ DateTime dt = o.getEndTime(); dt.addSeconds(1); System.err.println(String.format("Resolver: Move Start Time of %s from %s to %s after end of %s",object.toString(),object.getStartTime(),dt.toString(),o.toString())); object.setStartTime(dt); for (IGanttObject dobj: gantt.findDependedObjects(o, resource)){ leftOptimize(dobj); } } } } }