From 672e88ad28289af9418246443a079b118553e8af Mon Sep 17 00:00:00 2001 From: Florian Lambers <fl462057@fh-muenster.de> Date: Tue, 30 Nov 2021 13:14:08 +0100 Subject: [PATCH] added embedded form constraints --- .../bpmn/data/BPMNNumericConstraint.java | 4 ++ .../bpmn/data/BPMNStringConstraint.java | 4 ++ .../BPMNVariableBoundaryScanner.java | 2 +- .../BPMNVariableFormFieldScanner.java | 53 +++++++++++++++++++ .../Testgenerator/utils/BPMNParseUtils.java | 1 + 5 files changed, 63 insertions(+), 1 deletion(-) diff --git a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/bpmn/data/BPMNNumericConstraint.java b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/bpmn/data/BPMNNumericConstraint.java index 3c577aa..9ed98de 100644 --- a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/bpmn/data/BPMNNumericConstraint.java +++ b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/bpmn/data/BPMNNumericConstraint.java @@ -5,6 +5,10 @@ public class BPMNNumericConstraint implements BPMNFieldConstraint { private Long min; private Long max; + public BPMNNumericConstraint() { + + } + public BPMNNumericConstraint(Long min, Long max) { this.min = min; this.max = max; diff --git a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/bpmn/data/BPMNStringConstraint.java b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/bpmn/data/BPMNStringConstraint.java index e839860..9df88fc 100644 --- a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/bpmn/data/BPMNStringConstraint.java +++ b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/bpmn/data/BPMNStringConstraint.java @@ -5,6 +5,10 @@ public class BPMNStringConstraint implements BPMNFieldConstraint { private Long minLength; private Long maxLength; + public BPMNStringConstraint() { + + } + public BPMNStringConstraint(Long minLength, Long maxLength) { this.minLength = minLength; this.maxLength = maxLength; diff --git a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/bpmn/processfragmentation/BPMNVariableBoundaryScanner.java b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/bpmn/processfragmentation/BPMNVariableBoundaryScanner.java index f5f3485..dddc89a 100644 --- a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/bpmn/processfragmentation/BPMNVariableBoundaryScanner.java +++ b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/bpmn/processfragmentation/BPMNVariableBoundaryScanner.java @@ -412,7 +412,7 @@ public class BPMNVariableBoundaryScanner { if (searchGlobalMax != null) { final Long globalMax = searchGlobalMax; - List<Long> boundaryExceedingValues = testdata.getValues().stream().filter(value -> value > globalMax) + List<Long> boundaryExceedingValues = testdata.getValues().stream().filter(value -> value != null).filter(value -> value > globalMax) .collect(Collectors.toList()); boundaryExceedingValues.forEach(v -> testdata.removeValue(v)); diff --git a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/bpmn/processfragmentation/BPMNVariableFormFieldScanner.java b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/bpmn/processfragmentation/BPMNVariableFormFieldScanner.java index 4d4d269..2dd2eb0 100644 --- a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/bpmn/processfragmentation/BPMNVariableFormFieldScanner.java +++ b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/bpmn/processfragmentation/BPMNVariableFormFieldScanner.java @@ -98,11 +98,37 @@ public class BPMNVariableFormFieldScanner { for(Element input : inputs) { String variableName = input.attr(CAMUNDA_VARIABLE_NAME); String variableType = input.attr(CAMUNDA_VARIABLE_TYPE); + Boolean variableRequired = false; + Integer minlength = null; + Integer maxlength = null; + Integer min = null; + Integer max = null; + for(Attribute a : input.attributes()) { if(a.getKey().equals("required")) { variableRequired = true; } + if(a.getKey().equals(CONSTRAINT_MIN_LENGTH)) { + if(a.getValue() != null && !a.getValue().equals("")) { + minlength = Integer.parseInt(a.getValue()); + } + } + if(a.getKey().equals(CONSTRAINT_MAX_LENGTH)) { + if(a.getValue() != null && !a.getValue().equals("")) { + maxlength = Integer.parseInt(a.getValue()); + } + } + if(a.getKey().equals(CONSTRAINT_MIN)) { + if(a.getValue() != null && !a.getValue().equals("")) { + min = Integer.parseInt(a.getValue()); + } + } + if(a.getKey().equals(CONSTRAINT_MAX)) { + if(a.getValue() != null && !a.getValue().equals("")) { + max = Integer.parseInt(a.getValue()); + } + } } System.out.println("Scan Formfield " + variableName + " with type " + variableType + " und required: " + variableRequired); @@ -114,6 +140,33 @@ public class BPMNVariableFormFieldScanner { formFields.addUserTaskVariable(baseElement.getId(), embeddedVariable.getName()); formFields.addVariableEmbedded(variableName, embeddedVariable); + + BPMNBooleanConstraint bc = new BPMNBooleanConstraint(); + bc.setRequired(variableRequired); + formFields.addTaskSpecificConstraint(baseElement.getId(), variableName, bc); + + if(minlength != null || maxlength != null) { + BPMNStringConstraint stringConstraint = new BPMNStringConstraint(); + if(minlength != null) { + stringConstraint.setMinLength(minlength.longValue()); + } + if(maxlength != null) { + stringConstraint.setMaxLength(maxlength.longValue()); + } + + formFields.addVariableConstraints(variableName, stringConstraint); + } + if(min != null || max != null) { + BPMNNumericConstraint numericConstraint = new BPMNNumericConstraint(); + if(min != null) { + numericConstraint.setMin(min.longValue()); + } + if(max != null) { + numericConstraint.setMax(max.longValue()); + } + + formFields.addVariableConstraints(variableName, numericConstraint); + } } } } diff --git a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/utils/BPMNParseUtils.java b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/utils/BPMNParseUtils.java index 1fb2e7b..83f8838 100644 --- a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/utils/BPMNParseUtils.java +++ b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/utils/BPMNParseUtils.java @@ -262,6 +262,7 @@ public class BPMNParseUtils { private static List<Integer> getIntProposals(String variable, BPMNTestdata<? extends Object> variableTestdata) { return variableTestdata.getValues().stream() // + .filter(value -> value != null) .map(value -> ((Long) value).intValue()) // .collect(Collectors.toList()); // } -- GitLab