From a8169baa296ce21fedf71240d372b455e04ea4ca Mon Sep 17 00:00:00 2001 From: Diego Pino Garcia Date: Sun, 16 May 2010 00:26:48 +0200 Subject: [PATCH] ItEr58S10CUAsignacionRecursosLimitantesItEr57S11: Initialize criteria for generic resource allocation and show criteria on list of unassigned queue elements --- .../LimitingResourceQueueModel.java | 15 ++++++++-- .../LimitingResourcesController.java | 28 +++++++++++++++++-- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourceQueueModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourceQueueModel.java index 1b95ff8b5..67351874e 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourceQueueModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourceQueueModel.java @@ -60,6 +60,7 @@ import org.navalplanner.business.planner.entities.SpecificDayAssignment; import org.navalplanner.business.planner.entities.SpecificResourceAllocation; import org.navalplanner.business.planner.entities.Task; import org.navalplanner.business.planner.entities.TaskElement; +import org.navalplanner.business.resources.entities.Criterion; import org.navalplanner.business.resources.entities.LimitingResourceQueue; import org.navalplanner.business.resources.entities.Resource; import org.navalplanner.business.users.daos.IOrderAuthorizationDAO; @@ -263,15 +264,23 @@ public class LimitingResourceQueueModel implements ILimitingResourceQueueModel { if (resourceAllocation instanceof HibernateProxy) { resourceAllocation = (ResourceAllocation) ((HibernateProxy) resourceAllocation) .getHibernateLazyInitializer().getImplementation(); - if (resourceAllocation instanceof SpecificResourceAllocation) { - SpecificResourceAllocation specific = (SpecificResourceAllocation) resourceAllocation; - Hibernate.initialize(specific.getAssignments()); + if (resourceAllocation instanceof GenericResourceAllocation) { + GenericResourceAllocation generic = (GenericResourceAllocation) resourceAllocation; + initializeCriteria(generic.getCriterions()); } + Hibernate.initialize(resourceAllocation.getAssignments()); Hibernate.initialize(resourceAllocation.getLimitingResourceQueueElement()); } return resourceAllocation; } + private void initializeCriteria(Set criteria) { + for (Criterion each: criteria) { + Hibernate.initialize(each); + Hibernate.initialize(each.getType()); + } + } + private void loadLimitingResourceQueues() { limitingResourceQueues.clear(); limitingResourceQueues diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourcesController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourcesController.java index e1d634c26..681654f40 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourcesController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourcesController.java @@ -27,13 +27,18 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; +import java.util.Set; +import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.Validate; import org.jfree.util.Log; import org.navalplanner.business.orders.entities.Order; import org.navalplanner.business.planner.entities.GenericResourceAllocation; import org.navalplanner.business.planner.entities.LimitingResourceQueueElement; +import org.navalplanner.business.planner.entities.ResourceAllocation; +import org.navalplanner.business.planner.entities.SpecificResourceAllocation; import org.navalplanner.business.planner.entities.Task; +import org.navalplanner.business.resources.entities.Criterion; import org.navalplanner.business.resources.entities.LimitingResourceQueue; import org.navalplanner.business.resources.entities.Resource; import org.navalplanner.web.common.Util; @@ -226,8 +231,27 @@ public class LimitingResourcesController implements Composer { this.taskName = taskName; this.date = DATE_FORMAT.format(date); this.hoursToAllocate = element.getIntentedTotalHours(); - final Resource resource = element.getResource(); - this.resourceName = (resource != null) ? resource.getName() : ""; + this.resourceName = getResourceName(element.getResourceAllocation()); + } + + private String getResourceName(ResourceAllocation resourceAllocation) { + if (resourceAllocation instanceof SpecificResourceAllocation) { + final Resource resource = ((SpecificResourceAllocation) resourceAllocation) + .getResource(); + return (resource != null) ? resource.getName() : ""; + } else if (resourceAllocation instanceof GenericResourceAllocation) { + Set criteria = ((GenericResourceAllocation) resourceAllocation).getCriterions(); + return getCriteriaNames(criteria); + } + return StringUtils.EMPTY; + } + + private String getCriteriaNames(Set criteria) { + List names = new ArrayList(); + for (Criterion each: criteria) { + names.add(each.getName()); + } + return StringUtils.join(names, ","); } public LimitingResourceQueueElement getOriginal() {