Browse Source

ValidateTypes

apg 2 weeks ago
parent
commit
159df7e035

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

@@ -37,6 +37,13 @@ public interface ValidateTypes {
                               String nullMessage, String formatMessage, String rangeMessage,
                               BindingResult bindingResult);
 
+    void validateIntegerStaredRange(String integerString,
+                              Integer lowValue,
+                              Integer highValue,
+                              String fieldName, @SuppressWarnings("SameParameterValue")
+                              String nullMessage, String formatMessage, String rangeMessage,
+                              BindingResult bindingResult);
+
     void validateFileType(String fileName,
                           String fieldName,
                           String[] allowedFileExtensions,

+ 20 - 0
src/main/java/scot/carricksoftware/grants/validators/helpers/ValidateTypesImpl.java

@@ -112,6 +112,26 @@ public class ValidateTypesImpl implements ValidateTypes {
         }
     }
 
+    @Override
+    public void validateIntegerStaredRange(String integerString,
+                                           Integer lowValue, Integer highValue, String fieldName,
+                                           String nullMessage, String formatMessage, String rangeMessage,
+                                           BindingResult bindingResult) {
+        if (integerString != null && !integerString.isEmpty()) {
+            int pos = integerString.lastIndexOf('*');
+            if (pos != -1) {
+                String newString = integerString.substring(0, pos);
+                validateIntegerRange(newString, lowValue,highValue,fieldName,nullMessage,formatMessage,rangeMessage,bindingResult);
+            } else {
+                validateIntegerRange(integerString, lowValue,highValue,fieldName,nullMessage,formatMessage,rangeMessage,bindingResult);
+            }
+        } else {
+            bindingResult.rejectValue(fieldName, ApplicationConstants.EMPTY_STRING, null, nullMessage);
+        }
+
+
+    }
+
     @Override
     public void validateFileType(String fileName, String fieldName, String[] allowedFileExtensions, String message, BindingResult bindingResult) {
         String extension = fileName.substring(fileName.lastIndexOf('.') + 1).toUpperCase(Locale.ROOT);

+ 25 - 1
src/main/java/scot/carricksoftware/grants/validators/text/DocumentTextCommandValidatorImpl.java

@@ -10,6 +10,9 @@ import org.apache.logging.log4j.Logger;
 import org.springframework.stereotype.Component;
 import org.springframework.validation.BindingResult;
 import scot.carricksoftware.grants.commands.text.DocumentTextCommand;
+import scot.carricksoftware.grants.constants.ApplicationConstants;
+import scot.carricksoftware.grants.constants.ValidationConstants;
+import scot.carricksoftware.grants.validators.helpers.ValidateTypes;
 
 @SuppressWarnings("unused")
 @Component
@@ -17,10 +20,31 @@ public class DocumentTextCommandValidatorImpl implements DocumentTextCommandVali
 
     private static final Logger logger = LogManager.getLogger(DocumentTextCommandValidatorImpl.class);
 
+    private final ValidateTypes validateTypes;
+
+    public DocumentTextCommandValidatorImpl(ValidateTypes validateTypes) {
+        this.validateTypes = validateTypes;
+    }
+
+
+
     @Override
     public void validate(DocumentTextCommand documentTextCommand, BindingResult bindingResult) {
-      logger.debug("DocumentTextCommandValidator::validate");
+        logger.debug("DocumentTextCommandValidator::validate");
+        validateOrder(documentTextCommand.getOrder(), bindingResult);
+        validateLevel(documentTextCommand.getLevel(), bindingResult);
+    }
+
+    private void validateLevel(String level, BindingResult bindingResult) {
+        logger.debug("PersonTextCommandValidator::validateLevel");
+        validateTypes.validateIntegerRange(level, ApplicationConstants.LATEX_BOOK, ApplicationConstants.LATEX_SUB_PARAGRAPH, "level",
+                ValidationConstants.LEVEL_IS_NULL, ValidationConstants.LEVEL_IS_INVALID, ValidationConstants.LEVEL_IS_OUTSIDE_LIMITS, bindingResult);
+    }
 
+    private void validateOrder(String order, BindingResult bindingResult) {
+        logger.debug("PersonTextCommandValidator::validateOrder");
+        validateTypes.validateNonNegativeInteger(order, "order",ValidationConstants.ORDER_IS_NULL,
+                ValidationConstants.ORDER_IS_INVALID, ValidationConstants.ORDER_IS_NEGATIVE,bindingResult);
     }
 
 

+ 1 - 1
src/test/java/scot/carricksoftware/grants/validators/text/AppendixBaseTextCommandValidatorImplTest.java → src/test/java/scot/carricksoftware/grants/validators/text/AppendixTextCommandValidatorImplTest.java

@@ -19,7 +19,7 @@ import static org.mockito.Mockito.verify;
 import static scot.carricksoftware.grants.GenerateCertificateRandomValues.GetRandomString;
 
 @ExtendWith(MockitoExtension.class)
-class AppendixBaseTextCommandValidatorImplTest {
+class AppendixTextCommandValidatorImplTest {
 
     private AppendixTextCommandValidatorImpl validator;
 

+ 1 - 1
src/test/java/scot/carricksoftware/grants/validators/text/PersonBaseTextCommandValidatorImplTest.java → src/test/java/scot/carricksoftware/grants/validators/text/PersonTextCommandValidatorImplTest.java

@@ -21,7 +21,7 @@ import static scot.carricksoftware.grants.GenerateCertificateRandomValues.GetRan
 import static scot.carricksoftware.grants.GenerateRandomPeopleValues.GetRandomPerson;
 
 @ExtendWith(MockitoExtension.class)
-class PersonBaseTextCommandValidatorImplTest {
+class PersonTextCommandValidatorImplTest {
 
     private PersonTextCommandValidatorImpl validator;