From 9366c614477613e437237e1ddd65ba8a5aed56e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Aragunde=20P=C3=A9rez?= Date: Sat, 5 Dec 2009 23:09:18 +0100 Subject: [PATCH] ItEr37S12CUAdministracionCategoriaCosteItEr36S14: added a negative time interval restriction to ResourcesCostCategoryAssignment --- .../entities/ResourcesCostCategoryAssignment.java | 9 +++++++++ .../daos/ResourcesCostCategoryAssignmentDAOTest.java | 10 ++++++++++ 2 files changed, 19 insertions(+) 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); + } }