From 02f7f37751eb9e636742082c24574aeea3f85cd3 Mon Sep 17 00:00:00 2001 From: Diego Pino Garcia Date: Tue, 14 Jul 2009 13:10:24 +0200 Subject: [PATCH] ItEr17S08ClasificacionTraballoItEr16S10: Save Criterions in HoursGroup --- .../business/orders/entities/HoursGroup.java | 5 ++- .../business/orders/entities/OrderLine.java | 6 ++- .../business/orders/entities/Orders.hbm.xml | 2 +- .../web/orders/IOrderElementModel.java | 2 +- .../web/orders/OrderElementModel.java | 37 ++++++++++-------- .../navalplanner/web/orders/OrderModel.java | 39 ++++++++++++++++++- 6 files changed, 68 insertions(+), 23 deletions(-) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/HoursGroup.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/HoursGroup.java index 0b8908db8..a9cb03174 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/HoursGroup.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/HoursGroup.java @@ -109,7 +109,7 @@ public class HoursGroup implements Cloneable { public Criterion getCriterionByType(ICriterionType type) { for (Criterion criterion : criterions) { - if (criterion.getType().equals(type.getName())) { + if (criterion.getType().equals(type)) { return criterion; } } @@ -118,8 +118,9 @@ public class HoursGroup implements Cloneable { } public Criterion getCriterionByType(String type) { + // TODO: Check if hoursgroup has criterions for (Criterion criterion : criterions) { - if (criterion.getType().equals(type)) { + if (criterion.getType().getName().equals(type)) { return criterion; } } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLine.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLine.java index 41761cefd..1b10aacc5 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLine.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLine.java @@ -6,6 +6,8 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import org.navalplanner.business.resources.entities.Criterion; + public class OrderLine extends OrderElement { public static OrderLine createOrderLineWithUnfixedHours(int hours) { @@ -321,7 +323,9 @@ public class OrderLine extends OrderElement { @Override public void forceLoadHourGroups() { for (HoursGroup hoursGroup : hoursGroups) { - hoursGroup.getWorkingHours(); + for (Criterion c : hoursGroup.getCriterions()) { + c.getType().getName(); + } } } diff --git a/navalplanner-business/src/main/resources/org/navalplanner/business/orders/entities/Orders.hbm.xml b/navalplanner-business/src/main/resources/org/navalplanner/business/orders/entities/Orders.hbm.xml index 0ee81b8c6..c527e27dd 100644 --- a/navalplanner-business/src/main/resources/org/navalplanner/business/orders/entities/Orders.hbm.xml +++ b/navalplanner-business/src/main/resources/org/navalplanner/business/orders/entities/Orders.hbm.xml @@ -65,7 +65,7 @@ - getCriterionTypes(); diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementModel.java index 0afe31da9..5a6ee7005 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementModel.java @@ -1,5 +1,6 @@ package org.navalplanner.web.orders; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -25,6 +26,8 @@ public class OrderElementModel implements IOrderElementModel { private OrderElement orderElement; + private OrderModel order; + @Autowired private IOrderElementDao orderElementDao; @@ -46,7 +49,7 @@ public class OrderElementModel implements IOrderElementModel { @Override @Transactional(readOnly = true) - public void setCurrent(OrderElement orderElement) { + public void setCurrent(OrderElement orderElement, OrderModel order) { // FIXME Review reattachment boolean wasTransient = orderElement.isTransient(); Set transientHoursGroups = orderElement @@ -60,36 +63,36 @@ public class OrderElementModel implements IOrderElementModel { hoursGroup.makeTransientAgain(); } this.orderElement = orderElement; + this.order = order; } @Override public List getCriterionTypes() { - List criterionTypes = criterionTypeService.getAll(); + List result = new ArrayList(); - if (mapCriterionTypes.isEmpty()) { - for (CriterionType criterionType : criterionTypes) { - mapCriterionTypes.put(criterionType.getName(), criterionType); - } - } + if (mapCriterionTypes.isEmpty()) + loadCriterionTypes(); + result.addAll(mapCriterionTypes.values()); - return criterionTypes; + return result; } @Override public CriterionType getCriterionTypeByName(String name) { - if (mapCriterionTypes.isEmpty()) { - for (CriterionType criterionType : criterionTypeService - .getAll()) { - mapCriterionTypes.put(criterionType.getName(), criterionType); - } - } + if (mapCriterionTypes.isEmpty()) + loadCriterionTypes(); return mapCriterionTypes.get(name); } - @Override - public List getCriterionsFor(CriterionType type) { - return (List) criterionService.getCriterionsFor(type); + private void loadCriterionTypes() { + for (CriterionType criterionType : criterionTypeService.getAll()) { + mapCriterionTypes.put(criterionType.getName(), criterionType); + } } + @Override + public List getCriterionsFor(CriterionType type) { + return (List) order.getCriterionsFor(type); + } } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderModel.java index 0702b3a4a..8ecb66995 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderModel.java @@ -1,7 +1,10 @@ package org.navalplanner.web.orders; +import java.util.ArrayList; import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.Map; import org.apache.commons.lang.Validate; import org.hibernate.validator.ClassValidator; @@ -13,6 +16,10 @@ import org.navalplanner.business.orders.entities.Order; import org.navalplanner.business.orders.entities.OrderElement; import org.navalplanner.business.orders.services.IOrderService; import org.navalplanner.business.planner.services.ITaskElementService; +import org.navalplanner.business.resources.entities.Criterion; +import org.navalplanner.business.resources.entities.CriterionType; +import org.navalplanner.business.resources.services.CriterionService; +import org.navalplanner.business.resources.services.CriterionTypeService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Scope; @@ -21,12 +28,22 @@ import org.springframework.transaction.annotation.Transactional; /** * Model for UI operations related to {@link Order}.
+ * * @author Óscar González Fernández + * @author Diego Pino García */ @Service @Scope(BeanDefinition.SCOPE_PROTOTYPE) public class OrderModel implements IOrderModel { + @Autowired + CriterionService criterionService; + + @Autowired + CriterionTypeService criterionTypeService; + + private static final Map> mapCriterions = new HashMap>(); + private final IOrderService orderService; private Order order; @@ -56,10 +73,23 @@ public class OrderModel implements IOrderModel { return orderService.getOrders(); } + private void loadCriterions() { + mapCriterions.clear(); + List criterionTypes = criterionTypeService.getAll(); + for (CriterionType criterionType : criterionTypes) { + List criterions = new ArrayList( + criterionService.getCriterionsFor(criterionType)); + + mapCriterions.put(criterionType, criterions); + } + } + @Override @Transactional(readOnly = true) public void prepareEditFor(Order order) { Validate.notNull(order); + loadCriterions(); + this.order = getFromDB(order); this.orderElementTreeModel = new OrderElementTreeModel(this.order); } @@ -74,6 +104,8 @@ public class OrderModel implements IOrderModel { @Override public void prepareForCreate() { + loadCriterions(); + this.order = new Order(); this.orderElementTreeModel = new OrderElementTreeModel(this.order); this.order.setInitDate(new Date()); @@ -85,6 +117,7 @@ public class OrderModel implements IOrderModel { InvalidValue[] invalidValues = orderValidator.getInvalidValues(order); if (invalidValues.length > 0) throw new ValidationException(invalidValues); + this.orderService.save(order); } @@ -114,7 +147,7 @@ public class OrderModel implements IOrderModel { @Override public IOrderElementModel getOrderElementModel(OrderElement orderElement) { - orderElementModel.setCurrent(orderElement); + orderElementModel.setCurrent(orderElement, this); return orderElementModel; } @@ -134,4 +167,8 @@ public class OrderModel implements IOrderModel { public boolean isAlreadyScheduled(Order order) { return getFromDB(order).isSomeTaskElementScheduled(); } + + public List getCriterionsFor(CriterionType criterionType) { + return mapCriterions.get(criterionType); + } }