From a67ddb57cc5fa0a7a0ae03c4bb5703966168ed4e Mon Sep 17 00:00:00 2001 From: Jonas Blatt <jonasblatt@uni-koblenz.de> Date: Wed, 11 Sep 2019 00:38:50 +0200 Subject: [PATCH] New logic for verifier instantiation --- dmnverifierapi/pom.xml | 6 ++ .../fgbks/api/test/GreetingResource.java | 2 +- .../de/unikoblenz/fgbks/api/test/TestApi.java | 2 +- .../fgbks/core/dmn/domain/Description.java | 19 +++++ .../fgbks/core/dmn/domain/Message.java | 4 + .../fgbks/core/{test => dmn/domain}/Name.java | 10 ++- .../fgbks/core/dmn/domain/id/AbstractId.java | 4 + .../fgbks/core/dmn/domain/id/DecisionId.java | 4 + .../core/dmn/domain/id/DecisionTableId.java | 4 + .../core/dmn/domain/id/InputEntryId.java | 4 + .../core/dmn/domain/id/InputExpressionId.java | 4 + .../fgbks/core/dmn/domain/id/InputId.java | 4 + .../core/dmn/domain/id/OutputEntryId.java | 4 + .../fgbks/core/dmn/domain/id/OutputId.java | 4 + .../fgbks/core/dmn/domain/id/RuleId.java | 4 + .../verfication/VerificationGenerator.java | 46 ----------- .../dmn/verfication/VerificationType.java | 41 ---------- .../VerificationTypeClassification.java | 36 --------- .../verification/VerificationGenerator.java | 80 +++++++++++++++++++ .../result/AbstractResultObject.java | 2 +- .../result/VerificationResultEntry.java | 6 +- .../VerificationResultEntryElement.java | 4 +- .../VerificationResultEntryFactory.java | 8 +- .../result/VerifierResult.java | 21 +---- .../result/VerifierResultSet.java | 2 +- .../verifier/AbstractVerifier.java | 29 +++++-- .../verification/verifier/DmnVerifier.java | 19 +++++ .../verifier/SampleVerifier.java | 18 ++--- .../verifier/Verifier.java | 4 +- .../config/AbstractVerificationConfig.java | 22 +++++ .../verifier/config/DefaultConfiguration.java | 24 ++++++ .../config/DmnVerifierConfigProperty.java | 6 ++ .../types/AbstractVerificationType.java | 3 + .../IdenticalBusinessRuleVerification.java | 24 ++++++ .../verifier/types/VerificationType.java | 22 +++++ .../types/VerificationTypeClassification.java | 25 ++++++ .../de/unikoblenz/fgbks/core/test/Person.java | 1 + 37 files changed, 347 insertions(+), 175 deletions(-) create mode 100644 dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/Description.java rename dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/{test => dmn/domain}/Name.java (51%) delete mode 100644 dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/VerificationGenerator.java delete mode 100644 dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/VerificationType.java delete mode 100644 dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/VerificationTypeClassification.java create mode 100644 dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/VerificationGenerator.java rename dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/{verfication => verification}/result/AbstractResultObject.java (92%) rename dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/{verfication => verification}/result/VerificationResultEntry.java (93%) rename dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/{verfication => verification}/result/VerificationResultEntryElement.java (93%) rename dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/{verfication => verification}/result/VerificationResultEntryFactory.java (86%) rename dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/{verfication => verification}/result/VerifierResult.java (73%) rename dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/{verfication => verification}/result/VerifierResultSet.java (95%) rename dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/{verfication => verification}/verifier/AbstractVerifier.java (52%) create mode 100644 dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/DmnVerifier.java rename dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/{verfication => verification}/verifier/SampleVerifier.java (58%) rename dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/{verfication => verification}/verifier/Verifier.java (56%) create mode 100644 dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/config/AbstractVerificationConfig.java create mode 100644 dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/config/DefaultConfiguration.java create mode 100644 dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/config/DmnVerifierConfigProperty.java create mode 100644 dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/AbstractVerificationType.java create mode 100644 dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/IdenticalBusinessRuleVerification.java create mode 100644 dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/VerificationType.java create mode 100644 dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/VerificationTypeClassification.java diff --git a/dmnverifierapi/pom.xml b/dmnverifierapi/pom.xml index 769aebc4..a484ccd6 100644 --- a/dmnverifierapi/pom.xml +++ b/dmnverifierapi/pom.xml @@ -43,6 +43,12 @@ <artifactId>commons-lang3</artifactId> <version>3.7</version> </dependency> + + <dependency> + <groupId>org.reflections</groupId> + <artifactId>reflections</artifactId> + <version>0.9.11</version> + </dependency> </dependencies> <build> diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/api/test/GreetingResource.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/api/test/GreetingResource.java index 1a16a2bb..543c2012 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/api/test/GreetingResource.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/api/test/GreetingResource.java @@ -1,6 +1,6 @@ package de.unikoblenz.fgbks.api.test; -import de.unikoblenz.fgbks.core.test.Name; +import de.unikoblenz.fgbks.core.dmn.domain.Name; import de.unikoblenz.fgbks.core.test.Person; import de.unikoblenz.fgbks.core.test.Synonyms; import javax.inject.Inject; diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/api/test/TestApi.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/api/test/TestApi.java index da063f0e..046edef6 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/api/test/TestApi.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/api/test/TestApi.java @@ -1,6 +1,6 @@ package de.unikoblenz.fgbks.api.test; -import de.unikoblenz.fgbks.core.dmn.verfication.VerificationGenerator; +import de.unikoblenz.fgbks.core.dmn.verification.VerificationGenerator; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/Description.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/Description.java new file mode 100644 index 00000000..db6a82fe --- /dev/null +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/Description.java @@ -0,0 +1,19 @@ +package de.unikoblenz.fgbks.core.dmn.domain; + +import de.unikoblenz.fgbks.base.value.AbstractStringValueObject; + +public class Description extends AbstractStringValueObject { + + public Description(Description initialValue) { + this(initialValue.getValue()); + } + + public Description(String initialValue) { + super(initialValue); + } + + @Override + protected Integer getMaxLength() { + return 1000; + } +} diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/Message.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/Message.java index b7ed52c9..c61a0d2a 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/Message.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/Message.java @@ -4,6 +4,10 @@ import de.unikoblenz.fgbks.base.value.AbstractStringValueObject; public class Message extends AbstractStringValueObject { + public Message(Message initialValue) { + this(initialValue.getValue()); + } + public Message(String initialValue) { super(initialValue); } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/test/Name.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/Name.java similarity index 51% rename from dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/test/Name.java rename to dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/Name.java index c29555f1..b862df3c 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/test/Name.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/Name.java @@ -1,11 +1,15 @@ -package de.unikoblenz.fgbks.core.test; +package de.unikoblenz.fgbks.core.dmn.domain; import de.unikoblenz.fgbks.base.value.AbstractStringValueObject; public class Name extends AbstractStringValueObject { - public Name(String name) { - super(name); + public Name(Name initialValue) { + this(initialValue.getValue()); + } + + public Name(String initialValue) { + super(initialValue); } @Override diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/AbstractId.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/AbstractId.java index e57aadf9..7653de66 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/AbstractId.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/AbstractId.java @@ -4,6 +4,10 @@ import de.unikoblenz.fgbks.base.value.AbstractStringValueObject; public abstract class AbstractId extends AbstractStringValueObject { + public AbstractId(AbstractId initialValue) { + this(initialValue.getValue()); + } + public AbstractId(String initialValue) { super(initialValue); } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/DecisionId.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/DecisionId.java index 6a95016f..5bd6e82f 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/DecisionId.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/DecisionId.java @@ -2,6 +2,10 @@ package de.unikoblenz.fgbks.core.dmn.domain.id; public class DecisionId extends AbstractId { + public DecisionId(DecisionId initialValue) { + this(initialValue.getValue()); + } + public DecisionId(String initialValue) { super(initialValue); } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/DecisionTableId.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/DecisionTableId.java index 87292a93..99260d60 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/DecisionTableId.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/DecisionTableId.java @@ -3,6 +3,10 @@ package de.unikoblenz.fgbks.core.dmn.domain.id; @JsonIdentifier("decisionTableId") public class DecisionTableId extends AbstractId { + public DecisionTableId(DecisionTableId initialValue) { + this(initialValue.getValue()); + } + public DecisionTableId(String initialValue) { super(initialValue); } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/InputEntryId.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/InputEntryId.java index 9c1d594c..eaea5c1a 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/InputEntryId.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/InputEntryId.java @@ -3,6 +3,10 @@ package de.unikoblenz.fgbks.core.dmn.domain.id; @JsonIdentifier("inputEntryId") public class InputEntryId extends AbstractId { + public InputEntryId(InputEntryId initialValue) { + this(initialValue.getValue()); + } + public InputEntryId(String initialValue) { super(initialValue); } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/InputExpressionId.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/InputExpressionId.java index b3966606..a42b31e4 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/InputExpressionId.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/InputExpressionId.java @@ -3,6 +3,10 @@ package de.unikoblenz.fgbks.core.dmn.domain.id; @JsonIdentifier("inputExpressionId") public class InputExpressionId extends AbstractId { + public InputExpressionId(InputExpressionId initialValue) { + this(initialValue.getValue()); + } + public InputExpressionId(String initialValue) { super(initialValue); } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/InputId.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/InputId.java index 91f65868..15b248d4 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/InputId.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/InputId.java @@ -3,6 +3,10 @@ package de.unikoblenz.fgbks.core.dmn.domain.id; @JsonIdentifier("inputId") public class InputId extends AbstractId { + public InputId(InputId initialValue) { + this(initialValue.getValue()); + } + public InputId(String initialValue) { super(initialValue); } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/OutputEntryId.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/OutputEntryId.java index 853d5ce2..dc078793 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/OutputEntryId.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/OutputEntryId.java @@ -3,6 +3,10 @@ package de.unikoblenz.fgbks.core.dmn.domain.id; @JsonIdentifier("outputEntryId") public class OutputEntryId extends AbstractId { + public OutputEntryId(OutputEntryId initialValue) { + this(initialValue.getValue()); + } + public OutputEntryId(String initialValue) { super(initialValue); } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/OutputId.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/OutputId.java index 201b43b2..5a7da454 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/OutputId.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/OutputId.java @@ -3,6 +3,10 @@ package de.unikoblenz.fgbks.core.dmn.domain.id; @JsonIdentifier("OutputId") public class OutputId extends AbstractId { + public OutputId(OutputId initialValue) { + super(initialValue.getValue()); + } + public OutputId(String initialValue) { super(initialValue); } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/RuleId.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/RuleId.java index b38220e9..e95876ac 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/RuleId.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/RuleId.java @@ -3,6 +3,10 @@ package de.unikoblenz.fgbks.core.dmn.domain.id; @JsonIdentifier("ruleId") public class RuleId extends AbstractId { + public RuleId(RuleId initialValue) { + this(initialValue.getValue()); + } + public RuleId(String initialValue) { super(initialValue); } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/VerificationGenerator.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/VerificationGenerator.java deleted file mode 100644 index e85edb31..00000000 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/VerificationGenerator.java +++ /dev/null @@ -1,46 +0,0 @@ -package de.unikoblenz.fgbks.core.dmn.verfication; - -import de.unikoblenz.fgbks.core.dmn.verfication.result.VerifierResult; -import de.unikoblenz.fgbks.core.dmn.verfication.result.VerifierResultSet; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.Future; -import org.eclipse.microprofile.config.Config; -import org.eclipse.microprofile.config.ConfigProvider; - -public class VerificationGenerator { - - public static final String CONF_VERIFIER_THREADS = "verifier.threads"; - - public static VerifierResultSet generate() { - - Config config = ConfigProvider.getConfig(); - Integer maxThreads = config.getOptionalValue(CONF_VERIFIER_THREADS, Integer.class).orElse(1); - - ExecutorService executor = Executors.newFixedThreadPool(maxThreads); - - VerifierResultSet.Builder resultBuilder = VerifierResultSet.getBuilder(); - - List<Future<VerifierResult>> results = new ArrayList<>(VerificationType.values().length); - System.out.println("Starting calculation with " + maxThreads + " threads."); - for (VerificationType vType : VerificationType.values()) { - results.add(vType.createNewInstance().verify(executor)); - } - - results.forEach( - r -> { - try { - resultBuilder.addVerifierResult(r.get()); - } catch (InterruptedException e) { - e.printStackTrace(); - } catch (ExecutionException e) { - e.printStackTrace(); - } - }); - - return resultBuilder.build(); - } -} diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/VerificationType.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/VerificationType.java deleted file mode 100644 index f65aa5bd..00000000 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/VerificationType.java +++ /dev/null @@ -1,41 +0,0 @@ -package de.unikoblenz.fgbks.core.dmn.verfication; - -import static de.unikoblenz.fgbks.core.dmn.verfication.VerificationTypeClassification.DECISION_LOGIC_LEVEL_VERIFICATION; - -import de.unikoblenz.fgbks.core.dmn.verfication.verifier.AbstractVerifier; -import de.unikoblenz.fgbks.core.dmn.verfication.verifier.SampleVerifier; -import java.io.Serializable; -import javax.json.bind.annotation.JsonbProperty; -import org.apache.commons.lang3.Validate; - -public enum VerificationType implements Serializable { - IDENTICAL_BUSINESS_RULE_VERIFICATION( - DECISION_LOGIC_LEVEL_VERIFICATION, "Identical Business Rules"); - - private VerificationTypeClassification classification; - private String name; - private String description; - private Class<? extends AbstractVerifier> verifierClass; - - @JsonbProperty("classification") - public VerificationTypeClassification getClassification() { - return classification; - } - - public String getName() { - return name; - } - - public String getDescription() { - return description; - } - - public AbstractVerifier createNewInstance() { - return new SampleVerifier(); - } - - VerificationType(VerificationTypeClassification classification, String name) { - this.classification = Validate.notNull(classification); - this.name = Validate.notBlank(name); - } -} diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/VerificationTypeClassification.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/VerificationTypeClassification.java deleted file mode 100644 index 7eaf523f..00000000 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/VerificationTypeClassification.java +++ /dev/null @@ -1,36 +0,0 @@ -package de.unikoblenz.fgbks.core.dmn.verfication; - -import java.io.Serializable; -import java.util.Arrays; -import java.util.HashSet; -import java.util.Set; - -public enum VerificationTypeClassification implements Serializable { - DECISION_LOGIC_LEVEL_VERIFICATION( - "Decision Logic Verification", - "", - new HashSet<>(Arrays.asList(VerificationType.IDENTICAL_BUSINESS_RULE_VERIFICATION))); - - private String name; - private String description; - private Set<VerificationType> verificationTypes; - - public String getName() { - return name; - } - - public String getDescription() { - return description; - } - - public Set<VerificationType> getVerificationTypes() { - return new HashSet<>(verificationTypes); - } - - VerificationTypeClassification( - String name, String description, Set<VerificationType> verificationTypes) { - this.name = name; - this.description = description; - this.verificationTypes = verificationTypes; - } -} diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/VerificationGenerator.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/VerificationGenerator.java new file mode 100644 index 00000000..0d1a66f8 --- /dev/null +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/VerificationGenerator.java @@ -0,0 +1,80 @@ +package de.unikoblenz.fgbks.core.dmn.verification; + +import de.unikoblenz.fgbks.core.dmn.verification.result.VerifierResult; +import de.unikoblenz.fgbks.core.dmn.verification.result.VerifierResultSet; +import de.unikoblenz.fgbks.core.dmn.verification.result.VerifierResultSet.Builder; +import de.unikoblenz.fgbks.core.dmn.verification.verifier.AbstractVerifier; +import de.unikoblenz.fgbks.core.dmn.verification.verifier.DmnVerifier; +import de.unikoblenz.fgbks.core.dmn.verification.verifier.config.AbstractVerificationConfig; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import org.eclipse.microprofile.config.Config; +import org.eclipse.microprofile.config.ConfigProvider; +import org.reflections.Reflections; + +public class VerificationGenerator { + + public static final String CONF_VERIFIER_THREADS = "verifier.threads"; + public static final String DEFAULT_PACKAGE = "de.unikoblenz.fgbks.core.dmn.verification.verifier"; + public static final Integer DEFAULT_MAX_THREADS = 1; + + public static VerifierResultSet generate() { + return generate(DEFAULT_PACKAGE, DEFAULT_MAX_THREADS); + } + + public static VerifierResultSet generate(String packagePath, Integer maxThreads) { + + Config config = ConfigProvider.getConfig(); + maxThreads = config.getOptionalValue(CONF_VERIFIER_THREADS, Integer.class).orElse(maxThreads); + + ExecutorService executor = Executors.newFixedThreadPool(maxThreads); + + Builder resultBuilder = VerifierResultSet.getBuilder(); + + List<Future<VerifierResult>> results = new ArrayList<>(10); + System.out.println("Starting calculation with " + maxThreads + " threads."); + + Reflections reflections = new Reflections(packagePath); + Set<Class<?>> verifierClasses = reflections.getTypesAnnotatedWith(DmnVerifier.class); + + for (Class<?> verifierClass : verifierClasses) { + AbstractVerifier av = null; + try { + av = (AbstractVerifier) verifierClass.newInstance(); + } catch (InstantiationException | IllegalAccessException e) { + e.printStackTrace(); + } + if (av != null) { + // Create Configuration + AbstractVerificationConfig vConfig = null; + try { + vConfig = + av.getClass() + .getAnnotation(DmnVerifier.class) + .verifierVerificationConfigClass() + .newInstance(); + } catch (InstantiationException | IllegalAccessException ignored) { + } + results.add(av.withConfiguration(vConfig).verify(executor)); + } + } + + results.forEach( + r -> { + try { + resultBuilder.addVerifierResult(r.get()); + } catch (InterruptedException e) { + e.printStackTrace(); + } catch (ExecutionException e) { + e.printStackTrace(); + } + }); + + return resultBuilder.build(); + } +} diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/AbstractResultObject.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/AbstractResultObject.java similarity index 92% rename from dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/AbstractResultObject.java rename to dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/AbstractResultObject.java index 755889a6..9a195561 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/AbstractResultObject.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/AbstractResultObject.java @@ -1,4 +1,4 @@ -package de.unikoblenz.fgbks.core.dmn.verfication.result; +package de.unikoblenz.fgbks.core.dmn.verification.result; import de.unikoblenz.fgbks.base.utils.UniqueIdGenerator; import java.io.Serializable; diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/VerificationResultEntry.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/VerificationResultEntry.java similarity index 93% rename from dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/VerificationResultEntry.java rename to dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/VerificationResultEntry.java index 029dd51e..6662f4d3 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/VerificationResultEntry.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/VerificationResultEntry.java @@ -1,4 +1,4 @@ -package de.unikoblenz.fgbks.core.dmn.verfication.result; +package de.unikoblenz.fgbks.core.dmn.verification.result; import de.unikoblenz.fgbks.base.builder.DefaultBuilder; import de.unikoblenz.fgbks.core.dmn.domain.Message; @@ -42,7 +42,7 @@ public class VerificationResultEntry extends AbstractResultObject { @JsonbProperty("message") public Message getMessage() { - return new Message(message.getValue()); + return new Message(message); } private void addVerificationResultEntry( @@ -63,7 +63,7 @@ public class VerificationResultEntry extends AbstractResultObject { } public Builder withMessage(Message message) { - value.message = new Message(message.getValue()); + value.message = new Message(message); return this; } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/VerificationResultEntryElement.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/VerificationResultEntryElement.java similarity index 93% rename from dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/VerificationResultEntryElement.java rename to dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/VerificationResultEntryElement.java index 032ce6df..f55b115c 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/VerificationResultEntryElement.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/VerificationResultEntryElement.java @@ -1,4 +1,4 @@ -package de.unikoblenz.fgbks.core.dmn.verfication.result; +package de.unikoblenz.fgbks.core.dmn.verification.result; import de.unikoblenz.fgbks.core.dmn.domain.id.AbstractId; import de.unikoblenz.fgbks.core.dmn.domain.id.JsonIdentifier; @@ -13,7 +13,7 @@ public class VerificationResultEntryElement extends AbstractResultObject { private final Map<String, AbstractId> identifier; @JsonbProperty("identifier") - public Map<String, Object> getIdentifier() { + public Map<String, AbstractId> getIdentifier() { return new HashMap<>(identifier); } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/VerificationResultEntryFactory.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/VerificationResultEntryFactory.java similarity index 86% rename from dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/VerificationResultEntryFactory.java rename to dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/VerificationResultEntryFactory.java index bc651b98..5bba3ac6 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/VerificationResultEntryFactory.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/VerificationResultEntryFactory.java @@ -1,8 +1,8 @@ -package de.unikoblenz.fgbks.core.dmn.verfication.result; +package de.unikoblenz.fgbks.core.dmn.verification.result; import de.unikoblenz.fgbks.core.dmn.domain.Message; -import de.unikoblenz.fgbks.core.dmn.verfication.result.VerificationResultEntry.VerificationClassification; -import de.unikoblenz.fgbks.core.dmn.verfication.result.VerifierResult.Builder; +import de.unikoblenz.fgbks.core.dmn.verification.result.VerificationResultEntry.VerificationClassification; +import de.unikoblenz.fgbks.core.dmn.verification.result.VerifierResult.Builder; import org.apache.commons.lang3.Validate; public class VerificationResultEntryFactory { @@ -46,7 +46,7 @@ public class VerificationResultEntryFactory { verificationResultEntryBuilder, "First call \"addElement\" in VerificationResultEntryFactory before calling \"addToEntry\""); verificationResultEntryBuilder.withClassification(verificationClassification); - verificationResultEntryBuilder.withMessage(message); + verificationResultEntryBuilder.withMessage(new Message(message)); verifierResultBuilder.addVerificationResultEntry(verificationResultEntryBuilder.build()); verificationResultEntryBuilder = null; } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/VerifierResult.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/VerifierResult.java similarity index 73% rename from dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/VerifierResult.java rename to dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/VerifierResult.java index 61fc946d..14c336d2 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/VerifierResult.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/VerifierResult.java @@ -1,8 +1,8 @@ -package de.unikoblenz.fgbks.core.dmn.verfication.result; +package de.unikoblenz.fgbks.core.dmn.verification.result; import de.unikoblenz.fgbks.base.builder.DefaultBuilder; -import de.unikoblenz.fgbks.core.dmn.verfication.VerificationType; -import de.unikoblenz.fgbks.core.dmn.verfication.verifier.AbstractVerifier; +import de.unikoblenz.fgbks.core.dmn.verification.verifier.AbstractVerifier; +import de.unikoblenz.fgbks.core.dmn.verification.verifier.types.VerificationType; import java.util.HashSet; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; @@ -23,21 +23,6 @@ public class VerifierResult extends AbstractResultObject { return verificationType; } - @JsonbProperty("type_name") - public String getVerificationTypeName() { - return verificationType.getName(); - } - - @JsonbProperty("type_description") - public String getVerificationTypeDescription() { - return verificationType.getDescription(); - } - - @JsonbProperty("type_classification") - public String getVerificationTypeClassification() { - return verificationType.getClassification().getName(); - } - @JsonbProperty("entries") public Set<VerificationResultEntry> getVerificationResultEntries() { return new HashSet<>(verificationResultEntries); diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/VerifierResultSet.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/VerifierResultSet.java similarity index 95% rename from dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/VerifierResultSet.java rename to dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/VerifierResultSet.java index 7d949525..52ccf5d5 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/VerifierResultSet.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/VerifierResultSet.java @@ -1,4 +1,4 @@ -package de.unikoblenz.fgbks.core.dmn.verfication.result; +package de.unikoblenz.fgbks.core.dmn.verification.result; import de.unikoblenz.fgbks.base.builder.DefaultBuilder; import java.util.HashSet; diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/verifier/AbstractVerifier.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/AbstractVerifier.java similarity index 52% rename from dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/verifier/AbstractVerifier.java rename to dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/AbstractVerifier.java index f88b1d2e..365401bb 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/verifier/AbstractVerifier.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/AbstractVerifier.java @@ -1,16 +1,19 @@ -package de.unikoblenz.fgbks.core.dmn.verfication.verifier; +package de.unikoblenz.fgbks.core.dmn.verification.verifier; -import de.unikoblenz.fgbks.core.dmn.verfication.VerificationType; -import de.unikoblenz.fgbks.core.dmn.verfication.result.VerificationResultEntryFactory; -import de.unikoblenz.fgbks.core.dmn.verfication.result.VerifierResult; +import de.unikoblenz.fgbks.core.dmn.verification.result.VerificationResultEntryFactory; +import de.unikoblenz.fgbks.core.dmn.verification.result.VerifierResult; +import de.unikoblenz.fgbks.core.dmn.verification.verifier.config.AbstractVerificationConfig; +import de.unikoblenz.fgbks.core.dmn.verification.verifier.types.VerificationType; import java.util.Objects; import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Future; +import org.apache.commons.lang3.Validate; public abstract class AbstractVerifier implements Verifier { protected VerificationType verificationType; + protected AbstractVerificationConfig verificationConfig; private VerifierResult.Builder resultBuilder; protected VerificationResultEntryFactory vref; @@ -18,17 +21,29 @@ public abstract class AbstractVerifier implements Verifier { return verificationType; } - public AbstractVerifier(VerificationType verificationType) { - this.verificationType = verificationType; + public final AbstractVerifier withConfiguration(AbstractVerificationConfig configuration) { + this.verificationConfig = Validate.notNull(configuration); + return this; + } + + protected AbstractVerifier() { + try { + this.verificationType = + this.getClass().getAnnotation(DmnVerifier.class).verifierTypeClass().newInstance(); + } catch (InstantiationException | IllegalAccessException e) { + e.printStackTrace(); + } resultBuilder = VerifierResult.getBuilder().fromVerifier(this); vref = VerificationResultEntryFactory.create(resultBuilder); } public final Future<VerifierResult> verify(ExecutorService executor) { + Validate.notNull(verificationConfig, "Validation config has to been set."); + Validate.notNull(executor); return executor.submit((Callable<VerifierResult>) this::verify); } - public final VerifierResult verify() { + private VerifierResult verify() { doVerification(); return resultBuilder.build(); } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/DmnVerifier.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/DmnVerifier.java new file mode 100644 index 00000000..a0a901fd --- /dev/null +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/DmnVerifier.java @@ -0,0 +1,19 @@ +package de.unikoblenz.fgbks.core.dmn.verification.verifier; + +import de.unikoblenz.fgbks.core.dmn.verification.verifier.config.AbstractVerificationConfig; +import de.unikoblenz.fgbks.core.dmn.verification.verifier.config.DefaultConfiguration; +import de.unikoblenz.fgbks.core.dmn.verification.verifier.types.VerificationType; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface DmnVerifier { + + Class<? extends VerificationType> verifierTypeClass(); + + Class<? extends AbstractVerificationConfig> verifierVerificationConfigClass() default + DefaultConfiguration.class; +} diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/verifier/SampleVerifier.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/SampleVerifier.java similarity index 58% rename from dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/verifier/SampleVerifier.java rename to dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/SampleVerifier.java index 0edc2e93..c6104e2d 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/verifier/SampleVerifier.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/SampleVerifier.java @@ -1,19 +1,19 @@ -package de.unikoblenz.fgbks.core.dmn.verfication.verifier; +package de.unikoblenz.fgbks.core.dmn.verification.verifier; -import static de.unikoblenz.fgbks.core.dmn.verfication.VerificationType.IDENTICAL_BUSINESS_RULE_VERIFICATION; -import static de.unikoblenz.fgbks.core.dmn.verfication.result.VerificationResultEntry.VerificationClassification.*; +import static de.unikoblenz.fgbks.core.dmn.verification.result.VerificationResultEntry.VerificationClassification.*; import de.unikoblenz.fgbks.core.dmn.domain.id.InputEntryId; import de.unikoblenz.fgbks.core.dmn.domain.id.OutputEntryId; import de.unikoblenz.fgbks.core.dmn.domain.id.RuleId; -import de.unikoblenz.fgbks.core.dmn.verfication.result.VerificationResultEntryElement; +import de.unikoblenz.fgbks.core.dmn.verification.result.VerificationResultEntryElement; +import de.unikoblenz.fgbks.core.dmn.verification.verifier.config.DefaultConfiguration; +import de.unikoblenz.fgbks.core.dmn.verification.verifier.types.IdenticalBusinessRuleVerification; +@DmnVerifier( + verifierTypeClass = IdenticalBusinessRuleVerification.class, + verifierVerificationConfigClass = DefaultConfiguration.class) public class SampleVerifier extends AbstractVerifier { - public SampleVerifier() { - super(IDENTICAL_BUSINESS_RULE_VERIFICATION); - } - @Override protected void doVerification() { vref.addElement( @@ -28,7 +28,7 @@ public class SampleVerifier extends AbstractVerifier { .withIdentifier(new RuleId("asdasd"))); vref.addToEntry(ERROR, "My sample message"); try { - Thread.sleep(1500); + Thread.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/verifier/Verifier.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/Verifier.java similarity index 56% rename from dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/verifier/Verifier.java rename to dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/Verifier.java index dbc438c8..695ab043 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/verifier/Verifier.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/Verifier.java @@ -1,6 +1,6 @@ -package de.unikoblenz.fgbks.core.dmn.verfication.verifier; +package de.unikoblenz.fgbks.core.dmn.verification.verifier; -import de.unikoblenz.fgbks.core.dmn.verfication.result.VerifierResult; +import de.unikoblenz.fgbks.core.dmn.verification.result.VerifierResult; import java.util.concurrent.ExecutorService; import java.util.concurrent.Future; diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/config/AbstractVerificationConfig.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/config/AbstractVerificationConfig.java new file mode 100644 index 00000000..eb1eb0c8 --- /dev/null +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/config/AbstractVerificationConfig.java @@ -0,0 +1,22 @@ +package de.unikoblenz.fgbks.core.dmn.verification.verifier.config; + +import java.util.HashMap; +import org.apache.commons.lang3.Validate; + +public abstract class AbstractVerificationConfig { + + private HashMap<String, Object> configurationProperties; + + public Object getConfiguration(String key) { + return configurationProperties.get(key); + } + + protected AbstractVerificationConfig withConfigurationProperty(String key, Object value) { + configurationProperties.put(Validate.notNull(key), Validate.notNull(value)); + return this; + } + + protected AbstractVerificationConfig() { + configurationProperties = new HashMap<>(); + } +} diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/config/DefaultConfiguration.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/config/DefaultConfiguration.java new file mode 100644 index 00000000..6468f862 --- /dev/null +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/config/DefaultConfiguration.java @@ -0,0 +1,24 @@ +package de.unikoblenz.fgbks.core.dmn.verification.verifier.config; + +import de.unikoblenz.fgbks.base.builder.DefaultBuilder; + +public class DefaultConfiguration extends AbstractVerificationConfig { + + public static final String DMN_DECISION_TABLE = "DmnDecisionTable"; + + public DefaultConfiguration() { + super(); + } + + public static Builder getBuilder() { + return new DefaultConfiguration().new Builder(); + } + + public class Builder extends DefaultBuilder<DefaultConfiguration> { + + public Builder withDmnDecisionTable(String x) { + value.withConfigurationProperty(DMN_DECISION_TABLE, x); + return this; + } + } +} diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/config/DmnVerifierConfigProperty.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/config/DmnVerifierConfigProperty.java new file mode 100644 index 00000000..f3f711cf --- /dev/null +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/config/DmnVerifierConfigProperty.java @@ -0,0 +1,6 @@ +package de.unikoblenz.fgbks.core.dmn.verification.verifier.config; + +public @interface DmnVerifierConfigProperty { + + String key(); +} diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/AbstractVerificationType.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/AbstractVerificationType.java new file mode 100644 index 00000000..6b57fae4 --- /dev/null +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/AbstractVerificationType.java @@ -0,0 +1,3 @@ +package de.unikoblenz.fgbks.core.dmn.verification.verifier.types; + +public abstract class AbstractVerificationType implements VerificationType {} diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/IdenticalBusinessRuleVerification.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/IdenticalBusinessRuleVerification.java new file mode 100644 index 00000000..d51273ec --- /dev/null +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/IdenticalBusinessRuleVerification.java @@ -0,0 +1,24 @@ +package de.unikoblenz.fgbks.core.dmn.verification.verifier.types; + +import static de.unikoblenz.fgbks.core.dmn.verification.verifier.types.VerificationTypeClassification.*; + +import de.unikoblenz.fgbks.core.dmn.domain.Description; +import de.unikoblenz.fgbks.core.dmn.domain.Name; + +public class IdenticalBusinessRuleVerification extends AbstractVerificationType { + + @Override + public VerificationTypeClassification getClassification() { + return DECISION_LOGIC_LEVEL_VERIFICATION; + } + + @Override + public Name getName() { + return new Name(this.getClass().getSimpleName()); + } + + @Override + public Description getDescription() { + return new Description("test"); + } +} diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/VerificationType.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/VerificationType.java new file mode 100644 index 00000000..bfe01010 --- /dev/null +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/VerificationType.java @@ -0,0 +1,22 @@ +package de.unikoblenz.fgbks.core.dmn.verification.verifier.types; + +import de.unikoblenz.fgbks.base.value.ValueObject; +import de.unikoblenz.fgbks.core.dmn.domain.Description; +import de.unikoblenz.fgbks.core.dmn.domain.Name; +import javax.json.bind.annotation.JsonbProperty; +import javax.validation.constraints.NotNull; + +public interface VerificationType extends ValueObject { + + @NotNull + @JsonbProperty("classification") + VerificationTypeClassification getClassification(); + + @NotNull + @JsonbProperty("name") + Name getName(); + + @NotNull + @JsonbProperty("description") + Description getDescription(); +} diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/VerificationTypeClassification.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/VerificationTypeClassification.java new file mode 100644 index 00000000..e6b1a003 --- /dev/null +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/VerificationTypeClassification.java @@ -0,0 +1,25 @@ +package de.unikoblenz.fgbks.core.dmn.verification.verifier.types; + +import de.unikoblenz.fgbks.base.value.ValueObject; +import de.unikoblenz.fgbks.core.dmn.domain.Description; +import de.unikoblenz.fgbks.core.dmn.domain.Name; + +public enum VerificationTypeClassification implements ValueObject { + DECISION_LOGIC_LEVEL_VERIFICATION("Decision Logic Verification", "description of classification"); + + private Name name; + private Description description; + + public Name getName() { + return name; + } + + public Description getDescription() { + return description; + } + + VerificationTypeClassification(String name, String description) { + this.name = new Name(name); + this.description = new Description(description); + } +} diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/test/Person.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/test/Person.java index 2da218fd..140a92d5 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/test/Person.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/test/Person.java @@ -1,5 +1,6 @@ package de.unikoblenz.fgbks.core.test; +import de.unikoblenz.fgbks.core.dmn.domain.Name; import java.io.Serializable; import java.util.Objects; -- GitLab