diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/GenericResourceAllocation.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/GenericResourceAllocation.java index 674a1ed78..9dca819fa 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/GenericResourceAllocation.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/GenericResourceAllocation.java @@ -32,6 +32,7 @@ import java.util.List; import java.util.Map; import java.util.Set; +import org.apache.commons.lang.Validate; import org.hibernate.validator.Valid; import org.joda.time.LocalDate; import org.navalplanner.business.calendars.entities.AvailabilityTimeLine; @@ -45,6 +46,7 @@ import org.navalplanner.business.resources.entities.Criterion; import org.navalplanner.business.resources.entities.CriterionCompounder; import org.navalplanner.business.resources.entities.ICriterion; import org.navalplanner.business.resources.entities.Resource; +import org.navalplanner.business.resources.entities.ResourceEnum; import org.navalplanner.business.scenarios.entities.Scenario; import org.navalplanner.business.util.deepcopy.OnCopy; import org.navalplanner.business.util.deepcopy.Strategy; @@ -106,6 +108,9 @@ public class GenericResourceAllocation extends @OnCopy(Strategy.SHARE_COLLECTION_ELEMENTS) private Set criterions = new HashSet(); + @OnCopy(Strategy.SHARE) + private ResourceEnum resourceType; + private Set genericDayAssignmentsContainers = new HashSet(); @Valid @@ -135,8 +140,24 @@ public class GenericResourceAllocation extends public static GenericResourceAllocation create(Task task, Collection criterions) { + return create(task, inferType(criterions), criterions); + } + + public static ResourceEnum inferType( + Collection criterions) { + if (criterions.isEmpty()) { + return ResourceEnum.WORKER; + } + Criterion first = criterions.iterator().next(); + return first.getType().getResource(); + } + + public static GenericResourceAllocation create(Task task, + ResourceEnum resourceType, Collection criterions) { + Validate.notNull(resourceType); GenericResourceAllocation result = new GenericResourceAllocation(task); result.criterions = new HashSet(criterions); + result.resourceType = resourceType; result.setResourcesPerDayToAmount(1); return create(result); } @@ -571,4 +592,8 @@ public class GenericResourceAllocation extends } } + public ResourceEnum getResourceType() { + return resourceType != null ? resourceType : inferType(criterions); + } + } diff --git a/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/ResourceAllocations.hbm.xml b/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/ResourceAllocations.hbm.xml index 8d95bf8d2..a00d804a3 100644 --- a/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/ResourceAllocations.hbm.xml +++ b/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/ResourceAllocations.hbm.xml @@ -59,6 +59,12 @@ + + + org.navalplanner.business.resources.entities.ResourceEnum + + +