diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/data/criticalpath/CriticalPathCalculator.java b/ganttzk/src/main/java/org/zkoss/ganttz/data/criticalpath/CriticalPathCalculator.java index 6cf998dd8..b3ef281da 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/data/criticalpath/CriticalPathCalculator.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/data/criticalpath/CriticalPathCalculator.java @@ -91,13 +91,11 @@ public class CriticalPathCalculator> { } private InitialNode createBeginningOfProjectNode() { - return new InitialNode(new HashSet(graph.getInitialTasks()), - graph); + return new InitialNode(new HashSet(graph.getInitialTasks())); } private LastNode createEndOfProjectNode() { - return new LastNode(new HashSet(graph.getLatestTasks()), - graph); + return new LastNode(new HashSet(graph.getLatestTasks())); } private Map> createGraphNodes() { @@ -106,7 +104,8 @@ public class CriticalPathCalculator> { for (T task : graph.getTasks()) { Node node = new Node(task, graph .getIncomingTasksFor(task), - graph.getOutgoingTasksFor(task), graph); + graph.getOutgoingTasksFor(task), graph.getStartDate(task), + graph.getEndDateFor(task)); result.put(task, node); } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/data/criticalpath/InitialNode.java b/ganttzk/src/main/java/org/zkoss/ganttz/data/criticalpath/InitialNode.java index 176c205ee..3cca95c2d 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/data/criticalpath/InitialNode.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/data/criticalpath/InitialNode.java @@ -32,9 +32,8 @@ import org.zkoss.ganttz.data.IDependency; */ public class InitialNode> extends Node { - public InitialNode(Set nextTasks, - ICriticalPathCalculable graph) { - super(null, null, nextTasks, graph); + public InitialNode(Set nextTasks) { + super(null, null, nextTasks, null, null); } } \ No newline at end of file diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/data/criticalpath/LastNode.java b/ganttzk/src/main/java/org/zkoss/ganttz/data/criticalpath/LastNode.java index 8eff8ebe5..328c023b4 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/data/criticalpath/LastNode.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/data/criticalpath/LastNode.java @@ -31,9 +31,8 @@ import org.zkoss.ganttz.data.IDependency; */ public class LastNode> extends Node { - public LastNode(Set previousTasks, - ICriticalPathCalculable graph) { - super(null, previousTasks, null, graph); + public LastNode(Set previousTasks) { + super(null, previousTasks, null, null, null); } public void updateLatestValues() { diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/data/criticalpath/Node.java b/ganttzk/src/main/java/org/zkoss/ganttz/data/criticalpath/Node.java index 43e2fb0c5..d40222668 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/data/criticalpath/Node.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/data/criticalpath/Node.java @@ -26,6 +26,7 @@ import java.util.Set; import org.joda.time.Days; import org.joda.time.LocalDate; +import org.zkoss.ganttz.data.GanttDate; import org.zkoss.ganttz.data.IDependency; @@ -46,12 +47,19 @@ public class Node> { private Integer latestStart = null; private Integer latestFinish = null; - private ICriticalPathCalculable graph; + private LocalDate beginDate = null; + private LocalDate endDate = null; public Node(T task, Set previousTasks, - Set nextTasks, ICriticalPathCalculable graph) { + Set nextTasks, GanttDate startDate, GanttDate endDate) { this.task = task; - this.graph = graph; + + if (startDate != null) { + this.beginDate = new LocalDate(startDate.toDayRoundedDate()); + } + if (endDate != null) { + this.endDate = new LocalDate(endDate.toDayRoundedDate()); + } this.earliestStart = 0; this.earliestFinish = getDuration(); @@ -111,16 +119,9 @@ public class Node> { return 0; } - LocalDate beginDate = new LocalDate(graph.getStartDate(task) - .toDayRoundedDate()); - LocalDate endDate = getTaskEndDate(); return Days.daysBetween(beginDate, endDate).getDays(); } - private LocalDate getTaskEndDate() { - return new LocalDate(graph.getEndDateFor(task).toDayRoundedDate()); - } - @Override public String toString() { return "Task: " + getDuration() + " (" + earliestStart + ","