ItEr19S08CUCreacionProxectoPlanificacionItEr18S08: Adding retainOnlyTopLevel method so only the toplevel tasks are shown at the top level.
This commit is contained in:
parent
5f9c335563
commit
e9d0a7589c
1 changed files with 42 additions and 1 deletions
|
|
@ -1,7 +1,10 @@
|
|||
package org.navalplanner.web.planner;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
|
||||
import org.navalplanner.business.orders.entities.Order;
|
||||
|
|
@ -66,12 +69,50 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel {
|
|||
Order orderReloaded) {
|
||||
ITaskElementAdapter taskElementAdapter = getTaskElementAdapter();
|
||||
taskElementAdapter.setOrder(orderReloaded);
|
||||
planningState = new PlanningState(orderReloaded.getAssociatedTasks());
|
||||
planningState = new PlanningState(retainOnlyTopLevel(orderReloaded
|
||||
.getAssociatedTasks()));
|
||||
forceLoadOfDependenciesCollections(planningState.getInitial());
|
||||
forceLoadOfWorkingHours(planningState.getInitial());
|
||||
return new PlannerConfiguration<TaskElement>(taskElementAdapter,
|
||||
new TaskElementNavigator(), planningState.getInitial());
|
||||
}
|
||||
|
||||
private Collection<? extends TaskElement> retainOnlyTopLevel(
|
||||
List<TaskElement> associatedTasks) {
|
||||
Set<TaskElement> descendantsFromOther = new HashSet<TaskElement>();
|
||||
for (TaskElement taskElement : associatedTasks) {
|
||||
descandants(descendantsFromOther, taskElement);
|
||||
}
|
||||
ArrayList<TaskElement> result = new ArrayList<TaskElement>();
|
||||
for (TaskElement taskElement : associatedTasks) {
|
||||
if (!descendantsFromOther.contains(taskElement)) {
|
||||
result.add(taskElement);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private void descandants(
|
||||
Set<TaskElement> accumulated,
|
||||
TaskElement taskElement) {
|
||||
if (taskElement.isLeaf()) {
|
||||
return;
|
||||
}
|
||||
for (TaskElement t : taskElement.getChildren()) {
|
||||
accumulated.add(t);
|
||||
descandants(accumulated, t);
|
||||
}
|
||||
}
|
||||
|
||||
private void forceLoadOfWorkingHours(List<TaskElement> initial) {
|
||||
for (TaskElement taskElement : initial) {
|
||||
taskElement.getOrderElement().getWorkHours();
|
||||
if (!taskElement.isLeaf()) {
|
||||
forceLoadOfWorkingHours(taskElement.getChildren());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void forceLoadOfDependenciesCollections(
|
||||
Collection<? extends TaskElement> elements) {
|
||||
for (TaskElement task : elements) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue