ItEr48S15CUFiltradoNaPlanificacionItEr47S17: Fixing lazy exceptions doing the filter.

This commit is contained in:
Manuel Rego Casasnovas 2010-02-17 09:10:03 +01:00 committed by Javier Moran Rua
parent af7d653319
commit bf8f5675ab
3 changed files with 35 additions and 0 deletions

View file

@ -43,4 +43,6 @@ public interface IOrderPlanningModel {
Order getOrder();
void forceLoadLabelsAndCriterionRequirements();
}

View file

@ -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

View file

@ -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);
}
}
}
}