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 3c577aa69d67de30b205f5e4ab06aef44fa1745a..9ed98de4140ec4a0bcb19f0f8b32c6e2de53593b 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 e839860339e6f3b9d31fe9817b22f106aafcfdbb..9df88fc62daeb729454097d869b80dcd62b1b908 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 f5f3485e2beaac35684ccaeaaa21d7e77b93bd2a..dddc89ad8a630b449d5fe3b0b42a884c9deeee91 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 4d4d269e7d4f00273565277090fa1e7b7933c552..2dd2eb0b5cdac2fb207f8c0df0ea2a57ff6398cd 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 1fb2e7bee62a83a9472dfb5c3d71dff504b33d4d..83f8838ea3ac1666aa36d6c5bee14ce278e2ae52 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()); // }