diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/ResourceAllocation.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/ResourceAllocation.java index 456034479..e6f9ca5e3 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/ResourceAllocation.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/ResourceAllocation.java @@ -56,6 +56,17 @@ import org.navalplanner.business.resources.entities.Resource; public abstract class ResourceAllocation extends BaseEntity { + public static > List getSatisfied( + Collection resourceAllocations) { + List result = new ArrayList(); + for (T each : resourceAllocations) { + if (each.isSatisfied()) { + result.add(each); + } + } + return result; + } + public static > List getOfType( Class type, Collection> resourceAllocations) { @@ -453,8 +464,12 @@ public abstract class ResourceAllocation extends assert isUnsatisfied(); } + public boolean isSatisfied() { + return hasAssignments(); + } + public boolean isUnsatisfied() { - return !hasAssignments(); + return !isSatisfied(); } private void resetAssignmentsTo(List assignments) { diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/Task.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/Task.java index 284a36eb8..d24c216e7 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/Task.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/Task.java @@ -124,21 +124,14 @@ public class Task extends TaskElement { } public Set> getResourceAllocations() { - return Collections.unmodifiableSet(filterEmpty(resourceAllocations)); + List> filtered = ResourceAllocation + .getSatisfied(resourceAllocations); + return Collections.unmodifiableSet(new HashSet>( + filtered)); } - private Set> filterEmpty( - Set> allocations) { - Set> result = new HashSet>(); - for (ResourceAllocation each : allocations) { - if (each.hasAssignments()) { - result.add(each); - } else { - LOG.warn("there is an empty resource allocation: " - + each.toString() + " ,on task: " + this); - } - } - return result; + public Set> getAllResourceAllocations() { + return Collections.unmodifiableSet(resourceAllocations); } public void addResourceAllocation(ResourceAllocation resourceAllocation) { @@ -146,13 +139,8 @@ public class Task extends TaskElement { throw new IllegalArgumentException( "the resourceAllocation's task must be this task"); } - if (resourceAllocation.hasAssignments()) { - resourceAllocations.add(resourceAllocation); - resourceAllocation.associateAssignmentsToResource(); - } else { - LOG.warn("adding a resource allocation without assignments: " - + resourceAllocation); - } + resourceAllocations.add(resourceAllocation); + resourceAllocation.associateAssignmentsToResource(); } public void removeResourceAllocation( diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/entities/TaskTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/entities/TaskTest.java index 0b575ac7a..4ffc4b998 100644 --- a/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/entities/TaskTest.java +++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/entities/TaskTest.java @@ -90,13 +90,17 @@ public class TaskTest { } @Test - public void addingEmptyResourceAllocationDoesntAddIt() { + public void getResourceAllocationsDoesntRetrieveUnsatisfiedAllocations() { assertThat(task.getResourceAllocations().size(), equalTo(0)); - SpecificResourceAllocation resourceAllocation = SpecificResourceAllocation.create(task); - task.addResourceAllocation(resourceAllocation); + SpecificResourceAllocation unsatisfied = SpecificResourceAllocation + .create(task); + assertTrue("in order to be meaningful this test needs an unsatisfied " + + "allocation", unsatisfied.isUnsatisfied()); + task.addResourceAllocation(unsatisfied); assertThat(task.getResourceAllocations().size(), equalTo(0)); + assertThat(task.getAllResourceAllocations().size(), equalTo(1)); } @Test @@ -152,6 +156,7 @@ public class TaskTest { .anyTimes(); expect(resourceAllocation.getTask()).andReturn(task).anyTimes(); expect(resourceAllocation.hasAssignments()).andReturn(true).anyTimes(); + expect(resourceAllocation.isSatisfied()).andReturn(true).anyTimes(); replay(resourceAllocation); return resourceAllocation; }