Browse Source

PersonImageCommand height and width validation

Andrew Grant 1 month ago
parent
commit
22f3a334a5

+ 9 - 0
src/main/java/scot/carricksoftware/grants/constants/ApplicationConstants.java

@@ -29,4 +29,13 @@ public class ApplicationConstants {
     public static final int LATEX_BOOK = -2;
     public static final int LATEX_SUB_PARAGRAPH = 5;
 
+    private static final int MINIMUM_SIZE = 100;
+    private static final int MAXIMUM_SIZE = 100;
+
+    public static final int MINIMUM_IMAGE_WIDTH = MINIMUM_SIZE;
+    public static final int MAXIMUM_IMAGE_WIDTH = MAXIMUM_SIZE;
+
+    public static final int MINIMUM_IMAGE_HEIGHT = MINIMUM_SIZE;
+    public static final int MAXIMUM_IMAGE_HEIGHT = MAXIMUM_SIZE;
+
 }

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

@@ -53,6 +53,13 @@ public class ValidationConstants {
     public static final String GROOM_CONDITION_IS_NULL = "The groom condition cannot be null.";
     public static final String GROOM_FATHER_AND_UNTRACKED_FATHER = "One and only one groom father and untracked groom father may be specified.";
     public static final String GROOM_USUAL_RESIDENCE_AND_UNTRACKED_USUAL_RESIDENCE = "One and only one groom residence and untracked groom residence may be specified.";
+
+    public static final String HEIGHT_IS_NOT_AN_INTEGER = "Height must be an integer.";
+    public static final String HEIGHT_IS_NULL = "Height cannot be null.";
+    public static final String HEIGHT_OUTSIDE_RANGE = "Height must be between "
+            + ApplicationConstants.MINIMUM_IMAGE_HEIGHT
+            + " and "
+            + ApplicationConstants.MAXIMUM_IMAGE_HEIGHT;
     public static final String IMAGE_DATA_IS_NULL = "The file to upload cannot be null.";
     public static final String IMAGE_IS_NULL = "The image cannot be null.";
     public static final String INFORMANT_QUALIFICATION_IS_NULL = "The informant qualification cannot be null.";
@@ -105,6 +112,12 @@ public class ValidationConstants {
     public static final String WHERE_BORN_IS_NULL = "Where born cannot be null.";
     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 WHERE_MARRIED_AND_UNTRACKED_WHERE_MARRIED = "One and only one where married and untracked where married must be specified.";
+    public static final String WIDTH_IS_NOT_AN_INTEGER = "Width must be an integer.";
+    public static final String WIDTH_IS_NULL = "Width cannot be null.";
+    public static final String WIDTH_OUTSIDE_RANGE = "Width must be between "
+            + ApplicationConstants.MINIMUM_IMAGE_WIDTH
+            + " and "
+            + ApplicationConstants.MAXIMUM_IMAGE_WIDTH;
     public static final String WITNESS_AND_UNTRACKED_FIRST_WITNESS = "One and only one first witness and untracked first witness may be specified.";
     public static final String WITNESS_AND_UNTRACKED_SECOND_WITNESS = "One and only one second witness and untracked second witness may be specified.";
 

+ 30 - 0
src/main/java/scot/carricksoftware/grants/validators/images/PersonImageCommandValidatorImpl.java

@@ -10,6 +10,7 @@ import org.apache.logging.log4j.Logger;
 import org.springframework.stereotype.Component;
 import org.springframework.validation.BindingResult;
 import scot.carricksoftware.grants.commands.images.PersonImageCommand;
+import scot.carricksoftware.grants.constants.ApplicationConstants;
 import scot.carricksoftware.grants.constants.ValidationConstants;
 import scot.carricksoftware.grants.validators.helpers.ValidateTypes;
 
@@ -32,8 +33,36 @@ public class PersonImageCommandValidatorImpl implements PersonImageCommandValida
         validateImage(imageCommand, bindingResult);
         validateOrder(imageCommand, bindingResult);
         validateLevel(imageCommand, bindingResult);
+        validateWidth(imageCommand, bindingResult);
+        validateHeight(imageCommand, bindingResult);
     }
 
+    private void validateWidth(PersonImageCommand imageCommand, BindingResult bindingResult) {
+        logger.debug("ImageCommandValidator::validateWidth");
+        validateTypes.validateIntegerRange(imageCommand.getWidth(),
+                ApplicationConstants.MINIMUM_IMAGE_WIDTH,
+                ApplicationConstants.MAXIMUM_IMAGE_WIDTH,
+                "width",
+                ValidationConstants.WIDTH_IS_NULL,
+                ValidationConstants.WIDTH_IS_NOT_AN_INTEGER,
+                ValidationConstants.WIDTH_OUTSIDE_RANGE,
+                bindingResult);
+    }
+
+    private void validateHeight(PersonImageCommand imageCommand, BindingResult bindingResult) {
+        logger.debug("ImageCommandValidator::validateHeight");
+        validateTypes.validateIntegerRange(imageCommand.getHeight(),
+                ApplicationConstants.MINIMUM_IMAGE_HEIGHT,
+                ApplicationConstants.MAXIMUM_IMAGE_HEIGHT,
+                "height",
+                ValidationConstants.HEIGHT_IS_NULL,
+                ValidationConstants.HEIGHT_IS_NOT_AN_INTEGER,
+                ValidationConstants.HEIGHT_OUTSIDE_RANGE,
+                bindingResult);
+
+    }
+
+
     private void validateOrder(PersonImageCommand imageCommand, BindingResult bindingResult) {
         logger.debug("ImageCommandValidator::validateOrder");
         validateTypes.validateNonNegativeInteger(imageCommand.getOrder(), "order",
@@ -43,6 +72,7 @@ public class PersonImageCommandValidatorImpl implements PersonImageCommandValida
                 bindingResult);
     }
 
+
     private void validateLevel(PersonImageCommand imageCommand, BindingResult bindingResult) {
         logger.debug("ImageCommandValidator::validateLevel");
         validateTypes.validateNonNegativeInteger(imageCommand.getLevel(), "level",