java-org.hwo.ui/src/org/hwo/ui/gantt/GanttResolver.java

70 lines
1.6 KiB
Java

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);
}
}
}
}
}