From adb994ffff7eeece87a7a3ef0f3ad98bedcbd2fe Mon Sep 17 00:00:00 2001 From: Diego Pino Garcia Date: Tue, 28 Jul 2009 13:53:08 +0200 Subject: [PATCH] ItEr18S11CUIntroducionPartesTraballoManualmenteItEr17S16: Added findByCode to OrderElementDao Javier Moran Rua : Corrected formatting errors and comments. --- .../orders/daos/IOrderElementDao.java | 11 +++ .../business/orders/daos/OrderElementDao.java | 19 +++- .../orders/entities/OrderElement.java | 33 ++++--- .../business/orders/entities/Orders.hbm.xml | 3 + .../test/orders/daos/OrderElementDAOTest.java | 99 +++++++++++++++++++ 5 files changed, 151 insertions(+), 14 deletions(-) create mode 100644 navalplanner-business/src/test/java/org/navalplanner/business/test/orders/daos/OrderElementDAOTest.java diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/daos/IOrderElementDao.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/daos/IOrderElementDao.java index de92ec9c0..055fb5ec2 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/orders/daos/IOrderElementDao.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/daos/IOrderElementDao.java @@ -2,12 +2,23 @@ package org.navalplanner.business.orders.daos; import org.navalplanner.business.common.daos.IGenericDao; import org.navalplanner.business.orders.entities.OrderElement; +import org.navalplanner.business.resources.entities.Worker; /** * Contract for {@link OrderElementDao} * * @author Manuel Rego Casasnovas + * @author Diego Pino García */ public interface IOrderElementDao extends IGenericDao { + public OrderElement findByCode(String code); + /** + * Find an order element with the code passed as parameter + * and which is a son of the parent {@link OrderElement} + * @param parent Parent {@link OrderElement} + * @param code code of the {@link OrderElement} to find + * @return the {@link OrderElement} found + */ + public OrderElement findByCode(OrderElement parent, String code); } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/daos/OrderElementDao.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/daos/OrderElementDao.java index 2c4b996d8..3b8ec7c15 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/orders/daos/OrderElementDao.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/daos/OrderElementDao.java @@ -1,5 +1,7 @@ package org.navalplanner.business.orders.daos; +import org.hibernate.Criteria; +import org.hibernate.criterion.Restrictions; import org.navalplanner.business.common.daos.impl.GenericDaoHibernate; import org.navalplanner.business.orders.entities.OrderElement; import org.springframework.beans.factory.config.BeanDefinition; @@ -10,10 +12,23 @@ import org.springframework.stereotype.Repository; * Dao for {@link OrderElement} * * @author Manuel Rego Casasnovas + * @author Diego Pino García */ @Repository @Scope(BeanDefinition.SCOPE_SINGLETON) public class OrderElementDao extends GenericDaoHibernate - implements - IOrderElementDao { + implements IOrderElementDao { + + public OrderElement findByCode(String code) { + Criteria c = getSession().createCriteria(OrderElement.class); + c.add(Restrictions.eq("code", code)); + return (OrderElement) c.uniqueResult(); + } + + public OrderElement findByCode(OrderElement orderElement, String code) { + Criteria c = getSession().createCriteria(OrderElement.class); + c.add(Restrictions.eq("code", code)); + c.add(Restrictions.eq("parent", orderElement)); + return (OrderElement) c.uniqueResult(); + } } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderElement.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderElement.java index 64671346d..8f9cf032a 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderElement.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderElement.java @@ -33,6 +33,16 @@ public abstract class OrderElement { private Set taskElements = new HashSet(); + private OrderLineGroup parent; + + public OrderLineGroup getParent() { + return parent; + } + + public void setParent(OrderLineGroup parent) { + this.parent = parent; + } + public abstract Integer getWorkHours(); public abstract List getHoursGroups(); @@ -52,19 +62,10 @@ public abstract class OrderElement { return name; } - public void setName(String name) { this.name = name; } - public String getCode() { - return code; - } - - public void setCode(String code) { - this.code = code; - } - public abstract boolean isLeaf(); public abstract List getChildren(); @@ -151,12 +152,20 @@ public abstract class OrderElement { return (getHoursGroups().size() > 0); } - public boolean isFormatCodeValid(String code) { + public boolean isFormatCodeValid(String code) { - if (code.contains("_")) return false; - if (code.equals("")) return false; + if (code.contains("_")) + return false; + if (code.equals("")) + return false; return true; } + public void setCode(String code) { + this.code = code; + } + public String getCode() { + return code; + } } 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 5ac0a26e2..a699728bc 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 @@ -37,6 +37,9 @@ + + + diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/orders/daos/OrderElementDAOTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/orders/daos/OrderElementDAOTest.java new file mode 100644 index 000000000..0373cce16 --- /dev/null +++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/orders/daos/OrderElementDAOTest.java @@ -0,0 +1,99 @@ +package org.navalplanner.business.test.orders.daos; + +import static junit.framework.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.navalplanner.business.BusinessGlobalNames.BUSINESS_SPRING_CONFIG_FILE; +import static org.navalplanner.business.test.BusinessGlobalNames.BUSINESS_SPRING_CONFIG_TEST_FILE; + +import java.util.UUID; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.navalplanner.business.orders.daos.IOrderElementDao; +import org.navalplanner.business.orders.entities.OrderLine; +import org.navalplanner.business.orders.entities.OrderLineGroup; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.transaction.annotation.Transactional; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations = { BUSINESS_SPRING_CONFIG_FILE, + BUSINESS_SPRING_CONFIG_TEST_FILE }) +/* + * @author Diego Pino García + */ +@Transactional +public class OrderElementDAOTest { + + @Autowired + private IOrderElementDao orderElementDAO; + + @Test + public void testInSpringContainer() { + assertNotNull(orderElementDAO); + } + + private OrderLine createValidOrderLine() { + String unique = UUID.randomUUID().toString(); + return createValidOrderLine(unique, unique); + } + + private OrderLine createValidOrderLine(String name, String code) { + OrderLine orderLine = new OrderLine(); + orderLine.setName(name); + orderLine.setCode(code); + return orderLine; + } + + private OrderLineGroup createValidOrderLineGroup() { + String unique = UUID.randomUUID().toString(); + return createValidOrderLineGroup(unique, unique); + } + + private OrderLineGroup createValidOrderLineGroup(String name, String code) { + OrderLineGroup orderLineGroup = new OrderLineGroup(); + orderLineGroup.setName(name); + orderLineGroup.setCode(code); + return orderLineGroup; + } + + @Test + public void testSaveOrderLine() { + OrderLine orderLine = createValidOrderLine(); + orderElementDAO.save(orderLine); + assertTrue(orderElementDAO.exists(orderLine.getId())); + } + + @Test + public void testFindByCode() { + OrderLine orderLine = createValidOrderLine(); + orderElementDAO.save(orderLine); + orderLine.setCode(((Long) orderLine.getId()).toString()); + orderElementDAO.save(orderLine); + + OrderLine found = (OrderLine) orderElementDAO.findByCode(orderLine + .getCode()); + assertTrue(found != null && found.getCode().equals(orderLine.getCode())); + } + + @Test + public void testFindByCodeAndOrderLineGroup() { + // Create OrderLineGroupLine + OrderLineGroup orderLineGroup = createValidOrderLineGroup(); + orderElementDAO.save(orderLineGroup); + orderLineGroup.setCode(((Long) orderLineGroup.getId()).toString()); + orderElementDAO.save(orderLineGroup); + + // Create OrderLineGroup + OrderLine orderLine = createValidOrderLine(); + orderElementDAO.save(orderLine); + orderLine.setCode(((Long) orderLine.getId()).toString()); + orderLine.setParent(orderLineGroup); + orderElementDAO.save(orderLine); + + OrderLine found = (OrderLine) orderElementDAO.findByCode( + orderLineGroup, orderLine.getCode()); + assertTrue(found != null && found.getCode().equals(orderLine.getCode())); + } +}