diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/externalcompanies/entities/ExternalCompany.java b/navalplanner-business/src/main/java/org/navalplanner/business/externalcompanies/entities/ExternalCompany.java index 849fdcc98..9bce155e9 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/externalcompanies/entities/ExternalCompany.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/externalcompanies/entities/ExternalCompany.java @@ -20,6 +20,7 @@ package org.navalplanner.business.externalcompanies.entities; +import org.apache.commons.lang.StringUtils; import org.hibernate.validator.AssertTrue; import org.hibernate.validator.NotEmpty; import org.navalplanner.business.common.BaseEntity; @@ -175,4 +176,16 @@ public class ExternalCompany extends BaseEntity { } } } -} + + @AssertTrue(message = "interaction fields are empty and company is marked as interact with applications") + public boolean checkConstraintInteractionFieldsNotEmptyIfNeeded() { + if (!interactsWithApplications) { + return true; + } + + return !StringUtils.isEmpty(appURI) + && !StringUtils.isEmpty(ourCompanyLogin) + && !StringUtils.isEmpty(ourCompanyPassword); + } + +} \ No newline at end of file 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 index 39c87f0a3..fc8a8105b 100644 --- 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 @@ -23,6 +23,7 @@ package org.navalplanner.business.planner.entities; import java.math.BigDecimal; import java.util.Date; +import org.hibernate.validator.AssertTrue; import org.hibernate.validator.NotNull; import org.navalplanner.business.common.BaseEntity; import org.navalplanner.business.externalcompanies.entities.ExternalCompany; @@ -220,4 +221,17 @@ public class SubcontractedTaskData extends BaseEntity { this.criterionRequirementsExported = subcontratedTask.criterionRequirementsExported; } + @AssertTrue(message = "external company should be subcontractor") + public boolean checkConstraintExternalCompanyIsSubcontractor() { + if (!firstLevelValidationsPassed()) { + return true; + } + + return externalCompany.isSubcontractor(); + } + + private boolean firstLevelValidationsPassed() { + return (externalCompany != null) && (subcontratationDate != null); + } + } \ No newline at end of file diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/daos/TaskElementDAOTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/daos/TaskElementDAOTest.java index c40812fe8..e65eeba61 100644 --- a/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/daos/TaskElementDAOTest.java +++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/daos/TaskElementDAOTest.java @@ -427,9 +427,11 @@ public class TaskElementDAOTest { @Autowired private IExternalCompanyDAO externalCompanyDAO; - private ExternalCompany getExternalCompanySaved() { + private ExternalCompany getSubcontractorExternalCompanySaved() { ExternalCompany externalCompany = ExternalCompanyDAOTest .createValidExternalCompany(); + externalCompany.setSubcontractor(true); + externalCompanyDAO.save(externalCompany); externalCompanyDAO.flush(); sessionFactory.getCurrentSession().evict(externalCompany); @@ -446,7 +448,7 @@ public class TaskElementDAOTest { SubcontractedTaskData subcontractedTaskData = SubcontractedTaskData .create(); - subcontractedTaskData.setExternalCompany(getExternalCompanySaved()); + subcontractedTaskData.setExternalCompany(getSubcontractorExternalCompanySaved()); task.setSubcontractedTaskData(subcontractedTaskData); taskElementDAO.save(task);