diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/SubcontractedTaskData.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/SubcontractedTaskData.java new file mode 100644 index 000000000..991329cb7 --- /dev/null +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/SubcontractedTaskData.java @@ -0,0 +1,190 @@ +/* + * 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.business.planner.entities; + +import java.math.BigDecimal; +import java.util.Date; + +import org.hibernate.validator.NotEmpty; +import org.hibernate.validator.NotNull; +import org.navalplanner.business.common.BaseEntity; +import org.navalplanner.business.externalcompanies.entities.ExternalCompany; + +/** + * Gathers all the information related with a subcontracted {@link Task}. + * + * @author Manuel Rego Casasnovas + */ +public class SubcontractedTaskData extends BaseEntity { + + public static SubcontractedTaskData create(String subcontractedCode) { + SubcontractedTaskData subcontractedTaskData = new SubcontractedTaskData( + subcontractedCode); + subcontractedTaskData.subcontratationDate = new Date(); + return create(subcontractedTaskData); + } + + private ExternalCompany externalCompany; + + private Date subcontratationDate; + + private Date subcontractCommunicationDate; + + private String workDescription; + + private BigDecimal subcontractPrice; + + private String subcontractedCode; + + private Boolean nodeWithoutChildrenExported; + private Boolean labelsExported; + private Boolean materialAssignmentsExported; + private Boolean hoursGroupsExported; + private Boolean criterionRequirementsExported; + + /** + * Constructor for hibernate. Do not use! + */ + public SubcontractedTaskData() { + } + + private SubcontractedTaskData(String subcontractedCode) { + this.subcontractedCode = subcontractedCode; + } + + @NotNull(message = "external company not specified") + public ExternalCompany getExternalCompany() { + return externalCompany; + } + + public void setExternalCompany(ExternalCompany externalCompany) { + this.externalCompany = externalCompany; + } + + public Date getSubcontractCommunicationDate() { + return subcontractCommunicationDate; + } + + public void setSubcontractCommunicationDate( + Date subcontractCommunicationDate) { + this.subcontractCommunicationDate = subcontractCommunicationDate; + } + + public String getWorkDescription() { + return workDescription; + } + + public void setWorkDescription(String workDescription) { + this.workDescription = workDescription; + } + + public BigDecimal getSubcontractPrice() { + return subcontractPrice; + } + + public void setSubcontractPrice(BigDecimal subcontractPrice) { + this.subcontractPrice = subcontractPrice; + } + + @NotEmpty(message = "subcontracted code not specified") + public String getSubcontractedCode() { + return subcontractedCode; + } + + public boolean isNodeWithoutChildrenExported() { + if (nodeWithoutChildrenExported == null) { + return false; + } + return nodeWithoutChildrenExported; + } + + public void setNodeWithoutChildrenExported( + Boolean nodeWithoutChildrenExported) { + if (nodeWithoutChildrenExported == null) { + nodeWithoutChildrenExported = false; + } + this.nodeWithoutChildrenExported = nodeWithoutChildrenExported; + } + + public boolean isLabelsExported() { + if (labelsExported == null) { + return false; + } + return labelsExported; + } + + public void setLabelsExported(Boolean labelsExported) { + if (labelsExported == null) { + labelsExported = false; + } + this.labelsExported = labelsExported; + } + + public Boolean isMaterialAssignmentsExported() { + if (materialAssignmentsExported == null) { + return false; + } + return materialAssignmentsExported; + } + + public void setMaterialAssignmentsExported( + Boolean materialAssignmentsExported) { + if (materialAssignmentsExported == null) { + materialAssignmentsExported = false; + } + this.materialAssignmentsExported = materialAssignmentsExported; + } + + public Boolean isHoursGroupsExported() { + if (hoursGroupsExported == null) { + return false; + } + return hoursGroupsExported; + } + + public void setHoursGroupsExported(Boolean hoursGroupsExported) { + if (hoursGroupsExported == null) { + hoursGroupsExported = false; + } + this.hoursGroupsExported = hoursGroupsExported; + } + + public Boolean isCriterionRequirementsExported() { + if (criterionRequirementsExported == null) { + return false; + } + return criterionRequirementsExported; + } + + public void setCriterionRequirementsExported( + Boolean criterionRequirementsExported) { + if (criterionRequirementsExported == null) { + criterionRequirementsExported = false; + } + this.criterionRequirementsExported = criterionRequirementsExported; + } + + @NotNull(message = "subcontratation date not specified") + public Date getSubcontratationDate() { + return subcontratationDate; + } + +} diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/Task.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/Task.java index c2acb3c13..84410dcfa 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/Task.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/Task.java @@ -32,6 +32,7 @@ import org.apache.commons.lang.Validate; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.validator.AssertTrue; +import org.hibernate.validator.Valid; import org.joda.time.DateTime; import org.joda.time.Days; import org.joda.time.LocalDate; @@ -66,6 +67,9 @@ public class Task extends TaskElement { private TaskStartConstraint startConstraint = new TaskStartConstraint(); + @Valid + private SubcontractedTaskData subcontractedTaskData; + /** * Constructor for hibernate. Do not use! */ @@ -391,4 +395,12 @@ public class Task extends TaskElement { return getTaskSource().getAggregatedByCriterions(); } + public void setSubcontractedTaskData(SubcontractedTaskData subcontractedTaskData) { + this.subcontractedTaskData = subcontractedTaskData; + } + + public SubcontractedTaskData getSubcontractedTaskData() { + return subcontractedTaskData; + } + } diff --git a/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/Tasks.hbm.xml b/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/Tasks.hbm.xml index b1d4c6a1b..aa6c8392a 100644 --- a/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/Tasks.hbm.xml +++ b/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/Tasks.hbm.xml @@ -51,6 +51,11 @@ + + + @@ -83,4 +88,28 @@ + + + + + + + + + + + + + + + + + + + + + + + +