From 99a18db7ab3dd11b7948d76b169ed8ce4a508895 Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Thu, 31 Dec 2009 08:08:04 +0100 Subject: [PATCH] ItEr41S23CUImportarTraballoRealizadoPorSubcontrata: Added information about criterion requirements to order element exportation process. --- .../orders/api/CriterionRequirementDTO.java | 50 +++++++++++++++++++ .../api/DirectCriterionRequirementDTO.java | 42 ++++++++++++++++ .../ws/orders/api/HoursGroupDTO.java | 16 +++++- .../api/IndirectCriterionRequirementDTO.java | 48 ++++++++++++++++++ .../navalplanner/ws/orders/api/OrderDTO.java | 4 +- .../ws/orders/api/OrderElementDTO.java | 11 +++- .../ws/orders/api/OrderLineDTO.java | 3 +- .../ws/orders/api/OrderLineGroupDTO.java | 3 +- .../ConfigurationOrderElementConverter.java | 16 ++++-- .../ws/orders/impl/OrderElementConverter.java | 49 +++++++++++++++--- 10 files changed, 227 insertions(+), 15 deletions(-) create mode 100644 navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/CriterionRequirementDTO.java create mode 100644 navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/DirectCriterionRequirementDTO.java create mode 100644 navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/IndirectCriterionRequirementDTO.java diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/CriterionRequirementDTO.java b/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/CriterionRequirementDTO.java new file mode 100644 index 000000000..5efad3dda --- /dev/null +++ b/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/CriterionRequirementDTO.java @@ -0,0 +1,50 @@ +/* + * 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 javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlRootElement; + +import org.navalplanner.business.requirements.entities.CriterionRequirement; + +/** + * DTO for {@link CriterionRequirement} entity. + * + * @author Manuel Rego Casasnovas + */ +@XmlRootElement(name = "criterion-requirement") +public class CriterionRequirementDTO { + + @XmlAttribute + public String name; + + @XmlAttribute + public String type; + + public CriterionRequirementDTO() { + } + + public CriterionRequirementDTO(String name, String type) { + this.name = name; + this.type = type; + } + +} diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/DirectCriterionRequirementDTO.java b/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/DirectCriterionRequirementDTO.java new file mode 100644 index 000000000..ab9ce5438 --- /dev/null +++ b/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/DirectCriterionRequirementDTO.java @@ -0,0 +1,42 @@ +/* + * 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 javax.xml.bind.annotation.XmlRootElement; + +import org.navalplanner.business.requirements.entities.DirectCriterionRequirement; + +/** + * DTO for {@link DirectCriterionRequirement} entity. + * + * @author Manuel Rego Casasnovas + */ +@XmlRootElement(name = "direct-criterion-requirement") +public class DirectCriterionRequirementDTO extends CriterionRequirementDTO { + + public DirectCriterionRequirementDTO() { + } + + public DirectCriterionRequirementDTO(String name, String type) { + super(name, type); + } + +} diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/HoursGroupDTO.java b/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/HoursGroupDTO.java index 799d12937..84eca3fa5 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/HoursGroupDTO.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/HoursGroupDTO.java @@ -20,7 +20,13 @@ package org.navalplanner.ws.orders.api; +import java.util.HashSet; +import java.util.Set; + 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 org.navalplanner.business.orders.entities.HoursGroup; import org.navalplanner.ws.common.api.ResourceEnumDTO; @@ -41,14 +47,22 @@ public class HoursGroupDTO { @XmlAttribute(name = "working-hours") public Integer workingHours; + @XmlElementWrapper(name = "criterion-requirements") + @XmlElements( { + @XmlElement(name = "direct-criterion-requirement", type = DirectCriterionRequirementDTO.class), + @XmlElement(name = "indirect-criterion-requirement", type = IndirectCriterionRequirementDTO.class) }) + public Set criterionRequirements = new HashSet(); + public HoursGroupDTO() { } public HoursGroupDTO(String name, ResourceEnumDTO resourceType, - Integer workingHours) { + Integer workingHours, + Set criterionRequirements) { this.code = name; this.resourceType = resourceType; this.workingHours = workingHours; + this.criterionRequirements = criterionRequirements; } } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/IndirectCriterionRequirementDTO.java b/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/IndirectCriterionRequirementDTO.java new file mode 100644 index 000000000..1cc2e18b4 --- /dev/null +++ b/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/api/IndirectCriterionRequirementDTO.java @@ -0,0 +1,48 @@ +/* + * 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 javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlRootElement; + +import org.navalplanner.business.requirements.entities.IndirectCriterionRequirement; + +/** + * DTO for {@link IndirectCriterionRequirement} entity. + * + * @author Manuel Rego Casasnovas + */ +@XmlRootElement(name = "indirect-criterion-requirement") +public class IndirectCriterionRequirementDTO extends CriterionRequirementDTO { + + @XmlAttribute(name = "is-valid") + public boolean isValid = true; + + public IndirectCriterionRequirementDTO() { + } + + public IndirectCriterionRequirementDTO(String name, String type, + boolean isValid) { + super(name, type); + this.isValid = isValid; + } + +} 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 fb0642d21..f6fbcbce6 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 @@ -51,10 +51,12 @@ public class OrderDTO extends OrderLineGroupDTO { String description, Set labels, Set materialAssignments, Set advanceMeasurements, + Set criterionRequirements, List children, Boolean dependenciesConstraintsHavePriority, String calendarName) { super(name, code, initDate, deadline, description, labels, - materialAssignments, advanceMeasurements, children); + materialAssignments, advanceMeasurements, + criterionRequirements, 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 48191053d..72f6397c6 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 @@ -27,6 +27,7 @@ import java.util.Set; 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.bind.annotation.XmlRootElement; import org.navalplanner.business.orders.entities.OrderElement; @@ -66,13 +67,20 @@ public class OrderElementDTO { @XmlElement(name = "advance-measurement") public Set advanceMeasurements = new HashSet(); + @XmlElementWrapper(name = "criterion-requirements") + @XmlElements( { + @XmlElement(name = "direct-criterion-requirement", type = DirectCriterionRequirementDTO.class), + @XmlElement(name = "indirect-criterion-requirement", type = IndirectCriterionRequirementDTO.class) }) + public Set criterionRequirements = new HashSet(); + public OrderElementDTO() { } public OrderElementDTO(String name, String code, Date initDate, Date deadline, String description, Set labels, Set materialAssignments, - Set advanceMeasurements) { + Set advanceMeasurements, + Set criterionRequirements) { this.name = name; this.code = code; this.initDate = initDate; @@ -81,6 +89,7 @@ public class OrderElementDTO { this.labels = labels; this.materialAssignments = materialAssignments; this.advanceMeasurements = advanceMeasurements; + this.criterionRequirements = criterionRequirements; } } \ 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 ee3d652ea..1e274cb07 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 @@ -50,9 +50,10 @@ public class OrderLineDTO extends OrderElementDTO { String description, Set labels, Set materialAssignments, Set advanceMeasurements, + Set criterionRequirements, Set hoursGroups) { super(name, code, initDate, deadline, description, labels, - materialAssignments, advanceMeasurements); + materialAssignments, advanceMeasurements, criterionRequirements); 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 6b16cee29..3c1b6bcd2 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 @@ -55,9 +55,10 @@ public class OrderLineGroupDTO extends OrderElementDTO { Date deadline, String description, Set labels, Set materialAssignments, Set advanceMeasurements, + Set criterionRequirements, List children) { super(name, code, initDate, deadline, description, labels, - materialAssignments, advanceMeasurements); + materialAssignments, advanceMeasurements, criterionRequirements); this.children = children; } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/impl/ConfigurationOrderElementConverter.java b/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/impl/ConfigurationOrderElementConverter.java index ebcb99ab8..4724325bf 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/impl/ConfigurationOrderElementConverter.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/ws/orders/impl/ConfigurationOrderElementConverter.java @@ -29,30 +29,34 @@ package org.navalplanner.ws.orders.impl; public class ConfigurationOrderElementConverter { public static ConfigurationOrderElementConverter all() { - return new ConfigurationOrderElementConverter(true, true, true, true); + return new ConfigurationOrderElementConverter(true, true, true, true, + true); } public static ConfigurationOrderElementConverter none() { return new ConfigurationOrderElementConverter(false, false, false, - false); + false, false); } public static ConfigurationOrderElementConverter noAdvanceMeasurements() { - return new ConfigurationOrderElementConverter(true, true, false, true); + return new ConfigurationOrderElementConverter(true, true, false, true, + true); } private boolean labels; private boolean materialAssignments; private boolean advanceMeasurements; private boolean hoursGroups; + private boolean criterionRequirements; private ConfigurationOrderElementConverter(boolean labels, boolean materialAssignments, boolean advanceMeasurements, - boolean hoursGroups) { + boolean hoursGroups, boolean criterionRequirements) { this.labels = labels; this.materialAssignments = materialAssignments; this.advanceMeasurements = advanceMeasurements; this.hoursGroups = hoursGroups; + this.criterionRequirements = criterionRequirements; } public boolean isLabels() { @@ -71,4 +75,8 @@ public class ConfigurationOrderElementConverter { return hoursGroups; } + public boolean isCriterionRequirements() { + return criterionRequirements; + } + } 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 db60bbbd2..ddf476c9f 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 @@ -50,12 +50,17 @@ 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.requirements.entities.CriterionRequirement; +import org.navalplanner.business.requirements.entities.IndirectCriterionRequirement; 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.CriterionRequirementDTO; +import org.navalplanner.ws.orders.api.DirectCriterionRequirementDTO; import org.navalplanner.ws.orders.api.HoursGroupDTO; +import org.navalplanner.ws.orders.api.IndirectCriterionRequirementDTO; import org.navalplanner.ws.orders.api.LabelDTO; import org.navalplanner.ws.orders.api.MaterialAssignmentDTO; import org.navalplanner.ws.orders.api.OrderDTO; @@ -102,18 +107,26 @@ public final class OrderElementConverter { .getReportGlobalAdvanceAssignment()); } + Set criterionRequirements = new HashSet(); + if (configuration.isCriterionRequirements()) { + for (CriterionRequirement criterionRequirement : orderElement + .getCriterionRequirements()) { + criterionRequirements.add(toDTO(criterionRequirement)); + } + } + if (orderElement instanceof OrderLine) { Set hoursGroups = new HashSet(); if (configuration.isHoursGroups()) { for (HoursGroup hoursGroup : ((OrderLine) orderElement) .getHoursGroups()) { - hoursGroups.add(toDTO(hoursGroup)); + hoursGroups.add(toDTO(hoursGroup, configuration)); } } return new OrderLineDTO(name, code, initDate, deadline, description, labels, materialAssignments, - advanceMeasurements, hoursGroups); + advanceMeasurements, criterionRequirements, hoursGroups); } else { // orderElement instanceof OrderLineGroup List children = new ArrayList(); for (OrderElement element : orderElement.getChildren()) { @@ -131,16 +144,30 @@ public final class OrderElementConverter { return new OrderDTO(name, code, initDate, deadline, description, labels, materialAssignments, - advanceMeasurements, children, + advanceMeasurements, criterionRequirements, children, dependenciesConstraintsHavePriority, calendarName); } else { // orderElement instanceof OrderLineGroup return new OrderLineGroupDTO(name, code, initDate, deadline, description, labels, materialAssignments, - advanceMeasurements, children); + advanceMeasurements, criterionRequirements, children); } } } + public static CriterionRequirementDTO toDTO( + CriterionRequirement criterionRequirement) { + String name = criterionRequirement.getCriterion().getName(); + String type = criterionRequirement.getCriterion().getType().getName(); + + if (criterionRequirement instanceof IndirectCriterionRequirement) { + boolean isValid = ((IndirectCriterionRequirement) criterionRequirement) + .isIsValid(); + return new IndirectCriterionRequirementDTO(name, type, isValid); + } else { // criterionRequirement instanceof DirectCriterionRequirement + return new DirectCriterionRequirementDTO(name, type); + } + } + public final static Set toDTO( DirectAdvanceAssignment advanceAssignment) { Set advanceMeasurements = new HashSet(); @@ -183,11 +210,21 @@ public final class OrderElementConverter { return new LabelDTO(label.getName(), label.getType().getName()); } - public final static HoursGroupDTO toDTO(HoursGroup hoursGroup) { + public final static HoursGroupDTO toDTO(HoursGroup hoursGroup, + ConfigurationOrderElementConverter configuration) { ResourceEnumDTO resourceType = ResourceEnumConverter.toDTO(hoursGroup .getResourceType()); + + Set criterionRequirements = new HashSet(); + if (configuration.isCriterionRequirements()) { + for (CriterionRequirement criterionRequirement : hoursGroup + .getCriterionRequirements()) { + criterionRequirements.add(toDTO(criterionRequirement)); + } + } + return new HoursGroupDTO(hoursGroup.getCode(), resourceType, hoursGroup - .getWorkingHours()); + .getWorkingHours(), criterionRequirements); } public final static OrderElement toEntity(OrderElementDTO orderElementDTO,