From 746ce17bf17c9c51a780f1a85b0e14ba3a074e43 Mon Sep 17 00:00:00 2001 From: Fernando Bellas Permuy Date: Wed, 30 Dec 2009 11:39:14 +0100 Subject: [PATCH] ItEr41S15CUImportacionRecursosProductivosItEr40S20: String fields when importing resources are trimmed. String fields when importing resources are trimmed. --- .../business/common/StringUtils.java | 11 ++++++++++- .../resources/entities/CriterionType.java | 2 +- .../ws/resources/impl/ResourceConverter.java | 15 +++++++++------ .../ws/resources/api/ResourceServiceTest.java | 16 +++++++++++----- scripts/rest-clients/resources-sample.xml | 8 ++++---- 5 files changed, 35 insertions(+), 17 deletions(-) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/common/StringUtils.java b/navalplanner-business/src/main/java/org/navalplanner/business/common/StringUtils.java index 9d6c2c56e..4d8f006e0 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/common/StringUtils.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/common/StringUtils.java @@ -30,10 +30,19 @@ public class StringUtils { private StringUtils() {} /** - * Check if a String is null or "" after being trimmed. + * Checks if a string is null or empty ("" after being + * trimmed). */ public static boolean isEmpty(String s) { return s == null ? true : s.trim().equals(""); } + /** + * Trims a string if is not null; otherwise, it returns + * null. + */ + public static String trim(String s) { + return s == null ? null : s.trim(); + } + } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/CriterionType.java b/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/CriterionType.java index 7a6003a83..3c649b7fa 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/CriterionType.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/CriterionType.java @@ -288,7 +288,7 @@ public class CriterionType extends BaseEntity implements throws InstanceNotFoundException { for (Criterion c : criterions) { - if (c.getName().trim().equalsIgnoreCase(criterionName)) { + if (c.getName().equalsIgnoreCase(criterionName)) { return c; } } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/ws/resources/impl/ResourceConverter.java b/navalplanner-webapp/src/main/java/org/navalplanner/ws/resources/impl/ResourceConverter.java index f8f1d534d..ef5660fb3 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/ws/resources/impl/ResourceConverter.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/ws/resources/impl/ResourceConverter.java @@ -24,6 +24,7 @@ import static org.navalplanner.web.I18nHelper._; import java.util.List; +import org.navalplanner.business.common.StringUtils; import org.navalplanner.business.common.exceptions.CreateUnvalidatedException; import org.navalplanner.business.resources.entities.CriterionSatisfaction; import org.navalplanner.business.resources.entities.Machine; @@ -68,14 +69,16 @@ public class ResourceConverter { private final static Machine createResourceWithBasicData( MachineDTO machineDTO) { - return Machine.createUnvalidated(machineDTO.code,machineDTO.name, - machineDTO.description); + return Machine.createUnvalidated(StringUtils.trim(machineDTO.code), + StringUtils.trim(machineDTO.name), + StringUtils.trim(machineDTO.description)); } private final static Worker createResourceWithBasicData( WorkerDTO workerDTO) { - return Worker.createUnvalidated(workerDTO.firstName, workerDTO.surname, - workerDTO.nif); + return Worker.createUnvalidated(StringUtils.trim(workerDTO.firstName), + StringUtils.trim(workerDTO.surname), + StringUtils.trim(workerDTO.nif)); } private static void addCriterionSatisfactions(Resource resource, @@ -99,8 +102,8 @@ public class ResourceConverter { throws CreateUnvalidatedException { return CriterionSatisfaction.createUnvalidated( - criterionSatisfactionDTO.criterionTypeName, - criterionSatisfactionDTO.criterionName, + StringUtils.trim(criterionSatisfactionDTO.criterionTypeName), + StringUtils.trim(criterionSatisfactionDTO.criterionName), resource, DateConverter.toDate(criterionSatisfactionDTO.startDate), DateConverter.toDate(criterionSatisfactionDTO.finishDate)); diff --git a/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/resources/api/ResourceServiceTest.java b/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/resources/api/ResourceServiceTest.java index b27b28c3c..d948732c1 100644 --- a/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/resources/api/ResourceServiceTest.java +++ b/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/resources/api/ResourceServiceTest.java @@ -87,12 +87,16 @@ public class ResourceServiceTest { public void testAddResourcesWithBasicContraintViolations() throws InstanceNotFoundException { - String m1Code = getUniqueName(); + String m1Code = ' ' + getUniqueName() + ' '; // Blank spaces + // intentionally + // added (OK). MachineDTO m1 = new MachineDTO(m1Code, "name", "desc"); MachineDTO m2 = new MachineDTO("", null, ""); // Missing code and name // (description is // optional). - String w1Nif = getUniqueName(); + String w1Nif = ' ' + getUniqueName() + ' '; // Blank spaces + // intentionally + // added (OK). WorkerDTO w1 = new WorkerDTO("w1-first-name", "w1-surname", w1Nif); WorkerDTO w2 = new WorkerDTO("", null, ""); // Missing first name, // surname, and nif. @@ -112,8 +116,8 @@ public class ResourceServiceTest { constraintViolations.size() == 2); // m2 constraint violations. assertTrue(instanceConstraintViolationsList.get(1). constraintViolations.size() == 3); // w2 constraint violations. - assertTrue(machineDAO.findByNameOrCode(m1Code).size() == 1); - workerDAO.findUniqueByNif(w1Nif); + assertTrue(machineDAO.findByNameOrCode(m1Code.trim()).size() == 1); + workerDAO.findUniqueByNif(w1Nif.trim()); } @@ -128,7 +132,9 @@ public class ResourceServiceTest { /* Create a resource DTO. */ MachineDTO machineDTO = new MachineDTO(ct.getName(), "name", "desc"); machineDTO.criterionSatisfactions.add( - new CriterionSatisfactionDTO(ct.getName(), "c1", + new CriterionSatisfactionDTO( + ' ' + ct.getName() + ' ', " c1 ", // Blank spaces intentionally + // added (OK). Calendar.getInstance().getTime(), null)); machineDTO.criterionSatisfactions.add( new CriterionSatisfactionDTO(ct.getName(), "c2", diff --git a/scripts/rest-clients/resources-sample.xml b/scripts/rest-clients/resources-sample.xml index ffeb16b5f..65cd373c0 100644 --- a/scripts/rest-clients/resources-sample.xml +++ b/scripts/rest-clients/resources-sample.xml @@ -4,17 +4,17 @@ - + - +