Sfoglia il codice sorgente

DeathCertificate Validation Usual Residence

Andrew Grant 4 mesi fa
parent
commit
e4c61de61a

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

@@ -15,7 +15,6 @@ public class ValidationConstants {
         // to stop checkstyle complaining
     }
 
-
     public static final String NAME_IS_TOO_SHORT = "Name must be at least " + ApplicationConstants.MINIMUM_NAME_LENGTH + " characters long.";
     public static final String NAME_IS_TOO_LONG = "Name must be no more than " + ApplicationConstants.MAXIMUM_NAME_LENGTH + " characters long.";
     public static final String DATE_IS_NULL = "Date must exist.";
@@ -47,6 +46,7 @@ public class ValidationConstants {
     public static final String FATHER_AND_UNTRACKED_FATHER = "One and only one father and untracked father must be specified.";
     public static final String MOTHER_AND_UNTRACKED_FATHER = "One and only one father and untracked father may be specified.";
     public static final String WHERE_BORN_AND_UNTRACKED_WHERE_BORN = "One and only one where born and untracked where born must be specified.";
+
     public static final String MOTHER_USUAL_RESIDENCE_AND_UNTRACKED_MOTHER_USUAL_RESIDENCE = "Only one usual residence and untracked usual residence may be specified.";
     public static final String FATHER_USUAL_RESIDENCE_AND_UNTRACKED_FATHER_USUAL_RESIDENCE = "Only one usual residence and untracked usual residence must be specified.";
     public static final String BRIDE_IS_NULL = "The bride cannot be null.";
@@ -56,6 +56,10 @@ public class ValidationConstants {
     public static final String WHEN_REGISTERED_DATE_IS_INVALID = "When registered date is invalid.";
     public static final String WHEN_REGISTERED_DATE_IN_FUTURE = "Date should not be in the future.";
 
+
+    public static final String WHERE_DIED_AND_UNTRACKED_WHERE_DIED = "One and only one where died and untracked where died must be specified.";
+    public static final String USUAL_RESIDENCE_AND_UNTRACKED_USUAL_RESIDENCE = "Only one usual residence and untracked usual residence may be specified.";
+
     public static final String FIRST_PARTY_IS_NULL = "The first party cannot be null.";
     public static final String SECOND_PARTY_IS_NULL = "The second party cannot be null.";
     public static final String SAME_TWO_PARTIES = "The two parties cannot be the same person.";

+ 20 - 2
src/main/java/scot/carricksoftware/grants/validators/certificates/deathcertificate/DeathCertificateCommandValidatorImpl.java

@@ -8,6 +8,8 @@ package scot.carricksoftware.grants.validators.certificates.deathcertificate;
 import org.springframework.stereotype.Component;
 import org.springframework.validation.BindingResult;
 import scot.carricksoftware.grants.commands.certificates.deathcertificates.DeathCertificateCommand;
+import scot.carricksoftware.grants.constants.ValidationConstants;
+import scot.carricksoftware.grants.validators.helpers.ValidateTwoFieldTypes;
 
 
 @Component
@@ -15,12 +17,28 @@ public class DeathCertificateCommandValidatorImpl implements DeathCertificateCom
 
     final DeathCertificateNullFieldsValidator deathCertificateNullFieldsValidator;
 
-    public DeathCertificateCommandValidatorImpl(DeathCertificateNullFieldsValidator deathCertificateNullFieldsValidator) {
+    final ValidateTwoFieldTypes validateTwoFieldTypes;
+
+    public DeathCertificateCommandValidatorImpl(DeathCertificateNullFieldsValidator deathCertificateNullFieldsValidator, ValidateTwoFieldTypes validateTwoFieldTypes) {
         this.deathCertificateNullFieldsValidator = deathCertificateNullFieldsValidator;
+        this.validateTwoFieldTypes = validateTwoFieldTypes;
     }
 
+
+    @Override
     public void validate(DeathCertificateCommand deathCertificateCommand, BindingResult bindingResult) {
-        deathCertificateNullFieldsValidator.validate(deathCertificateCommand, bindingResult);
+        validateWhereDied(deathCertificateCommand, bindingResult);
+        validateUsualResidence(deathCertificateCommand, bindingResult);
+    }
+
+    private void validateWhereDied(DeathCertificateCommand deathCertificateCommand, BindingResult bindingResult) {
+        validateTwoFieldTypes.validatePlaceAndUntrackedPlace(deathCertificateCommand.getWhereDied(), deathCertificateCommand.getUntrackedWhereDied(),
+                "whereDied", "untrackedWhereDied", ValidationConstants.WHERE_DIED_AND_UNTRACKED_WHERE_DIED,bindingResult);
+    }
+
+    private void validateUsualResidence(DeathCertificateCommand deathCertificateCommand, BindingResult bindingResult) {
+        validateTwoFieldTypes.validatePlaceAndUntrackedPlace(deathCertificateCommand.getUsualResidence(), deathCertificateCommand.getUntrackedUsualResidence(),
+                "usualResidence", "untrackedUsualResidence", ValidationConstants.USUAL_RESIDENCE_AND_UNTRACKED_USUAL_RESIDENCE,bindingResult);
     }
 
 }

+ 19 - 0
src/main/java/scot/carricksoftware/grants/validators/certificates/deathcertificate/DeathCertificateUntrackedFieldsValidator.java

@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2025.  Andrew Grant Carrick Software. All rights reserved
+ *
+ */
+
+package scot.carricksoftware.grants.validators.certificates.deathcertificate;
+
+
+import org.springframework.validation.BindingResult;
+import scot.carricksoftware.grants.commands.certificates.deathcertificates.DeathCertificateCommand;
+
+public interface DeathCertificateUntrackedFieldsValidator {
+
+    @SuppressWarnings("unused")
+    void validate(DeathCertificateCommand deathCertificateCommand, BindingResult bindingResult);
+
+    void validateUntrackedWhereDied(DeathCertificateCommand deathCertificateCommand, BindingResult bindingResult);
+}
+

+ 42 - 0
src/main/java/scot/carricksoftware/grants/validators/certificates/deathcertificate/DeathCertificateUntrackedFieldsValidatorImpl.java

@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2025.  Andrew Grant Carrick Software. All rights reserved
+ *
+ */
+
+package scot.carricksoftware.grants.validators.certificates.deathcertificate;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.stereotype.Component;
+import org.springframework.validation.BindingResult;
+import scot.carricksoftware.grants.commands.certificates.deathcertificates.DeathCertificateCommand;
+import scot.carricksoftware.grants.constants.ValidationConstants;
+import scot.carricksoftware.grants.validators.helpers.ValidateTwoFieldTypes;
+
+@Component
+public class DeathCertificateUntrackedFieldsValidatorImpl implements DeathCertificateUntrackedFieldsValidator {
+
+    private static final Logger logger = LogManager.getLogger(DeathCertificateUntrackedFieldsValidatorImpl.class);
+
+    private final ValidateTwoFieldTypes validateTwoFieldTypes;
+
+    public DeathCertificateUntrackedFieldsValidatorImpl(ValidateTwoFieldTypes validateTwoFieldTypes) {
+        this.validateTwoFieldTypes = validateTwoFieldTypes;
+    }
+
+    @Override
+    public void validate(DeathCertificateCommand deathCertificateCommand, BindingResult bindingResult) {
+        validateUntrackedWhereDied(deathCertificateCommand, bindingResult);
+    }
+
+    @Override
+    public void validateUntrackedWhereDied(DeathCertificateCommand deathCertificateCommand, BindingResult bindingResult){
+        logger.debug("DeathCertificateUntrackedFieldsValidatorImpl::validateUntrackedWhereDied");
+        validateTwoFieldTypes.validatePlaceAndUntrackedPlace(deathCertificateCommand.getWhereDied(),
+                deathCertificateCommand.getUntrackedWhereDied(),
+                "getWhereDied",
+                "getUntrackedWhereDied",
+                ValidationConstants.WHERE_BORN_AND_UNTRACKED_WHERE_BORN, bindingResult);
+    }
+
+}

+ 2 - 2
src/main/resources/templates/certificates/deathCertificate/form.html

@@ -255,7 +255,7 @@
                     </div>
                 </td>
             </tr>
-            <tr>
+            <tr>DeathCertificateCommand deathCertificateCommand, BindingResult bindingResult
                 <td style="text-align: right;">
                     <label for="whenDied">When Died (dd/mm/yyyy hh:mm) :&nbsp;</label>
                 </td>
@@ -331,7 +331,7 @@
                                th:field="*{untrackedUsualResidence}" type="text">
                         <div th:if="${#fields.hasErrors('untrackedUsualResidence')}">
                             <ul class="text-danger">
-                                <li th:each="err : ${#fields.errors('uFF0000FFntrackedUsualResidence')}"
+                                <li th:each="err : ${#fields.errors('untrackedUsualResidence')}"
                                     th:text="${err}"/>
                             </ul>
                         </div>