From 706ed0334c95371517859a6cff4e62079393338e Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Wed, 30 Dec 2009 21:18:50 +0100 Subject: [PATCH] ItEr41S23CUImportarTraballoRealizadoPorSubcontrata: Added information about advance on order elements exportation. --- .../ws/orders/api/AdvanceMeasurementDTO.java | 51 +++++++++++++++++++ .../navalplanner/ws/orders/api/OrderDTO.java | 3 +- .../ws/orders/api/OrderElementDTO.java | 8 ++- .../ws/orders/api/OrderLineDTO.java | 4 +- .../ws/orders/api/OrderLineGroupDTO.java | 3 +- .../ws/orders/impl/OrderElementConverter.java | 48 +++++++++++++++-- 6 files changed, 110 insertions(+), 7 deletions(-) create mode 100644 navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/AdvanceMeasurementDTO.java diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/AdvanceMeasurementDTO.java b/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/AdvanceMeasurementDTO.java new file mode 100644 index 000000000..d3a149be7 --- /dev/null +++ b/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/AdvanceMeasurementDTO.java @@ -0,0 +1,51 @@ +/* + * This file is part of ###PROJECT_NAME### + * + * Copyright (C) 2009 Fundación para o Fomento da Calidade Industrial e + * Desenvolvemento Tecnolóxico de Galicia + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package org.navalplanner.ws.orders.api; + +import java.math.BigDecimal; +import java.util.Date; + +import javax.xml.bind.annotation.XmlAttribute; + +import org.navalplanner.business.advance.entities.AdvanceMeasurement; + +/** + * DTO for {@link AdvanceMeasurement} entity. + * + * @author Manuel Rego Casasnovas + */ +public class AdvanceMeasurementDTO { + + @XmlAttribute + public Date date; + + @XmlAttribute + public BigDecimal value; + + public AdvanceMeasurementDTO() { + } + + public AdvanceMeasurementDTO(Date date, BigDecimal value) { + this.date = date; + this.value = value; + } + +} \ No newline at end of file diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/OrderDTO.java b/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/OrderDTO.java index 4a81d7773..fb0642d21 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/OrderDTO.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/OrderDTO.java @@ -50,10 +50,11 @@ public class OrderDTO extends OrderLineGroupDTO { public OrderDTO(String name, String code, Date initDate, Date deadline, String description, Set labels, Set materialAssignments, + Set advanceMeasurements, List children, Boolean dependenciesConstraintsHavePriority, String calendarName) { super(name, code, initDate, deadline, description, labels, - materialAssignments, children); + materialAssignments, advanceMeasurements, children); this.dependenciesConstraintsHavePriority = dependenciesConstraintsHavePriority; this.calendarName = calendarName; } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/OrderElementDTO.java b/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/OrderElementDTO.java index 8de3d602b..48191053d 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/OrderElementDTO.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/OrderElementDTO.java @@ -62,12 +62,17 @@ public class OrderElementDTO { @XmlElement(name = "material-assignment") public Set materialAssignments = new HashSet(); + @XmlElementWrapper(name = "advance-measurements") + @XmlElement(name = "advance-measurement") + public Set advanceMeasurements = new HashSet(); + public OrderElementDTO() { } public OrderElementDTO(String name, String code, Date initDate, Date deadline, String description, Set labels, - Set materialAssignments) { + Set materialAssignments, + Set advanceMeasurements) { this.name = name; this.code = code; this.initDate = initDate; @@ -75,6 +80,7 @@ public class OrderElementDTO { this.description = description; this.labels = labels; this.materialAssignments = materialAssignments; + this.advanceMeasurements = advanceMeasurements; } } \ No newline at end of file diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/OrderLineDTO.java b/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/OrderLineDTO.java index 21e99b376..ee3d652ea 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/OrderLineDTO.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/OrderLineDTO.java @@ -49,8 +49,10 @@ public class OrderLineDTO extends OrderElementDTO { public OrderLineDTO(String name, String code, Date initDate, Date deadline, String description, Set labels, Set materialAssignments, + Set advanceMeasurements, Set hoursGroups) { - super(name, code, initDate, deadline, description, labels, materialAssignments); + super(name, code, initDate, deadline, description, labels, + materialAssignments, advanceMeasurements); this.hoursGroups = hoursGroups; } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/OrderLineGroupDTO.java b/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/OrderLineGroupDTO.java index 55095bc1c..6b16cee29 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/OrderLineGroupDTO.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/OrderLineGroupDTO.java @@ -54,9 +54,10 @@ public class OrderLineGroupDTO extends OrderElementDTO { public OrderLineGroupDTO(String name, String code, Date initDate, Date deadline, String description, Set labels, Set materialAssignments, + Set advanceMeasurements, List children) { super(name, code, initDate, deadline, description, labels, - materialAssignments); + materialAssignments, advanceMeasurements); this.children = children; } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/impl/OrderElementConverter.java b/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/impl/OrderElementConverter.java index fa49f0473..ef8f493b4 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/impl/OrderElementConverter.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/impl/OrderElementConverter.java @@ -22,6 +22,8 @@ package org.navalplanner.ws.orders.impl; import static org.navalplanner.web.I18nHelper._; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.ArrayList; import java.util.Date; import java.util.HashSet; @@ -29,6 +31,8 @@ import java.util.List; import java.util.Set; import org.hibernate.NonUniqueResultException; +import org.navalplanner.business.advance.entities.AdvanceMeasurement; +import org.navalplanner.business.advance.entities.DirectAdvanceAssignment; import org.navalplanner.business.calendars.entities.BaseCalendar; import org.navalplanner.business.common.Registry; import org.navalplanner.business.common.exceptions.InstanceNotFoundException; @@ -47,6 +51,7 @@ import org.navalplanner.business.resources.entities.ResourceEnum; import org.navalplanner.ws.common.api.IncompatibleTypeException; import org.navalplanner.ws.common.api.ResourceEnumDTO; import org.navalplanner.ws.common.impl.ResourceEnumConverter; +import org.navalplanner.ws.orders.api.AdvanceMeasurementDTO; import org.navalplanner.ws.orders.api.HoursGroupDTO; import org.navalplanner.ws.orders.api.LabelDTO; import org.navalplanner.ws.orders.api.MaterialAssignmentDTO; @@ -83,6 +88,9 @@ public final class OrderElementConverter { materialAssignments.add(toDTO(materialAssignment)); } + Set advanceMeasurements = toDTO(orderElement + .getReportGlobalAdvanceAssignment()); + if (orderElement instanceof OrderLine) { Set hoursGroups = new HashSet(); for (HoursGroup hoursGroup : ((OrderLine) orderElement) @@ -91,7 +99,8 @@ public final class OrderElementConverter { } return new OrderLineDTO(name, code, initDate, deadline, - description, labels, materialAssignments, hoursGroups); + description, labels, materialAssignments, + advanceMeasurements, hoursGroups); } else { // orderElement instanceof OrderLineGroup List children = new ArrayList(); for (OrderElement element : orderElement.getChildren()) { @@ -108,15 +117,48 @@ public final class OrderElementConverter { } return new OrderDTO(name, code, initDate, deadline, - description, labels, materialAssignments, children, + description, labels, materialAssignments, + advanceMeasurements, children, dependenciesConstraintsHavePriority, calendarName); } else { // orderElement instanceof OrderLineGroup return new OrderLineGroupDTO(name, code, initDate, deadline, - description, labels, materialAssignments, children); + description, labels, materialAssignments, + advanceMeasurements, children); } } } + public final static Set toDTO( + DirectAdvanceAssignment advanceAssignment) { + Set advanceMeasurements = new HashSet(); + + if (advanceAssignment != null) { + BigDecimal maxValue = advanceAssignment.getMaxValue(); + for (AdvanceMeasurement advanceMeasurement : advanceAssignment + .getAdvanceMeasurements()) { + advanceMeasurements.add(toDTO(maxValue, advanceAssignment + .getAdvanceType().getPercentage(), advanceMeasurement)); + } + } + + return advanceMeasurements; + } + + public final static AdvanceMeasurementDTO toDTO(BigDecimal maxValue, + boolean isPercentage, AdvanceMeasurement advanceMeasurement) { + BigDecimal value; + if (isPercentage) { + value = advanceMeasurement.getValue(); + } else { + value = advanceMeasurement.getValue().divide(maxValue, + RoundingMode.DOWN); + } + Date date = advanceMeasurement.getDate().toDateTimeAtStartOfDay() + .toDate(); + + return new AdvanceMeasurementDTO(date, value); + } + public final static MaterialAssignmentDTO toDTO( MaterialAssignment materialAssignment) { return new MaterialAssignmentDTO(materialAssignment.getMaterial()