diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/daos/ResourceAllocationDAO.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/daos/ResourceAllocationDAO.java index ead6e1bc0..b904834ca 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/daos/ResourceAllocationDAO.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/daos/ResourceAllocationDAO.java @@ -26,6 +26,7 @@ import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import org.hibernate.Criteria; import org.hibernate.criterion.Restrictions; @@ -82,7 +83,32 @@ public class ResourceAllocationDAO extends @Override public List> findAllocationsRelatedTo( Resource resource) { - return findAllocationsRelatedToAnyOf(Arrays.asList(resource)); + return stripAllocationsWithoutAssignations(findAllocationsRelatedToAnyOf(Arrays + .asList(resource))); + } + + private > List stripAllocationsWithoutAssignations( + List allocations) { + List result = new ArrayList(); + for (R eachAllocation : allocations) { + if (eachAllocation.hasAssignments()) { + result.add(eachAllocation); + } + } + return result; + } + + private Map> stripAllocationsWithoutAssignations( + Map> map) { + Map> result = new HashMap>(); + for (Entry> entry : map + .entrySet()) { + List valid = stripAllocationsWithoutAssignations(entry.getValue()); + if (!valid.isEmpty()) { + result.put(entry.getKey(), valid); + } + } + return result; } @SuppressWarnings("unchecked") @@ -94,7 +120,7 @@ public class ResourceAllocationDAO extends + "from GenericResourceAllocation as generic " + "join generic.criterions as criterion") .list(); - return byCriterion(results); + return stripAllocationsWithoutAssignations(byCriterion(results)); } @SuppressWarnings("unchecked") @@ -110,7 +136,7 @@ public class ResourceAllocationDAO extends + "join generic.criterions as criterion " + "join generic.task task where task in(:tasks)") .setParameterList("tasks", tasks).list(); - return byCriterion(list); + return stripAllocationsWithoutAssignations(byCriterion(list)); } private Map> byCriterion( 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 9141c1148..15090c720 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 @@ -576,4 +576,11 @@ public abstract class ResourceAllocation extends } } + // FIXME evaluate if it the possibility of existing an allocation without + // assignments is valid. If it isn't remove this method and add validations + // to ResourceAllocation + public boolean hasAssignments() { + return !getAssignments().isEmpty(); + } + }