diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/costcategories/entities/ResourcesCostCategoryAssignment.java b/navalplanner-business/src/main/java/org/navalplanner/business/costcategories/entities/ResourcesCostCategoryAssignment.java index d970186a9..91bcda50c 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/costcategories/entities/ResourcesCostCategoryAssignment.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/costcategories/entities/ResourcesCostCategoryAssignment.java @@ -20,6 +20,7 @@ package org.navalplanner.business.costcategories.entities; +import org.hibernate.validator.AssertTrue; import org.hibernate.validator.NotNull; import org.joda.time.LocalDate; import org.navalplanner.business.common.BaseEntity; @@ -88,4 +89,12 @@ public class ResourcesCostCategoryAssignment extends BaseEntity { resource.addResourcesCostCategoryAssignment(this); } } + + @AssertTrue(message="The end date cannot be before the init date") + public boolean checkPositiveTimeInterval() { + if (endDate == null) { + return true; + } + return (endDate.isAfter(initDate) || initDate.equals(endDate)); + } } diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/costcategories/daos/ResourcesCostCategoryAssignmentDAOTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/costcategories/daos/ResourcesCostCategoryAssignmentDAOTest.java index d4e48b46b..c8961eb41 100644 --- a/navalplanner-business/src/test/java/org/navalplanner/business/test/costcategories/daos/ResourcesCostCategoryAssignmentDAOTest.java +++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/costcategories/daos/ResourcesCostCategoryAssignmentDAOTest.java @@ -34,6 +34,7 @@ import org.joda.time.LocalDate; import org.junit.Test; import org.junit.runner.RunWith; import org.navalplanner.business.common.exceptions.InstanceNotFoundException; +import org.navalplanner.business.common.exceptions.ValidationException; import org.navalplanner.business.costcategories.daos.ICostCategoryDAO; import org.navalplanner.business.costcategories.daos.IResourcesCostCategoryAssignmentDAO; import org.navalplanner.business.costcategories.entities.CostCategory; @@ -131,4 +132,13 @@ public class ResourcesCostCategoryAssignmentDAOTest { assignment.setResource(null); assertFalse(resource.getResourcesCostCategoryAssignments().contains(assignment)); } + + @Test(expected=ValidationException.class) + public void testPositiveTimeInterval() { + ResourcesCostCategoryAssignment assignment = createValidResourcesCostCategoryAssignment(); + assignment.setInitDate(new LocalDate(2000,12,31)); + assignment.setEndDate(new LocalDate(2000,12,1)); + + resourcesCostCategoryAssignmentDAO.save(assignment); + } }