From 32af27067bc99cc1507d84ebcc78656e337971cd Mon Sep 17 00:00:00 2001 From: Susana Montes Pedreira Date: Fri, 9 Jul 2010 11:39:56 +0200 Subject: [PATCH] ItEr60S04ValidacionEProbasFuncionaisItEr59S04 : Fixing bug in Order Service. it shows the error messages when the importation is incorrect. --- .../subcontract/SubcontractedTasksModel.java | 7 +- .../ws/common/api/AdvanceMeasurementDTO.java | 6 +- .../ws/common/api/MaterialAssignmentDTO.java | 6 +- .../navalplanner/ws/common/api/OrderDTO.java | 5 +- .../ws/common/api/OrderElementDTO.java | 11 +-- .../ws/common/api/OrderLineDTO.java | 5 +- .../ws/common/api/OrderLineGroupDTO.java | 7 +- .../ws/common/impl/OrderElementConverter.java | 85 ++++++++++++++----- .../impl/ReportAdvancesServiceREST.java | 6 +- .../web/scenarios/ScenarioModelTest.java | 1 - .../ws/orders/OrderElementServiceTest.java | 79 +++++++++-------- .../ReportAdvancesServiceTest.java | 4 +- .../subcontract/SubcontractServiceTest.java | 4 +- .../rest-clients/order-elements-sample.xml | 4 +- 14 files changed, 144 insertions(+), 86 deletions(-) diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/subcontract/SubcontractedTasksModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/subcontract/SubcontractedTasksModel.java index 1d74908d5..0a493b430 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/subcontract/SubcontractedTasksModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/subcontract/SubcontractedTasksModel.java @@ -50,6 +50,7 @@ import org.navalplanner.ws.common.api.InstanceConstraintViolationsDTO; import org.navalplanner.ws.common.api.InstanceConstraintViolationsListDTO; import org.navalplanner.ws.common.api.OrderElementDTO; import org.navalplanner.ws.common.impl.ConfigurationOrderElementConverter; +import org.navalplanner.ws.common.impl.DateConverter; import org.navalplanner.ws.common.impl.OrderElementConverter; import org.navalplanner.ws.common.impl.Util; import org.navalplanner.ws.subcontract.api.SubcontractedTaskDataDTO; @@ -211,8 +212,10 @@ public class SubcontractedTasksModel implements ISubcontractedTasksModel { private void overrideDateInformationForRootNode( OrderElementDTO orderElementDTO, Task task) { - orderElementDTO.initDate = task.getStartDate(); - orderElementDTO.deadline = task.getEndDate(); + orderElementDTO.initDate = DateConverter.toXMLGregorianCalendar(task + .getStartDate()); + orderElementDTO.deadline = DateConverter.toXMLGregorianCalendar(task + .getEndDate()); } private ConfigurationOrderElementConverter getConfiguration( diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/api/AdvanceMeasurementDTO.java b/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/api/AdvanceMeasurementDTO.java index 603c1f57e..ef2b92a45 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/api/AdvanceMeasurementDTO.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/api/AdvanceMeasurementDTO.java @@ -21,9 +21,9 @@ package org.navalplanner.ws.common.api; import java.math.BigDecimal; -import java.util.Date; import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.datatype.XMLGregorianCalendar; import org.navalplanner.business.advance.entities.AdvanceMeasurement; @@ -35,7 +35,7 @@ import org.navalplanner.business.advance.entities.AdvanceMeasurement; public class AdvanceMeasurementDTO { @XmlAttribute - public Date date; + public XMLGregorianCalendar date; @XmlAttribute public BigDecimal value; @@ -43,7 +43,7 @@ public class AdvanceMeasurementDTO { public AdvanceMeasurementDTO() { } - public AdvanceMeasurementDTO(Date date, BigDecimal value) { + public AdvanceMeasurementDTO(XMLGregorianCalendar date, BigDecimal value) { this.date = date; this.value = value; } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/api/MaterialAssignmentDTO.java b/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/api/MaterialAssignmentDTO.java index 73a4bbfb3..6eca60240 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/api/MaterialAssignmentDTO.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/api/MaterialAssignmentDTO.java @@ -21,9 +21,9 @@ package org.navalplanner.ws.common.api; import java.math.BigDecimal; -import java.util.Date; import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.datatype.XMLGregorianCalendar; import org.navalplanner.business.materials.entities.MaterialAssignment; @@ -44,13 +44,13 @@ public class MaterialAssignmentDTO { public BigDecimal unitPrice; @XmlAttribute(name = "estimated-availability") - public Date estimatedAvailability; + public XMLGregorianCalendar estimatedAvailability; public MaterialAssignmentDTO() { } public MaterialAssignmentDTO(String materialCode, Double units, - BigDecimal unitPrice, Date estimatedAvailability) { + BigDecimal unitPrice, XMLGregorianCalendar estimatedAvailability) { this.materialCode = materialCode; this.units = units; this.unitPrice = unitPrice; diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/api/OrderDTO.java b/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/api/OrderDTO.java index 2a0a6e1ef..894ef4aec 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/api/OrderDTO.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/api/OrderDTO.java @@ -20,11 +20,11 @@ package org.navalplanner.ws.common.api; -import java.util.Date; import java.util.List; import java.util.Set; import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.datatype.XMLGregorianCalendar; import org.navalplanner.business.orders.entities.Order; @@ -48,7 +48,8 @@ public class OrderDTO extends OrderLineGroupDTO { super(); } - public OrderDTO(String name, String code, Date initDate, Date deadline, + public OrderDTO(String name, String code, XMLGregorianCalendar initDate, + XMLGregorianCalendar deadline, String description, Set labels, Set materialAssignments, Set advanceMeasurements, diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/api/OrderElementDTO.java b/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/api/OrderElementDTO.java index aeaff7aa9..f8a75b75c 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/api/OrderElementDTO.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/api/OrderElementDTO.java @@ -20,7 +20,6 @@ package org.navalplanner.ws.common.api; -import java.util.Date; import java.util.HashSet; import java.util.Set; @@ -28,6 +27,7 @@ import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlElements; +import javax.xml.datatype.XMLGregorianCalendar; import org.navalplanner.business.orders.entities.OrderElement; @@ -45,10 +45,10 @@ public class OrderElementDTO extends IntegrationEntityDTO { public String name; @XmlAttribute(name = "init-date") - public Date initDate; + public XMLGregorianCalendar initDate; @XmlAttribute - public Date deadline; + public XMLGregorianCalendar deadline; @XmlAttribute public String description; @@ -74,8 +74,9 @@ public class OrderElementDTO extends IntegrationEntityDTO { public OrderElementDTO() { } - public OrderElementDTO(String name, String code, Date initDate, - Date deadline, String description, Set labels, + public OrderElementDTO(String name, String code, + XMLGregorianCalendar initDate, XMLGregorianCalendar deadline, + String description, Set labels, Set materialAssignments, Set advanceMeasurements, Set criterionRequirements) { diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/api/OrderLineDTO.java b/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/api/OrderLineDTO.java index 3b237a672..8514e0c92 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/api/OrderLineDTO.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/api/OrderLineDTO.java @@ -20,13 +20,13 @@ package org.navalplanner.ws.common.api; -import java.util.Date; import java.util.HashSet; import java.util.Set; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.datatype.XMLGregorianCalendar; import org.navalplanner.business.orders.entities.OrderLine; @@ -46,7 +46,8 @@ public class OrderLineDTO extends OrderElementDTO { super(); } - public OrderLineDTO(String name, String code, Date initDate, Date deadline, + public OrderLineDTO(String name, String code, + XMLGregorianCalendar initDate, XMLGregorianCalendar deadline, String description, Set labels, Set materialAssignments, Set advanceMeasurements, diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/api/OrderLineGroupDTO.java b/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/api/OrderLineGroupDTO.java index f51f4ff51..6afb7efc7 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/api/OrderLineGroupDTO.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/api/OrderLineGroupDTO.java @@ -21,7 +21,6 @@ package org.navalplanner.ws.common.api; import java.util.ArrayList; -import java.util.Date; import java.util.List; import java.util.Set; @@ -29,6 +28,7 @@ import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlElements; import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.datatype.XMLGregorianCalendar; import org.navalplanner.business.orders.entities.OrderLineGroup; @@ -51,8 +51,9 @@ public class OrderLineGroupDTO extends OrderElementDTO { super(); } - public OrderLineGroupDTO(String name, String code, Date initDate, - Date deadline, String description, Set labels, + public OrderLineGroupDTO(String name, String code, + XMLGregorianCalendar initDate, XMLGregorianCalendar deadline, + String description, Set labels, Set materialAssignments, Set advanceMeasurements, Set criterionRequirements, diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/impl/OrderElementConverter.java b/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/impl/OrderElementConverter.java index da31f7c50..90b3b4ad7 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/impl/OrderElementConverter.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/impl/OrderElementConverter.java @@ -29,6 +29,9 @@ import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Set; +import java.util.UUID; + +import javax.xml.datatype.XMLGregorianCalendar; import org.apache.commons.lang.Validate; import org.joda.time.LocalDate; @@ -85,8 +88,10 @@ public final class OrderElementConverter { ConfigurationOrderElementConverter configuration) { String name = orderElement.getName(); String code = orderElement.getCode(); - Date initDate = orderElement.getInitDate(); - Date deadline = orderElement.getDeadline(); + XMLGregorianCalendar initDate = DateConverter + .toXMLGregorianCalendar(orderElement.getInitDate()); + XMLGregorianCalendar deadline = DateConverter + .toXMLGregorianCalendar(orderElement.getDeadline()); String description = orderElement.getDescription(); Set labels = new HashSet(); @@ -196,17 +201,21 @@ public final class OrderElementConverter { value = advanceMeasurement.getValue().divide(maxValue, RoundingMode.DOWN); } - Date date = advanceMeasurement.getDate().toDateTimeAtStartOfDay() - .toDate(); - + XMLGregorianCalendar date = DateConverter + .toXMLGregorianCalendar(advanceMeasurement.getDate()); return new AdvanceMeasurementDTO(date, value); } public final static MaterialAssignmentDTO toDTO( MaterialAssignment materialAssignment) { + + XMLGregorianCalendar estimatedAvailability = DateConverter + .toXMLGregorianCalendar(materialAssignment + .getEstimatedAvailability()); + return new MaterialAssignmentDTO(materialAssignment.getMaterial() .getCode(), materialAssignment.getUnits(), materialAssignment - .getUnitPrice(), materialAssignment.getEstimatedAvailability()); + .getUnitPrice(), estimatedAvailability); } public final static HoursGroupDTO toDTO(HoursGroup hoursGroup, @@ -281,9 +290,13 @@ public final class OrderElementConverter { DirectCriterionRequirement directCriterionRequirement = getDirectCriterionRequirementByCriterion( criterionRequirable, criterion); if (directCriterionRequirement == null) { - criterionRequirable + try { + criterionRequirable .addCriterionRequirement(DirectCriterionRequirement .create(criterion)); + } catch (IllegalStateException e) { + throw new ValidationException(e.getMessage()); + } } } else { // criterionRequirementDTO instanceof // IndirectCriterionRequirementDTO @@ -296,6 +309,16 @@ public final class OrderElementConverter { } } } + } else { + if (criterionRequirementDTO.name == null + || criterionRequirementDTO.type == null) { + throw new ValidationException( + "the criterion format is incorrect"); + } else { + throw new ValidationException("the criterion " + + criterionRequirementDTO.name + " which type is " + + criterionRequirementDTO.type + " not found"); + } } } } @@ -339,7 +362,6 @@ public final class OrderElementConverter { && (!((OrderLineDTO) orderElementDTO).hoursGroups.isEmpty())) { orderElement = OrderLine .createUnvalidated(orderElementDTO.code); - for (HoursGroupDTO hoursGroupDTO : ((OrderLineDTO) orderElementDTO).hoursGroups) { HoursGroup hoursGroup = toEntity(hoursGroupDTO, configuration); @@ -349,6 +371,10 @@ public final class OrderElementConverter { orderElement = OrderLine .createUnvalidatedWithUnfixedPercentage( orderElementDTO.code, 0); + if (!orderElement.getHoursGroups().isEmpty()) { + orderElement.getHoursGroups().get(0).setCode( + UUID.randomUUID().toString()); + } } } else { // orderElementDTO instanceof OrderLineGroupDTO @@ -387,8 +413,10 @@ public final class OrderElementConverter { orderElement.setName(orderElementDTO.name); orderElement.setCode(orderElementDTO.code); - orderElement.setInitDate(orderElementDTO.initDate); - orderElement.setDeadline(orderElementDTO.deadline); + orderElement + .setInitDate(DateConverter.toDate(orderElementDTO.initDate)); + orderElement + .setDeadline(DateConverter.toDate(orderElementDTO.deadline)); orderElement.setDescription(orderElementDTO.description); if (configuration.isLabels()) { @@ -457,6 +485,7 @@ public final class OrderElementConverter { */ material.validate(); Registry.getMaterialDAO().save(material); + material.dontPoseAsTransientObjectAnymore(); } MaterialAssignment materialAssignment = MaterialAssignment @@ -465,8 +494,11 @@ public final class OrderElementConverter { .setUnitsWithoutNullCheck(materialAssignmentDTO.units); materialAssignment .setUnitPriceWithoutNullCheck(materialAssignmentDTO.unitPrice); - materialAssignment - .setEstimatedAvailability(materialAssignmentDTO.estimatedAvailability); + + Date estimatedAvailability = DateConverter + .toDate(materialAssignmentDTO.estimatedAvailability); + materialAssignment.setEstimatedAvailability(estimatedAvailability); + return materialAssignment; } @@ -576,10 +608,13 @@ public final class OrderElementConverter { for (LabelReferenceDTO labelDTO : orderElementDTO.labels) { if (!orderElement.containsLabel(labelDTO.code)) { try { - orderElement.addLabel(LabelReferenceConverter.toEntity(labelDTO)); + orderElement.addLabel(LabelReferenceConverter + .toEntity(labelDTO)); } catch (InstanceNotFoundException e) { throw new ValidationException("Label " + labelDTO.code + " not found"); + } catch (IllegalArgumentException e) { + throw new ValidationException(e.getMessage()); } } } @@ -609,11 +644,13 @@ public final class OrderElementConverter { } if (orderElementDTO.initDate != null) { - orderElement.setInitDate(orderElementDTO.initDate); + orderElement.setInitDate(DateConverter + .toDate(orderElementDTO.initDate)); } if (orderElementDTO.deadline != null) { - orderElement.setDeadline(orderElementDTO.deadline); + orderElement.setDeadline(DateConverter + .toDate(orderElementDTO.deadline)); } if (orderElementDTO.description != null) { @@ -655,8 +692,9 @@ public final class OrderElementConverter { materialAssignment.setUnitPrice(materialAssignmentDTO.unitPrice); } if (materialAssignmentDTO.estimatedAvailability != null) { - materialAssignment - .setEstimatedAvailability(materialAssignmentDTO.estimatedAvailability); + Date estimatedAvailability = DateConverter + .toDate(materialAssignmentDTO.estimatedAvailability); + materialAssignment.setEstimatedAvailability(estimatedAvailability); } } @@ -669,7 +707,8 @@ public final class OrderElementConverter { AdvanceMeasurement advanceMeasurement = null; LocalDate date = null; if (advanceMeasurementDTO.date != null) { - date = new LocalDate(advanceMeasurementDTO.date); + date = new LocalDate(DateConverter + .toLocalDate(advanceMeasurementDTO.date)); advanceMeasurement = directAdvanceAssignment .getAdvanceMeasurementAtExactDate(date); } @@ -709,17 +748,17 @@ public final class OrderElementConverter { public static AdvanceMeasurement toEntity( AdvanceMeasurementDTO advanceMeasurementDTO) { - AdvanceMeasurement advanceMeasurement = AdvanceMeasurement.create( - LocalDate - .fromDateFields(advanceMeasurementDTO.date), + LocalDate date = DateConverter.toLocalDate(advanceMeasurementDTO.date); + AdvanceMeasurement advanceMeasurement = AdvanceMeasurement.create(date, advanceMeasurementDTO.value); return advanceMeasurement; } public static AdvanceMeasurementDTO toDTO( AdvanceMeasurement advanceMeasurement) { - return new AdvanceMeasurementDTO(advanceMeasurement.getDate() - .toDateTimeAtStartOfDay().toDate(), advanceMeasurement + XMLGregorianCalendar date = DateConverter + .toXMLGregorianCalendar(advanceMeasurement.getDate()); + return new AdvanceMeasurementDTO(date, advanceMeasurement .getValue()); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/ws/subcontract/impl/ReportAdvancesServiceREST.java b/navalplanner-webapp/src/main/java/org/navalplanner/ws/subcontract/impl/ReportAdvancesServiceREST.java index ae68cfea1..8f8a9513d 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/ws/subcontract/impl/ReportAdvancesServiceREST.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/ws/subcontract/impl/ReportAdvancesServiceREST.java @@ -31,7 +31,6 @@ import javax.ws.rs.Path; import javax.ws.rs.Produces; import org.apache.commons.lang.StringUtils; -import org.joda.time.LocalDate; import org.navalplanner.business.advance.bootstrap.PredefinedAdvancedTypes; import org.navalplanner.business.advance.entities.AdvanceMeasurement; import org.navalplanner.business.advance.entities.DirectAdvanceAssignment; @@ -47,6 +46,7 @@ import org.navalplanner.ws.common.api.AdvanceMeasurementDTO; import org.navalplanner.ws.common.api.InstanceConstraintViolationsDTO; import org.navalplanner.ws.common.api.InstanceConstraintViolationsListDTO; import org.navalplanner.ws.common.impl.ConstraintViolationConverter; +import org.navalplanner.ws.common.impl.DateConverter; import org.navalplanner.ws.common.impl.OrderElementConverter; import org.navalplanner.ws.common.impl.Util; import org.navalplanner.ws.subcontract.api.IReportAdvancesService; @@ -148,8 +148,8 @@ public class ReportAdvancesServiceREST implements IReportAdvancesService { for (AdvanceMeasurementDTO advanceMeasurementDTO : orderElementWithAdvanceMeasurementsDTO.advanceMeasurements) { AdvanceMeasurement advanceMeasurement = advanceAssignmentSubcontractor - .getAdvanceMeasurement(LocalDate - .fromDateFields(advanceMeasurementDTO.date)); + .getAdvanceMeasurement(DateConverter + .toLocalDate(advanceMeasurementDTO.date)); if (advanceMeasurement == null) { advanceAssignmentSubcontractor .addAdvanceMeasurements(OrderElementConverter diff --git a/navalplanner-webapp/src/test/java/org/navalplanner/web/scenarios/ScenarioModelTest.java b/navalplanner-webapp/src/test/java/org/navalplanner/web/scenarios/ScenarioModelTest.java index cb467d810..421b8992a 100644 --- a/navalplanner-webapp/src/test/java/org/navalplanner/web/scenarios/ScenarioModelTest.java +++ b/navalplanner-webapp/src/test/java/org/navalplanner/web/scenarios/ScenarioModelTest.java @@ -138,7 +138,6 @@ public class ScenarioModelTest { order.add(orderLine); orderLine.setCode(UUID.randomUUID().toString()); orderLine.setName("order-line-name"); - orderDAO.save(order); orderDAO.flush(); sessionFactory.getCurrentSession().evict(order); diff --git a/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/orders/OrderElementServiceTest.java b/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/orders/OrderElementServiceTest.java index 64d1ce526..4c3d322e6 100644 --- a/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/orders/OrderElementServiceTest.java +++ b/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/orders/OrderElementServiceTest.java @@ -85,6 +85,7 @@ import org.navalplanner.ws.common.api.OrderDTO; import org.navalplanner.ws.common.api.OrderLineDTO; import org.navalplanner.ws.common.api.OrderLineGroupDTO; import org.navalplanner.ws.common.api.ResourceEnumDTO; +import org.navalplanner.ws.common.impl.DateConverter; import org.navalplanner.ws.orders.api.IOrderElementService; import org.navalplanner.ws.orders.api.OrderListDTO; import org.springframework.beans.factory.annotation.Autowired; @@ -252,7 +253,7 @@ public class OrderElementServiceTest { int previous = orderDAO.getOrders().size(); OrderDTO orderDTO = new OrderDTO(); - orderDTO.initDate = new Date(); + orderDTO.initDate = DateConverter.toXMLGregorianCalendar(new Date()); OrderListDTO orderListDTO = createOrderListDTO(orderDTO); List instanceConstraintViolationsList = orderElementService @@ -278,7 +279,7 @@ public class OrderElementServiceTest { OrderDTO orderDTO = new OrderDTO(); orderDTO.name = "Order name " + UUID.randomUUID().toString(); orderDTO.code = code; - orderDTO.initDate = new Date(); + orderDTO.initDate = DateConverter.toXMLGregorianCalendar(new Date()); OrderListDTO orderListDTO = createOrderListDTO(orderDTO); List instanceConstraintViolationsList = orderElementService @@ -296,7 +297,7 @@ public class OrderElementServiceTest { OrderDTO orderDTO = new OrderDTO(); orderDTO.name = "Order name " + UUID.randomUUID().toString(); orderDTO.code = "order-code " + UUID.randomUUID().toString(); - orderDTO.initDate = new Date(); + orderDTO.initDate = DateConverter.toXMLGregorianCalendar(new Date()); OrderLineDTO orderLineDTO = new OrderLineDTO(); orderDTO.children.add(orderLineDTO); @@ -308,9 +309,8 @@ public class OrderElementServiceTest { List constraintViolations = instanceConstraintViolationsList .get(0).constraintViolations; - // Mandatory fields: code,infoComponent.code, infoComponent.name, hours - // group code. - assertThat(constraintViolations.size(), equalTo(4)); + // Mandatory fields: code,infoComponent.code, infoComponent.name. + assertThat(constraintViolations.size(), equalTo(3)); assertThat(orderDAO.getOrders().size(), equalTo(previous)); } @@ -322,7 +322,7 @@ public class OrderElementServiceTest { OrderDTO orderDTO = new OrderDTO(); orderDTO.name = "Order name " + UUID.randomUUID().toString(); orderDTO.code = "order-code " + UUID.randomUUID().toString(); - orderDTO.initDate = new Date(); + orderDTO.initDate = DateConverter.toXMLGregorianCalendar(new Date()); OrderLineDTO orderLineDTO = new OrderLineDTO(); orderLineDTO.name = "Order line " + UUID.randomUUID().toString(); @@ -356,7 +356,7 @@ public class OrderElementServiceTest { OrderDTO orderDTO = new OrderDTO(); orderDTO.name = "Order name " + UUID.randomUUID().toString(); orderDTO.code = code; - orderDTO.initDate = new Date(); + orderDTO.initDate = DateConverter.toXMLGregorianCalendar(new Date()); OrderLineDTO orderLineDTO = new OrderLineDTO(); orderLineDTO.name = "Order line " + UUID.randomUUID().toString(); @@ -387,7 +387,7 @@ public class OrderElementServiceTest { OrderDTO orderDTO = new OrderDTO(); orderDTO.name = "Order name " + UUID.randomUUID().toString(); orderDTO.code = "order-code " + UUID.randomUUID().toString(); - orderDTO.initDate = new Date(); + orderDTO.initDate = DateConverter.toXMLGregorianCalendar(new Date()); OrderLineGroupDTO orderLineGroupDTO = new OrderLineGroupDTO(); orderDTO.children.add(orderLineGroupDTO); @@ -414,7 +414,7 @@ public class OrderElementServiceTest { OrderDTO orderDTO = new OrderDTO(); orderDTO.name = "Order name " + UUID.randomUUID().toString(); orderDTO.code = "order-code " + UUID.randomUUID().toString(); - orderDTO.initDate = new Date(); + orderDTO.initDate = DateConverter.toXMLGregorianCalendar(new Date()); OrderLineGroupDTO orderLineGroupDTO = new OrderLineGroupDTO(); orderLineGroupDTO.name = "Order line group " @@ -444,7 +444,7 @@ public class OrderElementServiceTest { OrderDTO orderDTO = new OrderDTO(); orderDTO.name = "Order name " + UUID.randomUUID().toString(); orderDTO.code = code; - orderDTO.initDate = new Date(); + orderDTO.initDate = DateConverter.toXMLGregorianCalendar(new Date()); OrderLineGroupDTO orderLineGroupDTO = new OrderLineGroupDTO(); orderLineGroupDTO.name = "Order line group " @@ -484,7 +484,7 @@ public class OrderElementServiceTest { OrderDTO orderDTO = new OrderDTO(); orderDTO.name = "Order name " + UUID.randomUUID().toString(); orderDTO.code = "order-code " + UUID.randomUUID().toString(); - orderDTO.initDate = new Date(); + orderDTO.initDate = DateConverter.toXMLGregorianCalendar(new Date()); MaterialAssignmentDTO materialAssignmentDTO = new MaterialAssignmentDTO(); orderDTO.materialAssignments.add(materialAssignmentDTO); @@ -510,7 +510,7 @@ public class OrderElementServiceTest { OrderDTO orderDTO = new OrderDTO(); orderDTO.name = "Order name " + UUID.randomUUID().toString(); orderDTO.code = "order-code " + UUID.randomUUID().toString(); - orderDTO.initDate = new Date(); + orderDTO.initDate = DateConverter.toXMLGregorianCalendar(new Date()); MaterialAssignmentDTO materialAssignmentDTO = new MaterialAssignmentDTO(); materialAssignmentDTO.materialCode = "material-code " @@ -541,7 +541,7 @@ public class OrderElementServiceTest { OrderDTO orderDTO = new OrderDTO(); orderDTO.name = "Order name " + UUID.randomUUID().toString(); orderDTO.code = code; - orderDTO.initDate = new Date(); + orderDTO.initDate = DateConverter.toXMLGregorianCalendar(new Date()); MaterialAssignmentDTO materialAssignmentDTO = new MaterialAssignmentDTO(); materialAssignmentDTO.materialCode = "material-code " @@ -571,7 +571,7 @@ public class OrderElementServiceTest { OrderDTO orderDTO = new OrderDTO(); orderDTO.name = "Order name " + UUID.randomUUID().toString(); orderDTO.code = "order-code " + UUID.randomUUID().toString(); - orderDTO.initDate = new Date(); + orderDTO.initDate = DateConverter.toXMLGregorianCalendar(new Date()); LabelReferenceDTO labelReferenceDTO = new LabelReferenceDTO(); orderDTO.labels.add(labelReferenceDTO); @@ -595,7 +595,7 @@ public class OrderElementServiceTest { OrderDTO orderDTO = new OrderDTO(); orderDTO.name = "Order name " + UUID.randomUUID().toString(); orderDTO.code = code; - orderDTO.initDate = new Date(); + orderDTO.initDate = DateConverter.toXMLGregorianCalendar(new Date()); LabelReferenceDTO labelReferenceDTO = new LabelReferenceDTO(); labelReferenceDTO.code = labelCode; @@ -621,7 +621,7 @@ public class OrderElementServiceTest { OrderDTO orderDTO = new OrderDTO(); orderDTO.name = "Order name " + UUID.randomUUID().toString(); orderDTO.code = "order-code " + UUID.randomUUID().toString(); - orderDTO.initDate = new Date(); + orderDTO.initDate = DateConverter.toXMLGregorianCalendar(new Date()); LabelReferenceDTO labelReferenceDTO = new LabelReferenceDTO(); labelReferenceDTO.code = labelCode; @@ -660,7 +660,7 @@ public class OrderElementServiceTest { OrderDTO orderDTO = new OrderDTO(); orderDTO.name = "Order name " + UUID.randomUUID().toString(); orderDTO.code = code; - orderDTO.initDate = new Date(); + orderDTO.initDate = DateConverter.toXMLGregorianCalendar(new Date()); LabelReferenceDTO labelReferenceDTO = new LabelReferenceDTO(labelCode); orderDTO.labels.add(labelReferenceDTO); @@ -710,7 +710,7 @@ public class OrderElementServiceTest { OrderDTO orderDTO = new OrderDTO(); orderDTO.name = "Order name " + UUID.randomUUID().toString(); orderDTO.code = code; - orderDTO.initDate = new Date(); + orderDTO.initDate = DateConverter.toXMLGregorianCalendar(new Date()); MaterialAssignmentDTO materialAssignmentDTO = new MaterialAssignmentDTO( materialcode1, 100.0, BigDecimal.TEN, null); @@ -769,7 +769,7 @@ public class OrderElementServiceTest { OrderDTO orderDTO = new OrderDTO(); orderDTO.name = "Order name " + UUID.randomUUID().toString(); orderDTO.code = code; - orderDTO.initDate = new Date(); + orderDTO.initDate = DateConverter.toXMLGregorianCalendar(new Date()); OrderLineDTO orderLineDTO = new OrderLineDTO(); orderLineDTO.name = "Order line " + UUID.randomUUID().toString(); @@ -842,7 +842,7 @@ public class OrderElementServiceTest { OrderDTO orderDTO = new OrderDTO(); orderDTO.name = "Order name " + UUID.randomUUID().toString(); orderDTO.code = code; - orderDTO.initDate = new Date(); + orderDTO.initDate = DateConverter.toXMLGregorianCalendar(new Date()); AdvanceMeasurementDTO advanceMeasurementDTO = new AdvanceMeasurementDTO(); orderDTO.advanceMeasurements.add(advanceMeasurementDTO); @@ -884,10 +884,11 @@ public class OrderElementServiceTest { OrderDTO orderDTO = new OrderDTO(); orderDTO.name = "Order name " + UUID.randomUUID().toString(); orderDTO.code = code; - orderDTO.initDate = new Date(); + orderDTO.initDate = DateConverter.toXMLGregorianCalendar(new Date()); AdvanceMeasurementDTO advanceMeasurementDTO = new AdvanceMeasurementDTO( - new Date(), BigDecimal.TEN); + DateConverter.toXMLGregorianCalendar(new Date()), + BigDecimal.TEN); orderDTO.advanceMeasurements.add(advanceMeasurementDTO); OrderListDTO orderListDTO = createOrderListDTO(orderDTO); @@ -919,11 +920,12 @@ public class OrderElementServiceTest { OrderDTO orderDTO = new OrderDTO(); orderDTO.name = "Order name " + UUID.randomUUID().toString(); orderDTO.code = code; - orderDTO.initDate = new Date(); + orderDTO.initDate = DateConverter.toXMLGregorianCalendar(new Date()); LocalDate date = new LocalDate(); AdvanceMeasurementDTO advanceMeasurementDTO = new AdvanceMeasurementDTO( - date.toDateTimeAtStartOfDay().toDate(), new BigDecimal(15)); + DateConverter.toXMLGregorianCalendar(date), new BigDecimal(15)); + orderDTO.advanceMeasurements.add(advanceMeasurementDTO); OrderListDTO orderListDTO = createOrderListDTO(orderDTO); @@ -943,7 +945,7 @@ public class OrderElementServiceTest { sessionFactory.getCurrentSession().evict(orderElement); AdvanceMeasurementDTO advanceMeasurementDTO2 = new AdvanceMeasurementDTO( - date.plusWeeks(1).toDateTimeAtStartOfDay().toDate(), + DateConverter.toXMLGregorianCalendar(date.plusWeeks(1)), new BigDecimal(20)); orderDTO.advanceMeasurements.add(advanceMeasurementDTO2); @@ -984,7 +986,7 @@ public class OrderElementServiceTest { OrderDTO orderDTO = new OrderDTO(); orderDTO.name = "Order name " + UUID.randomUUID().toString(); orderDTO.code = code; - orderDTO.initDate = new Date(); + orderDTO.initDate = DateConverter.toXMLGregorianCalendar(new Date()); CriterionRequirementDTO criterionRequirementDTO = new DirectCriterionRequirementDTO(); orderDTO.criterionRequirements.add(criterionRequirementDTO); @@ -992,11 +994,16 @@ public class OrderElementServiceTest { OrderListDTO orderListDTO = createOrderListDTO(orderDTO); List instanceConstraintViolationsList = orderElementService .addOrders(orderListDTO).instanceConstraintViolationsList; - assertThat(instanceConstraintViolationsList.size(), equalTo(0)); - OrderElement orderElement = orderElementDAO.findUniqueByCode(code); - assertNotNull(orderElement); - assertThat(orderElement.getCriterionRequirements().size(), equalTo(0)); + // the criterion format is incorrect because its name and type is empty. + assertThat(instanceConstraintViolationsList.size(), equalTo(1)); + + try { + OrderElement orderElement = orderElementDAO.findUniqueByCode(code); + fail("Order shouldn't be stored"); + } catch (InstanceNotFoundException e) { + // It should throw an exception + } } @Test @@ -1014,7 +1021,7 @@ public class OrderElementServiceTest { OrderDTO orderDTO = new OrderDTO(); orderDTO.name = "Order name " + UUID.randomUUID().toString(); orderDTO.code = code; - orderDTO.initDate = new Date(); + orderDTO.initDate = DateConverter.toXMLGregorianCalendar(new Date()); String name = PredefinedCriterionTypes.LEAVE.getPredefined().get(0); String type = PredefinedCriterionTypes.LEAVE.getName(); @@ -1048,7 +1055,7 @@ public class OrderElementServiceTest { OrderDTO orderDTO = new OrderDTO(); orderDTO.name = "Order name " + UUID.randomUUID().toString(); orderDTO.code = code; - orderDTO.initDate = new Date(); + orderDTO.initDate = DateConverter.toXMLGregorianCalendar(new Date()); String name = PredefinedCriterionTypes.LEAVE.getPredefined().get(0); String type = PredefinedCriterionTypes.LEAVE.getName(); @@ -1099,7 +1106,7 @@ public class OrderElementServiceTest { OrderDTO orderDTO = new OrderDTO(); orderDTO.name = "Order name " + UUID.randomUUID().toString(); orderDTO.code = code; - orderDTO.initDate = new Date(); + orderDTO.initDate = DateConverter.toXMLGregorianCalendar(new Date()); String name = PredefinedCriterionTypes.LEAVE.getPredefined().get(0); String type = PredefinedCriterionTypes.LEAVE.getName(); @@ -1160,7 +1167,7 @@ public class OrderElementServiceTest { OrderDTO orderDTO = new OrderDTO(); orderDTO.name = "Order name " + UUID.randomUUID().toString(); orderDTO.code = code; - orderDTO.initDate = new Date(); + orderDTO.initDate = DateConverter.toXMLGregorianCalendar(new Date()); String name = PredefinedCriterionTypes.LEAVE.getPredefined().get(0); String type = PredefinedCriterionTypes.LEAVE.getName(); @@ -1231,7 +1238,7 @@ public class OrderElementServiceTest { OrderDTO orderDTO = new OrderDTO(); orderDTO.name = "Order name"; orderDTO.code = code; - orderDTO.initDate = new Date(); + orderDTO.initDate = DateConverter.toXMLGregorianCalendar(new Date()); String name = PredefinedCriterionTypes.LEAVE.getPredefined().get(0); String type = PredefinedCriterionTypes.LEAVE.getName(); diff --git a/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/subcontract/ReportAdvancesServiceTest.java b/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/subcontract/ReportAdvancesServiceTest.java index 44b6b9098..063b4b308 100644 --- a/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/subcontract/ReportAdvancesServiceTest.java +++ b/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/subcontract/ReportAdvancesServiceTest.java @@ -60,6 +60,7 @@ import org.navalplanner.business.scenarios.IScenarioManager; import org.navalplanner.business.scenarios.entities.OrderVersion; import org.navalplanner.web.orders.OrderModelTest; import org.navalplanner.ws.common.api.AdvanceMeasurementDTO; +import org.navalplanner.ws.common.impl.DateConverter; import org.navalplanner.ws.subcontract.api.IReportAdvancesService; import org.navalplanner.ws.subcontract.api.OrderElementWithAdvanceMeasurementsDTO; import org.navalplanner.ws.subcontract.api.OrderElementWithAdvanceMeasurementsListDTO; @@ -182,7 +183,8 @@ public class ReportAdvancesServiceTest { orderElementWithAdvanceMeasurementsDTO.code = orderElementCode; Set advanceMeasurementDTOs = new HashSet(); - advanceMeasurementDTOs.add(new AdvanceMeasurementDTO(date, value)); + advanceMeasurementDTOs.add(new AdvanceMeasurementDTO(DateConverter + .toXMLGregorianCalendar(date), value)); orderElementWithAdvanceMeasurementsDTO.advanceMeasurements = advanceMeasurementDTOs; ExternalCompany externalCompany = getSubcontractorExternalCompanySaved( diff --git a/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/subcontract/SubcontractServiceTest.java b/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/subcontract/SubcontractServiceTest.java index 5c582bc81..0e8f1600b 100644 --- a/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/subcontract/SubcontractServiceTest.java +++ b/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/subcontract/SubcontractServiceTest.java @@ -52,6 +52,7 @@ import org.navalplanner.business.scenarios.bootstrap.IScenariosBootstrap; import org.navalplanner.ws.common.api.InstanceConstraintViolationsDTO; import org.navalplanner.ws.common.api.OrderElementDTO; import org.navalplanner.ws.common.api.OrderLineDTO; +import org.navalplanner.ws.common.impl.DateConverter; import org.navalplanner.ws.subcontract.api.ISubcontractService; import org.navalplanner.ws.subcontract.api.SubcontractedTaskDataDTO; import org.springframework.beans.factory.annotation.Autowired; @@ -105,7 +106,8 @@ public class SubcontractServiceTest { OrderLineDTO orderLineDTO = new OrderLineDTO(); orderLineDTO.name = "Test"; orderLineDTO.code = orderLineCode; - orderLineDTO.initDate = new Date(); + orderLineDTO.initDate = DateConverter + .toXMLGregorianCalendar(new Date()); return orderLineDTO; } diff --git a/scripts/rest-clients/order-elements-sample.xml b/scripts/rest-clients/order-elements-sample.xml index 284bfed4d..b824dca9e 100644 --- a/scripts/rest-clients/order-elements-sample.xml +++ b/scripts/rest-clients/order-elements-sample.xml @@ -62,6 +62,8 @@ - + + +