From b44346d3aa3de65778d895e60fccd0296a4dfc10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Mon, 20 Jul 2009 19:14:30 +0200 Subject: [PATCH] ItEr18S08CUCreacionProxectoPlanificacionItEr17S10: When removeDependency is called, the dependency is removed. --- .../planner/entities/TaskElement.java | 25 +++++++++++++++++++ .../planner/entities/TaskElementTest.java | 13 ++++++++++ .../web/planner/TaskElementAdapter.java | 5 +++- 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskElement.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskElement.java index f69ab2365..23697b61a 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskElement.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskElement.java @@ -1,5 +1,6 @@ package org.navalplanner.business.planner.entities; +import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.HashSet; @@ -9,6 +10,7 @@ import java.util.Set; import org.apache.commons.lang.Validate; import org.hibernate.validator.NotNull; import org.navalplanner.business.orders.entities.OrderElement; +import org.navalplanner.business.planner.entities.Dependency.Type; /** * @author Óscar González Fernández @@ -104,6 +106,29 @@ public abstract class TaskElement { return id; } + private void removeDependenciesWithThisOrigin(TaskElement origin, Type type) { + ArrayList toBeRemoved = new ArrayList(); + for (Dependency dependency : dependenciesWithThisDestination) { + if (dependency.getOrigin().equals(origin) + && dependency.getType().equals(type)) { + toBeRemoved.add(dependency); + } + } + dependenciesWithThisDestination.removeAll(toBeRemoved); + } + + public void removeDependencyWithDestination(TaskElement destination, Type type) { + ArrayList toBeRemoved = new ArrayList(); + for (Dependency dependency : dependenciesWithThisOrigin) { + if (dependency.getDestination().equals(destination) + && dependency.getType().equals(type)) { + toBeRemoved.add(dependency); + } + } + destination.removeDependenciesWithThisOrigin(this, type); + dependenciesWithThisOrigin.removeAll(toBeRemoved); + } + public abstract boolean isLeaf(); public abstract List getChildren(); diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/entities/TaskElementTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/entities/TaskElementTest.java index 5416cecdc..81e82ffa6 100644 --- a/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/entities/TaskElementTest.java +++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/entities/TaskElementTest.java @@ -73,4 +73,17 @@ public class TaskElementTest { task.setEndDate(now); assertThat(task.getEndDate(), equalTo(now)); } + + @Test + public void aDependencyWithThisOriginCanBeRemoved(){ + Task origin = new Task(); + Task destination = new Task(); + Type type = Type.START_END; + Dependency dependency = Dependency.createDependency(origin, destination, type); + assertThat(origin.getDependenciesWithThisOrigin().size(), equalTo(1)); + assertThat(destination.getDependenciesWithThisDestination().size(), equalTo(1)); + origin.removeDependencyWithDestination(destination, type); + assertThat(origin.getDependenciesWithThisOrigin().size(), equalTo(0)); + assertThat(destination.getDependenciesWithThisDestination().size(), equalTo(0)); + } } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/TaskElementAdapter.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/TaskElementAdapter.java index 22d54c4e2..ac33a9a95 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/TaskElementAdapter.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/TaskElementAdapter.java @@ -170,6 +170,9 @@ public class TaskElementAdapter implements ITaskElementAdapter { @Override public void removeDependency(DomainDependency dependency) { - System.out.println("removing dependency: "+dependency); + TaskElement source = dependency.getSource(); + Type type = toDomainType(dependency.getType()); + source.removeDependencyWithDestination(dependency.getDestination(), + type); } }