Sfoglia il codice sorgente

BirthCertificateCommandPartThreeValidator (2)

Andrew Grant 6 mesi fa
parent
commit
85e58d0e01

+ 1 - 0
src/main/java/scot/carricksoftware/grants/constants/ValidationConstants.java

@@ -38,6 +38,7 @@ public class ValidationConstants {
     public static final String WHERE_BORN_IS_NULL = "Where born cannot be null.";
     public static final String SEX_IS_NULL = "Sex cannot be null.";
     public static final String WHEN_BORN_INCORRECT_FORMAT = "The format should be dd/MM/yyyy hh:mm.";
+    public static final String WHEN_BORN_IS_NULL = "When born cannot be null.";
 
     public static final String PLACE_IS_NULL = "The place cannot be null.";
     public static final String COUNTRY_IS_NULL = "The country cannot be null.";

+ 0 - 1
src/main/java/scot/carricksoftware/grants/validators/census/censusentry/CensusEntryCommandValidatorImpl.java

@@ -95,7 +95,6 @@ public class CensusEntryCommandValidatorImpl implements CensusEntryCommandValida
         }
     }
 
-    @SuppressWarnings("DuplicatedCode")
     private void validateInteger(String part, int low, int high, String validationConstant, String field, BindingResult bindingResult) {
         boolean invalid = false;
         try {

+ 11 - 67
src/main/java/scot/carricksoftware/grants/validators/certificates/BirthCertificateCommandPartThreeValidator.java

@@ -10,8 +10,8 @@ import org.apache.logging.log4j.Logger;
 import org.springframework.stereotype.Component;
 import org.springframework.validation.BindingResult;
 import scot.carricksoftware.grants.commands.certificates.birthcertificates.BirthCertificateCommand;
-import scot.carricksoftware.grants.constants.ApplicationConstants;
 import scot.carricksoftware.grants.constants.ValidationConstants;
+import scot.carricksoftware.grants.validators.helpers.ValidateTypes;
 
 
 @Component
@@ -19,90 +19,34 @@ public class BirthCertificateCommandPartThreeValidator {
 
     private static final Logger logger = LogManager.getLogger(BirthCertificateCommandPartThreeValidator.class);
 
+    private final ValidateTypes validateTypes;
+
+    public BirthCertificateCommandPartThreeValidator(ValidateTypes validateTypes) {
+        this.validateTypes = validateTypes;
+    }
 
     public void validate(BirthCertificateCommand birthCertificateCommand, BindingResult bindingResult) {
-        logger.debug("Validating birth certificate command (part two)");
+        logger.debug("Validating birth certificate command (part three)");
 
         validateSex(birthCertificateCommand, bindingResult);
         validateWhenBorn(birthCertificateCommand, bindingResult);
         validateWhereBorn(birthCertificateCommand, bindingResult);
     }
 
-
     private void validateWhereBorn(BirthCertificateCommand birthCertificateCommand, BindingResult bindingResult) {
         logger.debug("Validating where born");
-        if (birthCertificateCommand.getWhereBorn() == null || birthCertificateCommand.getWhereBorn().isEmpty()) {
-            bindingResult.rejectValue("whereBorn", ApplicationConstants.EMPTY_STRING,
-                    null,
-                    ValidationConstants.WHERE_BORN_IS_NULL);
-        }
+        validateTypes.validateNullOrEmptyString(birthCertificateCommand.getWhereBorn(), "whereBorn", ValidationConstants.WHERE_BORN_IS_NULL, bindingResult);
     }
 
-
     private void validateSex(BirthCertificateCommand birthCertificateCommand, BindingResult bindingResult) {
         logger.debug("Validating sex");
-        if (birthCertificateCommand.getSex() == null ) {
-            bindingResult.rejectValue("sex", ApplicationConstants.EMPTY_STRING,
-                    null,
-                    ValidationConstants.SEX_IS_NULL);
-        }
+        validateTypes.validateSex(birthCertificateCommand.getSex(), "whereBorn", ValidationConstants.SEX_IS_NULL, bindingResult);
     }
 
     private void validateWhenBorn(BirthCertificateCommand birthCertificateCommand, BindingResult bindingResult) {
-        String[] parts = birthCertificateCommand.getWhenBorn().split("/");
-        if (parts.length != 3) {
-            bindingResult.rejectValue("whenBorn", ApplicationConstants.EMPTY_STRING,
-                    null,
-                    ValidationConstants.WHEN_BORN_INCORRECT_FORMAT);
-        } else {
-            validateInteger(parts[0], 1, 31, ValidationConstants.WHEN_BORN_INCORRECT_FORMAT, "whenBorn", bindingResult);
-            validateInteger(parts[1], 1, 12, ValidationConstants.WHEN_BORN_INCORRECT_FORMAT, "whenBorn", bindingResult);
-            validateYearAndTime(parts[2], bindingResult);
-        }
+        logger.debug("Validating when born");
+        validateTypes.validatePastDateAndTime(birthCertificateCommand.getWhenBorn(), "whereBorn", ValidationConstants.WHEN_BORN_IS_NULL, ValidationConstants.WHEN_BORN_INCORRECT_FORMAT, ValidationConstants.DATE_IN_FUTURE,bindingResult);
     }
 
 
-    @SuppressWarnings("DuplicatedCode")
-    private void validateInteger(String part, int low, int high, @SuppressWarnings("SameParameterValue") String validationConstant, @SuppressWarnings("SameParameterValue") String field, BindingResult bindingResult) {
-        boolean invalid = false;
-        try {
-            int value = Integer.parseInt(part);
-            if (value < low || value > high) {
-                invalid = true;
-            }
-        } catch (RuntimeException e) {
-            invalid = true;
-        }
-        if (invalid) {
-            bindingResult.rejectValue(field, ApplicationConstants.EMPTY_STRING,
-                    null,
-                    validationConstant);
-        }
-    }
-
-    private void validateYearAndTime(String string, BindingResult bindingResult) {
-        String[] parts = string.split(" ");
-        if (parts.length != 2) {
-            bindingResult.rejectValue("whenBorn", ApplicationConstants.EMPTY_STRING,
-                    null,
-                    ValidationConstants.WHEN_BORN_INCORRECT_FORMAT);
-        }
-        else {
-            validateInteger(parts[0], 1600, 2029, ValidationConstants.WHEN_BORN_INCORRECT_FORMAT, "whenBorn", bindingResult);
-            validateTime(parts[1], "whenBorn", bindingResult);
-        }
-    }
-
-    @SuppressWarnings("unused")
-    private void validateTime(String time, @SuppressWarnings("SameParameterValue") String whenBorn, BindingResult bindingResult) {
-        String[] parts = time.split(":");
-        if (parts.length != 2) {
-            bindingResult.rejectValue("whenBorn", ApplicationConstants.EMPTY_STRING,
-                    null,
-                    ValidationConstants.WHEN_BORN_INCORRECT_FORMAT);
-        } else {
-            validateInteger(parts[0], 0, 24, ValidationConstants.WHEN_BORN_INCORRECT_FORMAT, "whenBorn", bindingResult);
-            validateInteger(parts[1], 0, 59, ValidationConstants.WHEN_BORN_INCORRECT_FORMAT, "whenBorn", bindingResult);
-        }
-    }
 }

+ 6 - 0
src/main/java/scot/carricksoftware/grants/validators/helpers/ValidateTypes.java

@@ -8,6 +8,7 @@ package scot.carricksoftware.grants.validators.helpers;
 import org.springframework.validation.BindingResult;
 import scot.carricksoftware.grants.domains.people.Person;
 import scot.carricksoftware.grants.domains.places.Organisation;
+import scot.carricksoftware.grants.enums.censusentry.CensusEntrySex;
 import scot.carricksoftware.grants.enums.certificates.CertificateType;
 
 public interface ValidateTypes {
@@ -17,6 +18,8 @@ public interface ValidateTypes {
 
     void validateCertificateType(CertificateType certificateType, String field, String message, BindingResult bindingResult);
 
+    void validateSex(CensusEntrySex sex, String fieldName, String message, BindingResult bindingResult);
+
     void validateNullOrEmptyString(String string, @SuppressWarnings("SameParameterValue") String field, @SuppressWarnings("SameParameterValue") String message, BindingResult bindingResult);
 
     @SuppressWarnings({"unused", "EmptyMethod"})
@@ -24,4 +27,7 @@ public interface ValidateTypes {
 
     @SuppressWarnings({"unused", "EmptyMethod"})
     void validateNonNegativeInteger(String integerString, String fieldName, @SuppressWarnings("SameParameterValue") String nullMessage, String formatMessage, BindingResult bindingResult);
+
+    @SuppressWarnings("EmptyMethod")
+    void validatePastDateAndTime(@SuppressWarnings("unused") String dateString, @SuppressWarnings("unused") String fieldName, @SuppressWarnings("unused") String nullMessage, @SuppressWarnings("unused") String formatMessage, @SuppressWarnings("unused") String pastMessage, @SuppressWarnings("unused") BindingResult bindingResult);
 }

+ 16 - 4
src/main/java/scot/carricksoftware/grants/validators/helpers/ValidateTypesImpl.java

@@ -10,6 +10,7 @@ import org.springframework.validation.BindingResult;
 import scot.carricksoftware.grants.constants.ApplicationConstants;
 import scot.carricksoftware.grants.domains.people.Person;
 import scot.carricksoftware.grants.domains.places.Organisation;
+import scot.carricksoftware.grants.enums.censusentry.CensusEntrySex;
 import scot.carricksoftware.grants.enums.certificates.CertificateType;
 
 @Component
@@ -17,28 +18,35 @@ public class ValidateTypesImpl implements ValidateTypes {
 
     @Override
     public void validatePerson(Person person, String fieldName, String message, BindingResult bindingResult) {
-        if (person == null ) {
+        if (person == null) {
             bindingResult.rejectValue(fieldName, ApplicationConstants.EMPTY_STRING, null, message);
         }
     }
 
     @Override
     public void validateOrganisation(Organisation organisation, String fieldName, String message, BindingResult bindingResult) {
-        if (organisation == null ) {
+        if (organisation == null) {
             bindingResult.rejectValue(fieldName, ApplicationConstants.EMPTY_STRING, null, message);
         }
     }
 
     @Override
     public void validateCertificateType(CertificateType certificateType, String fieldName, String message, BindingResult bindingResult) {
-        if (certificateType == null ) {
+        if (certificateType == null) {
+            bindingResult.rejectValue(fieldName, ApplicationConstants.EMPTY_STRING, null, message);
+        }
+    }
+
+    @Override
+    public void validateSex(CensusEntrySex sex, String fieldName, String message, BindingResult bindingResult) {
+        if (sex == null) {
             bindingResult.rejectValue(fieldName, ApplicationConstants.EMPTY_STRING, null, message);
         }
     }
 
     @Override
     public void validateNullOrEmptyString(String string, String fieldName, @SuppressWarnings("SameParameterValue") String message, BindingResult bindingResult) {
-        if (string == null||string.isEmpty()) {
+        if (string == null || string.isEmpty()) {
             bindingResult.rejectValue(fieldName, ApplicationConstants.EMPTY_STRING, null, message);
         }
     }
@@ -51,4 +59,8 @@ public class ValidateTypesImpl implements ValidateTypes {
     public void validateNonNegativeInteger(String integerString, String fieldName, @SuppressWarnings("SameParameterValue") String nullMessage, String formatMessage, BindingResult bindingResult) {
     }
 
+    @Override
+    public void validatePastDateAndTime(String dateString, String fieldName, String nullMessage, String formatMessage, String pastMessage, BindingResult bindingResult) {
+    }
+
 }