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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+