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,