From bf8f5675abdda7418ff06992d5f921375b0de600 Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Wed, 17 Feb 2010 09:10:03 +0100 Subject: [PATCH] ItEr48S15CUFiltradoNaPlanificacionItEr47S17: Fixing lazy exceptions doing the filter. --- .../planner/order/IOrderPlanningModel.java | 2 ++ .../order/OrderPlanningController.java | 2 ++ .../web/planner/order/OrderPlanningModel.java | 31 +++++++++++++++++++ 3 files changed, 35 insertions(+) diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/IOrderPlanningModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/IOrderPlanningModel.java index b278d6f8d..bcf3878d4 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/IOrderPlanningModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/IOrderPlanningModel.java @@ -43,4 +43,6 @@ public interface IOrderPlanningModel { Order getOrder(); + void forceLoadLabelsAndCriterionRequirements(); + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningController.java index 6dddc5ed9..534bba072 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningController.java @@ -197,6 +197,8 @@ public class OrderPlanningController implements Composer { } private void filterByPredicate(final OrderElementPredicate predicate) { + model.forceLoadLabelsAndCriterionRequirements(); + final IContext context = planner.getContext(); planner.setTaskListPredicate(new FilterAndParentExpandedPredicates(context) { @Override diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningModel.java index fcce0178a..53bc43686 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningModel.java @@ -48,6 +48,7 @@ import org.navalplanner.business.common.IAdHocTransactionService; import org.navalplanner.business.common.IOnTransaction; import org.navalplanner.business.common.exceptions.InstanceNotFoundException; import org.navalplanner.business.orders.daos.IOrderDAO; +import org.navalplanner.business.orders.entities.HoursGroup; import org.navalplanner.business.orders.entities.Order; import org.navalplanner.business.orders.entities.OrderElement; import org.navalplanner.business.orders.entities.OrderStatusEnum; @@ -1224,4 +1225,34 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel { return orderReloaded; } + @Override + @Transactional(readOnly = true) + public void forceLoadLabelsAndCriterionRequirements() { + orderDAO.reattach(orderReloaded); + forceLoadLabels(orderReloaded); + forceLoadCriterionRequirements(orderReloaded); + } + + private void forceLoadLabels(OrderElement orderElement) { + orderElement.getLabels().size(); + if (!orderElement.isLeaf()) { + for (OrderElement element : orderElement.getChildren()) { + forceLoadLabels(element); + } + } + } + + private void forceLoadCriterionRequirements(OrderElement orderElement) { + orderElement.getCriterionRequirements().size(); + for (HoursGroup hoursGroup : orderElement.getHoursGroups()) { + hoursGroup.getCriterionRequirements().size(); + } + + if (!orderElement.isLeaf()) { + for (OrderElement element : orderElement.getChildren()) { + forceLoadCriterionRequirements(element); + } + } + } + }