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