ItEr20S04ArquitecturaServidorItEr19S04: Removing use of OrderService.
Javier Moran Rua <jmoran@igalia.com>: Some fixings in OrderModel.java
This commit is contained in:
parent
84252a3216
commit
ec7922d4db
8 changed files with 80 additions and 24 deletions
|
|
@ -0,0 +1,21 @@
|
|||
package org.navalplanner.business.common;
|
||||
|
||||
import org.navalplanner.business.common.exceptions.ValidationException;
|
||||
|
||||
/**
|
||||
* Entities implementing this interface have a method <code>checkValid</code>.
|
||||
* This method validates the business rules of the entity.
|
||||
*
|
||||
* @author Manuel Rego Casasnovas <mrego@igalia.com>
|
||||
*/
|
||||
public interface IValidable {
|
||||
|
||||
/**
|
||||
* Checks if an entity is or not valid.
|
||||
*
|
||||
* @throws ValidationException
|
||||
* if entity is not valid.
|
||||
*/
|
||||
void checkValid() throws ValidationException;
|
||||
|
||||
}
|
||||
|
|
@ -1,5 +1,7 @@
|
|||
package org.navalplanner.business.orders.daos;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.navalplanner.business.common.daos.IGenericDAO;
|
||||
import org.navalplanner.business.orders.entities.Order;
|
||||
|
||||
|
|
@ -9,4 +11,11 @@ import org.navalplanner.business.orders.entities.Order;
|
|||
*/
|
||||
public interface IOrderDAO extends IGenericDAO<Order, Long> {
|
||||
|
||||
}
|
||||
/**
|
||||
* Gets all the orders.
|
||||
*
|
||||
* @return A {@link List} of {@link Order} objects
|
||||
*/
|
||||
List<Order> getOrders();
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
package org.navalplanner.business.orders.daos;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.navalplanner.business.common.daos.GenericDAOHibernate;
|
||||
import org.navalplanner.business.orders.entities.Order;
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
|
|
@ -14,4 +16,10 @@ import org.springframework.stereotype.Repository;
|
|||
@Scope(BeanDefinition.SCOPE_SINGLETON)
|
||||
public class OrderDAO extends GenericDAOHibernate<Order, Long> implements
|
||||
IOrderDAO {
|
||||
|
||||
@Override
|
||||
public List<Order> getOrders() {
|
||||
return list(Order.class);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -8,13 +8,15 @@ import org.hibernate.validator.NotEmpty;
|
|||
import org.hibernate.validator.NotNull;
|
||||
import org.hibernate.validator.Valid;
|
||||
import org.navalplanner.business.common.BaseEntity;
|
||||
import org.navalplanner.business.common.IValidable;
|
||||
import org.navalplanner.business.common.exceptions.ValidationException;
|
||||
import org.navalplanner.business.planner.entities.TaskElement;
|
||||
|
||||
/**
|
||||
* It represents an {@link Order} with its related information. <br />
|
||||
* @author Óscar González Fernández <ogonzalez@igalia.com>
|
||||
*/
|
||||
public class Order extends BaseEntity implements IOrderLineGroup {
|
||||
public class Order extends BaseEntity implements IOrderLineGroup, IValidable {
|
||||
|
||||
private static Date copy(Date date) {
|
||||
return date != null ? new Date(date.getTime()) : date;
|
||||
|
|
@ -143,4 +145,18 @@ public class Order extends BaseEntity implements IOrderLineGroup {
|
|||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void checkValid() throws ValidationException {
|
||||
if (this.isEndDateBeforeStart()) {
|
||||
throw new ValidationException("endDate must be after startDate");
|
||||
}
|
||||
|
||||
for (OrderElement orderElement : this.getOrderElements()) {
|
||||
if (!orderElement.checkAtLeastOneHoursGroup()) {
|
||||
throw new ValidationException(
|
||||
"At least one HoursGroup is needed for each OrderElement");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,12 +18,12 @@ import org.junit.Test;
|
|||
import org.junit.matchers.JUnitMatchers;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.navalplanner.business.common.exceptions.ValidationException;
|
||||
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.OrderLine;
|
||||
import org.navalplanner.business.orders.entities.OrderLineGroup;
|
||||
import org.navalplanner.business.orders.services.IOrderService;
|
||||
import org.navalplanner.business.planner.entities.Dependency;
|
||||
import org.navalplanner.business.planner.entities.Task;
|
||||
import org.navalplanner.business.planner.entities.TaskElement;
|
||||
|
|
@ -51,7 +51,7 @@ public class TaskElementServiceTest {
|
|||
private SessionFactory sessionFactory;
|
||||
|
||||
@Autowired
|
||||
private IOrderService orderService;
|
||||
private IOrderDAO orderDAO;
|
||||
|
||||
private HoursGroup associatedHoursGroup;
|
||||
|
||||
|
|
@ -87,7 +87,8 @@ public class TaskElementServiceTest {
|
|||
order.setInitDate(new Date());
|
||||
order.add(orderLine);
|
||||
try {
|
||||
orderService.save(order);
|
||||
order.checkValid();
|
||||
orderDAO.save(order);
|
||||
sessionFactory.getCurrentSession().flush();
|
||||
} catch (ValidationException e) {
|
||||
throw new RuntimeException(e);
|
||||
|
|
|
|||
|
|
@ -1,12 +1,13 @@
|
|||
package org.navalplanner.web.common.converters;
|
||||
|
||||
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
|
||||
import org.navalplanner.business.orders.daos.IOrderDAO;
|
||||
import org.navalplanner.business.orders.entities.Order;
|
||||
import org.navalplanner.business.orders.services.IOrderService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* A {@link IConverter} for {@link Order} <br />
|
||||
|
|
@ -17,12 +18,13 @@ import org.springframework.stereotype.Component;
|
|||
public class OrderConverter implements IConverter<Order> {
|
||||
|
||||
@Autowired
|
||||
private IOrderService orderService;
|
||||
private IOrderDAO orderDAO;
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public Order asObject(String stringRepresentation) {
|
||||
try {
|
||||
return orderService.find(Long.parseLong(stringRepresentation));
|
||||
return orderDAO.find(Long.parseLong(stringRepresentation));
|
||||
} catch (InstanceNotFoundException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,10 +11,10 @@ import org.hibernate.validator.ClassValidator;
|
|||
import org.hibernate.validator.InvalidValue;
|
||||
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
|
||||
import org.navalplanner.business.common.exceptions.ValidationException;
|
||||
import org.navalplanner.business.orders.daos.IOrderDAO;
|
||||
import org.navalplanner.business.orders.entities.IOrderLineGroup;
|
||||
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;
|
||||
|
|
@ -45,7 +45,8 @@ public class OrderModel implements IOrderModel {
|
|||
|
||||
private static final Map<CriterionType, List<Criterion>> mapCriterions = new HashMap<CriterionType, List<Criterion>>();
|
||||
|
||||
private final IOrderService orderService;
|
||||
@Autowired
|
||||
private IOrderDAO orderDAO;
|
||||
|
||||
private Order order;
|
||||
|
||||
|
|
@ -57,24 +58,22 @@ public class OrderModel implements IOrderModel {
|
|||
@Autowired
|
||||
private IOrderElementModel orderElementModel;
|
||||
|
||||
private final ITaskElementService taskElementService;
|
||||
|
||||
@Autowired
|
||||
private ICriterionDAO criterionDAO;
|
||||
|
||||
@Autowired
|
||||
public OrderModel(IOrderService orderService,
|
||||
ITaskElementService taskElementService) {
|
||||
Validate.notNull(orderService);
|
||||
private ITaskElementService taskElementService;
|
||||
|
||||
@Autowired
|
||||
public OrderModel(ITaskElementService taskElementService) {
|
||||
Validate.notNull(taskElementService);
|
||||
this.orderService = orderService;
|
||||
this.taskElementService = taskElementService;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public List<Order> getOrders() {
|
||||
return orderService.getOrders();
|
||||
return orderDAO.getOrders();
|
||||
}
|
||||
|
||||
private void loadCriterions() {
|
||||
|
|
@ -99,7 +98,7 @@ public class OrderModel implements IOrderModel {
|
|||
|
||||
private Order getFromDB(Order order) {
|
||||
try {
|
||||
return orderService.find(order.getId());
|
||||
return orderDAO.find(order.getId());
|
||||
} catch (InstanceNotFoundException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
|
@ -121,8 +120,7 @@ public class OrderModel implements IOrderModel {
|
|||
InvalidValue[] invalidValues = orderValidator.getInvalidValues(order);
|
||||
if (invalidValues.length > 0)
|
||||
throw new ValidationException(invalidValues);
|
||||
|
||||
this.orderService.save(order);
|
||||
this.orderDAO.save(order);
|
||||
}
|
||||
|
||||
private void reattachCriterions() {
|
||||
|
|
@ -139,9 +137,10 @@ public class OrderModel implements IOrderModel {
|
|||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void remove(Order order) {
|
||||
try {
|
||||
this.orderService.remove(order);
|
||||
this.orderDAO.remove(order.getId());
|
||||
} catch (InstanceNotFoundException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@ import java.util.List;
|
|||
import java.util.Set;
|
||||
|
||||
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
|
||||
import org.navalplanner.business.orders.daos.IOrderDAO;
|
||||
import org.navalplanner.business.orders.entities.Order;
|
||||
import org.navalplanner.business.orders.services.IOrderService;
|
||||
import org.navalplanner.business.planner.entities.TaskElement;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
|
|
@ -26,7 +26,7 @@ import org.zkoss.ganttz.adapters.PlannerConfiguration;
|
|||
public abstract class OrderPlanningModel implements IOrderPlanningModel {
|
||||
|
||||
@Autowired
|
||||
private IOrderService orderService;
|
||||
private IOrderDAO orderDAO;
|
||||
|
||||
private PlanningState planningState;
|
||||
|
||||
|
|
@ -160,7 +160,7 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel {
|
|||
|
||||
private Order reload(Order order) {
|
||||
try {
|
||||
return orderService.find(order.getId());
|
||||
return orderDAO.find(order.getId());
|
||||
} catch (InstanceNotFoundException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue