ItEr41S23CUImportarTraballoRealizadoPorSubcontrata: Added information about criterion requirements to order element exportation process.

This commit is contained in:
Manuel Rego Casasnovas 2009-12-31 08:08:04 +01:00 committed by Javier Moran Rua
parent b1a202a3b2
commit 99a18db7ab
10 changed files with 227 additions and 15 deletions

View file

@ -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 <http://www.gnu.org/licenses/>.
*/
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 <mrego@igalia.com>
*/
@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;
}
}

View file

@ -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 <http://www.gnu.org/licenses/>.
*/
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 <mrego@igalia.com>
*/
@XmlRootElement(name = "direct-criterion-requirement")
public class DirectCriterionRequirementDTO extends CriterionRequirementDTO {
public DirectCriterionRequirementDTO() {
}
public DirectCriterionRequirementDTO(String name, String type) {
super(name, type);
}
}

View file

@ -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<CriterionRequirementDTO> criterionRequirements = new HashSet<CriterionRequirementDTO>();
public HoursGroupDTO() {
}
public HoursGroupDTO(String name, ResourceEnumDTO resourceType,
Integer workingHours) {
Integer workingHours,
Set<CriterionRequirementDTO> criterionRequirements) {
this.code = name;
this.resourceType = resourceType;
this.workingHours = workingHours;
this.criterionRequirements = criterionRequirements;
}
}

View file

@ -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 <http://www.gnu.org/licenses/>.
*/
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 <mrego@igalia.com>
*/
@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;
}
}

View file

@ -51,10 +51,12 @@ public class OrderDTO extends OrderLineGroupDTO {
String description, Set<LabelDTO> labels,
Set<MaterialAssignmentDTO> materialAssignments,
Set<AdvanceMeasurementDTO> advanceMeasurements,
Set<CriterionRequirementDTO> criterionRequirements,
List<OrderElementDTO> 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;
}

View file

@ -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<AdvanceMeasurementDTO> advanceMeasurements = new HashSet<AdvanceMeasurementDTO>();
@XmlElementWrapper(name = "criterion-requirements")
@XmlElements( {
@XmlElement(name = "direct-criterion-requirement", type = DirectCriterionRequirementDTO.class),
@XmlElement(name = "indirect-criterion-requirement", type = IndirectCriterionRequirementDTO.class) })
public Set<CriterionRequirementDTO> criterionRequirements = new HashSet<CriterionRequirementDTO>();
public OrderElementDTO() {
}
public OrderElementDTO(String name, String code, Date initDate,
Date deadline, String description, Set<LabelDTO> labels,
Set<MaterialAssignmentDTO> materialAssignments,
Set<AdvanceMeasurementDTO> advanceMeasurements) {
Set<AdvanceMeasurementDTO> advanceMeasurements,
Set<CriterionRequirementDTO> 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;
}
}

View file

@ -50,9 +50,10 @@ public class OrderLineDTO extends OrderElementDTO {
String description, Set<LabelDTO> labels,
Set<MaterialAssignmentDTO> materialAssignments,
Set<AdvanceMeasurementDTO> advanceMeasurements,
Set<CriterionRequirementDTO> criterionRequirements,
Set<HoursGroupDTO> hoursGroups) {
super(name, code, initDate, deadline, description, labels,
materialAssignments, advanceMeasurements);
materialAssignments, advanceMeasurements, criterionRequirements);
this.hoursGroups = hoursGroups;
}

View file

@ -55,9 +55,10 @@ public class OrderLineGroupDTO extends OrderElementDTO {
Date deadline, String description, Set<LabelDTO> labels,
Set<MaterialAssignmentDTO> materialAssignments,
Set<AdvanceMeasurementDTO> advanceMeasurements,
Set<CriterionRequirementDTO> criterionRequirements,
List<OrderElementDTO> children) {
super(name, code, initDate, deadline, description, labels,
materialAssignments, advanceMeasurements);
materialAssignments, advanceMeasurements, criterionRequirements);
this.children = children;
}

View file

@ -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;
}
}

View file

@ -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<CriterionRequirementDTO> criterionRequirements = new HashSet<CriterionRequirementDTO>();
if (configuration.isCriterionRequirements()) {
for (CriterionRequirement criterionRequirement : orderElement
.getCriterionRequirements()) {
criterionRequirements.add(toDTO(criterionRequirement));
}
}
if (orderElement instanceof OrderLine) {
Set<HoursGroupDTO> hoursGroups = new HashSet<HoursGroupDTO>();
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<OrderElementDTO> children = new ArrayList<OrderElementDTO>();
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<AdvanceMeasurementDTO> toDTO(
DirectAdvanceAssignment advanceAssignment) {
Set<AdvanceMeasurementDTO> advanceMeasurements = new HashSet<AdvanceMeasurementDTO>();
@ -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<CriterionRequirementDTO> criterionRequirements = new HashSet<CriterionRequirementDTO>();
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,