ItEr20S04ArquitecturaServidorItEr19S04: Doing the reattach of the criterions before the reattachment of worker.

This commit is contained in:
Óscar González Fernández 2009-08-05 14:07:15 +02:00
parent 6038e312ac
commit 050f333c70

View file

@ -16,6 +16,7 @@ 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.daos.ICriterionDAO;
import org.navalplanner.business.resources.entities.Criterion;
import org.navalplanner.business.resources.entities.CriterionType;
import org.navalplanner.business.resources.services.ICriterionService;
@ -58,6 +59,9 @@ public class OrderModel implements IOrderModel {
private final ITaskElementService taskElementService;
@Autowired
private ICriterionDAO criterionDAO;
@Autowired
public OrderModel(IOrderService orderService,
ITaskElementService taskElementService) {
@ -89,7 +93,6 @@ public class OrderModel implements IOrderModel {
public void prepareEditFor(Order order) {
Validate.notNull(order);
loadCriterions();
this.order = getFromDB(order);
this.orderElementTreeModel = new OrderElementTreeModel(this.order);
}
@ -114,6 +117,7 @@ public class OrderModel implements IOrderModel {
@Override
@Transactional
public void save() throws ValidationException {
reattachCriterions();
InvalidValue[] invalidValues = orderValidator.getInvalidValues(order);
if (invalidValues.length > 0)
throw new ValidationException(invalidValues);
@ -121,6 +125,14 @@ public class OrderModel implements IOrderModel {
this.orderService.save(order);
}
private void reattachCriterions() {
for (List<Criterion> list : mapCriterions.values()) {
for (Criterion criterion : list) {
criterionDAO.reattachUnmodifiedEntity(criterion);
}
}
}
@Override
public IOrderLineGroup getOrder() {
return order;
@ -146,7 +158,9 @@ public class OrderModel implements IOrderModel {
}
@Override
@Transactional(readOnly = true)
public IOrderElementModel getOrderElementModel(OrderElement orderElement) {
reattachCriterions();
orderElementModel.setCurrent(orderElement, this);
return orderElementModel;
}