diff --git a/README.md b/README.md index 4d07724341af5ce9e3477b946117c2f9ab2c13b4..99c61d867cdfdc8cd5ffec71b4b585fef5df9f12 100644 --- a/README.md +++ b/README.md @@ -5,4 +5,4 @@ This project contains all source files of the implementation, created for the master thesis. - [Backend Project](dmnverifierapi) -- Frontend Project (TODO, create and add link) +- [Frontend Project](dmnverifierfrontend) 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 d8aad49da3c1a93e2de89885196632cf42481bdc..a5d95fef2be5357210c6aec58819d1fecb1d86ad 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 @@ -20,7 +20,8 @@ public class GreetingResource { private static Logger LOGGER = LoggerFactory.getLogger("test"); - @Inject WordnetServiceX wordnetServiceX; + @Inject + WordnetServiceX wordnetServiceX; @ConfigProperty(name = "hello") private String greet; @@ -28,7 +29,7 @@ public class GreetingResource { @GET @Produces(MediaType.APPLICATION_JSON) public Response hello() { - return Response.accepted(new Person(new Name("jonas"))).build(); + return Response.accepted(new Person(new Name(greet + " Jonas"))).build(); } @GET @@ -36,7 +37,6 @@ public class GreetingResource { @Consumes(MediaType.TEXT_PLAIN) @Path("/{word}") public Response hello(@PathParam("word") String word) { - LOGGER.info("xxxxxxxxxxxxxxx" + word); return Response.accepted(new Synonyms(wordnetServiceX.getNounsSynonyms(word))).build(); } 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 da063f0eda0b5b3a2b184e9a63e6b5be949ab3b1..a5964c648593fc31c73966e3fd670c56ca296d9d 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 @@ -6,12 +6,14 @@ import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; +import org.eclipse.microprofile.config.inject.ConfigProperty; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @Path("/builder") public class TestApi { + private static Logger LOGGER = LoggerFactory.getLogger(TestApi.class.getSimpleName()); @GET diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/json/JsonConfiguration.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/json/JsonConfiguration.java index a744559d95b0d4cdc828f631767bafb66cc234c1..455c61af05de325d792df75e4ad50a7b94c7ef79 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/json/JsonConfiguration.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/json/JsonConfiguration.java @@ -17,7 +17,6 @@ public class JsonConfiguration implements ContextResolver<Jsonb> { .withFormatting(true) .withStrictIJSON(true) .withPropertyVisibilityStrategy(new PrivateVisibilityStrategy()); - System.out.println("Init Json Config " + type.getSimpleName()); return JsonbBuilder.newBuilder().withConfig(config).build(); } } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/UniqueIdGenerator.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/UniqueIdGenerator.java index 44765ccde59a39e5f1bed09e8bf3230c7ff67b0e..6768252126eb4fa15133de80697fdc2200a80722 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/UniqueIdGenerator.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/UniqueIdGenerator.java @@ -2,11 +2,12 @@ package de.unikoblenz.fgbks.base.utils; public class UniqueIdGenerator { - private static long id = 0; + private static volatile long id = 0; - private UniqueIdGenerator() {} + private UniqueIdGenerator() { + } - public static long getNextId() { - return ++id; + public static synchronized long getNextId() { + return id++; } } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/VerificationClassification.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/VerificationClassification.java deleted file mode 100644 index c185f22f326df5b5b786976f7d538f0ad4a8fab9..0000000000000000000000000000000000000000 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/VerificationClassification.java +++ /dev/null @@ -1,17 +0,0 @@ -package de.unikoblenz.fgbks.core.dmn.verfication; - -import java.io.Serializable; - -public enum VerificationClassification implements Serializable { - DECISION_LOGIC_LEVEL_VERIFICATION("Decision Logic Verification"); - - private String name; - - public String getName() { - return name; - } - - VerificationClassification(String name) { - this.name = name; - } -} 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 index fddee1aa2d0f00f1fccd839b45bd6bd2b503d463..8ece6ef82af2df4ac0b831d7963f2b9e78e959b2 100644 --- 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 @@ -1,15 +1,47 @@ 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 de.unikoblenz.fgbks.core.dmn.verfication.verifier.SampleVerifier; +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() { - return VerifierResultSet.getBuilder() - .addVerifierResult( - VerificationType.IDENTICAL_BUSINESS_RULE_VERIFICATION.getNewInstance().verify()) - .addVerifierResult(new SampleVerifier().verify()) - .build(); + + 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 index f2957f190b974ad5ebcf1463f76e4ae9938a4c2a..f65aa5bdd5266bc37ac41df4abe2145adfd70693 100644 --- 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 @@ -1,6 +1,6 @@ package de.unikoblenz.fgbks.core.dmn.verfication; -import static de.unikoblenz.fgbks.core.dmn.verfication.VerificationClassification.DECISION_LOGIC_LEVEL_VERIFICATION; +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; @@ -12,25 +12,29 @@ public enum VerificationType implements Serializable { IDENTICAL_BUSINESS_RULE_VERIFICATION( DECISION_LOGIC_LEVEL_VERIFICATION, "Identical Business Rules"); - private VerificationClassification classification; + private VerificationTypeClassification classification; private String name; - private transient Class<AbstractVerifier> verifierClass; + private String description; + private Class<? extends AbstractVerifier> verifierClass; @JsonbProperty("classification") - public VerificationClassification getClassification() { + public VerificationTypeClassification getClassification() { return classification; } - @JsonbProperty("name") public String getName() { return name; } - public AbstractVerifier getNewInstance() { + public String getDescription() { + return description; + } + + public AbstractVerifier createNewInstance() { return new SampleVerifier(); } - VerificationType(VerificationClassification classification, String name) { + 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 new file mode 100644 index 0000000000000000000000000000000000000000..c2c5874a7c4b7c854ba9b96d2291b247ff1359a1 --- /dev/null +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/VerificationTypeClassification.java @@ -0,0 +1,34 @@ +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/verfication/result/AbstractResultObject.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/AbstractResultObject.java index 5f2c94ce0a025fae8eaff920d08c254c447f8eb6..755889a6fa135426cfdb0e0b366fa4aec24a04c3 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/verfication/result/AbstractResultObject.java @@ -3,10 +3,16 @@ package de.unikoblenz.fgbks.core.dmn.verfication.result; import de.unikoblenz.fgbks.base.utils.UniqueIdGenerator; import java.io.Serializable; import java.util.Objects; +import javax.json.bind.annotation.JsonbProperty; public class AbstractResultObject implements Serializable { - private transient long id = UniqueIdGenerator.getNextId(); + private long id = UniqueIdGenerator.getNextId(); + + @JsonbProperty("id") + public long getId() { + return id; + } @Override public boolean equals(Object o) { 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/verfication/result/VerificationResultEntry.java index e77a62599cba6cf5730cf31b055691579304fd77..053a097ab018d5bdfe1cce74fd1efe254cd8e855 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/verfication/result/VerificationResultEntry.java @@ -9,8 +9,13 @@ import org.apache.commons.lang3.Validate; public class VerificationResultEntry extends AbstractResultObject { + public enum VerificationClassification { + INFO, WARNING, ERROR, FATAL_ERROR; + } + private Set<VerificationResultEntryElement> verificationResultEntryElements; private String message; + private VerificationClassification verificationClassification; protected VerificationResultEntry() { this.verificationResultEntryElements = ConcurrentHashMap.newKeySet(); @@ -26,6 +31,11 @@ public class VerificationResultEntry extends AbstractResultObject { return new HashSet<>(verificationResultEntryElements); } + @JsonbProperty("verificationClassification") + public VerificationClassification getVerificationClassification() { + return verificationClassification; + } + @JsonbProperty("message") public String getMessage() { return message; @@ -53,10 +63,16 @@ public class VerificationResultEntry extends AbstractResultObject { return this; } + public Builder withClassification(VerificationClassification verificationClassification) { + value.verificationClassification = verificationClassification; + return this; + } + @Override protected void validate() { super.validate(); Validate.notNull(value.message); + Validate.notNull(value.verificationClassification); Validate.notEmpty(value.verificationResultEntryElements); } } 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/verfication/result/VerificationResultEntryElement.java index ebd596b16676c046f39654436c7c98a00808e4c5..fa306010a7c9795a819b2c67eec4d068cda176bc 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/verfication/result/VerificationResultEntryElement.java @@ -3,46 +3,73 @@ package de.unikoblenz.fgbks.core.dmn.verfication.result; import java.util.HashMap; import java.util.Map; import javax.json.bind.annotation.JsonbProperty; +import org.apache.commons.lang3.Validate; // @JsonbTypeSerializer(VerificationResultEntryElementJsonSerializer.class) public class VerificationResultEntryElement extends AbstractResultObject { - private static final String ID = "id"; - private static final String TABLE = "table"; - private String name; - private final Map<String, Object> properties = new HashMap<>(); + private static final String DECISION_ID = "decisionId"; + private static final String DECISION_TABLE_ID = "decisionTableId"; + private static final String INPUT_ID = "inputId"; + private static final String INPUT_EXPRESSION_ID = "inputExpressionId"; + private static final String OUTPUT_ID = "outputId"; + private static final String RULE_ID = "ruleId"; + private static final String INPUT_ENTRY_ID = "inputEntryId"; + private static final String OUTPUT_ENTRY_ID = "outputEntryId"; + + private final Map<String, Object> properties; @JsonbProperty("properties") public Map<String, Object> getProperties() { return new HashMap<>(properties); } - public VerificationResultEntryElement(String name) { - this.name = name; + private VerificationResultEntryElement() { + properties = new HashMap<>(); } - public String getName() { - return name; + public static VerificationResultEntryElement create() { + return new VerificationResultEntryElement(); } - public void setName(String name) { - this.name = name; + public VerificationResultEntryElement withDecisionId(String decisionId) { + return withProperty(DECISION_ID, decisionId); } - public VerificationResultEntryElement setId(String table) { - return setProperty(TABLE, table); + public VerificationResultEntryElement withDecisionTableId(String decisionTableId) { + return withProperty(DECISION_TABLE_ID, decisionTableId); } - public VerificationResultEntryElement setTable(String table) { - return setProperty(ID, table); + public VerificationResultEntryElement withInputId(String inputId) { + return withProperty(INPUT_ID, inputId); } - public VerificationResultEntryElement setProperty(String key, String value) { - properties.put(key, value); - return this; + public VerificationResultEntryElement withInputExpressionId(String inputExpressionId) { + return withProperty(INPUT_EXPRESSION_ID, inputExpressionId); } - // TODO, add properties to link dmn elements: - // e.g. whole tables, one row / column, or a single cell + public VerificationResultEntryElement withOutputId(String outputId) { + return withProperty(OUTPUT_ID, outputId); + } + public VerificationResultEntryElement withRuleId(String ruleId) { + return withProperty(RULE_ID, ruleId); + } + + public VerificationResultEntryElement withInputEntryId(String inputEntryId) { + return withProperty(INPUT_ENTRY_ID, inputEntryId); + } + + public VerificationResultEntryElement withOutputEntryId(String outputEntryId) { + return withProperty(OUTPUT_ENTRY_ID, outputEntryId); + } + + private VerificationResultEntryElement withProperty(String key, String value) { + // every properties can only be set once + Validate + .isTrue(!properties.containsKey(key), "Property %s with value %s in %s already set", key, + value, VerificationResultEntryElement.class.getSimpleName()); + properties.put(key, value); + return this; + } } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/VerificationResultEntryElementJsonSerializer.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/VerificationResultEntryElementJsonSerializer.java deleted file mode 100644 index 50340eb647018ca9a376719851ac29e2f176b17a..0000000000000000000000000000000000000000 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/VerificationResultEntryElementJsonSerializer.java +++ /dev/null @@ -1,13 +0,0 @@ -package de.unikoblenz.fgbks.core.dmn.verfication.result; - -import javax.json.bind.serializer.JsonbSerializer; -import javax.json.bind.serializer.SerializationContext; -import javax.json.stream.JsonGenerator; - -public class VerificationResultEntryElementJsonSerializer - implements JsonbSerializer<VerificationResultEntryElement> { - - @Override - public void serialize( - VerificationResultEntryElement obj, JsonGenerator generator, SerializationContext ctx) {} -} 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/verfication/result/VerificationResultEntryFactory.java index 44c78db4bac62b526ee1b38d32ba3041de21140c..4c6b4713005e2646abf85576429ef70a7266edd7 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/verfication/result/VerificationResultEntryFactory.java @@ -1,5 +1,6 @@ package de.unikoblenz.fgbks.core.dmn.verfication.result; +import de.unikoblenz.fgbks.core.dmn.verfication.result.VerificationResultEntry.VerificationClassification; import de.unikoblenz.fgbks.core.dmn.verfication.result.VerifierResult.Builder; import org.apache.commons.lang3.Validate; @@ -30,12 +31,16 @@ public class VerificationResultEntryFactory { return this; } - public void addToEntry(String message) { - addToEntry(message, null); + public void addToEntry(VerificationClassification verificationClassification, String message) { + addToEntry(verificationClassification, message, null); } - public void addToEntry(String message, Object... args) { - verificationResultEntryBuilder.withMessage(String.format(message, args)); + public void addToEntry(VerificationClassification verificationClassification, String message, + Object... args) { + Validate.notNull(verificationResultEntryBuilder, + "First call \"addElement\" in VerificationResultEntryFactory before calling \"addToEntry\""); + verificationResultEntryBuilder.withClassification(verificationClassification); + verificationResultEntryBuilder.withMessage(String.format(Validate.notNull(message), args)); 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/verfication/result/VerifierResult.java index 8895b07daa3499d377edc21720028062d740adcb..e69c55e62aa305b46fb64b5d91397c9e8c7627a6 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/verfication/result/VerifierResult.java @@ -28,6 +28,16 @@ public class VerifierResult extends AbstractResultObject { 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/verifier/AbstractVerifier.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/verifier/AbstractVerifier.java index 736b8524f6a071a622e7a3624fa462a0a22bad35..deb2c19f3b35b2af7c2a6508f9fe9fa16834c77a 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/verfication/verifier/AbstractVerifier.java @@ -3,8 +3,14 @@ package de.unikoblenz.fgbks.core.dmn.verfication.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 java.util.Objects; +import java.util.Set; +import java.util.concurrent.Callable; +import java.util.concurrent.Executor; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Future; -public abstract class AbstractVerifier { +public abstract class AbstractVerifier implements Verifier { protected VerificationType verificationType; private VerifierResult.Builder resultBuilder; @@ -20,10 +26,31 @@ public abstract class AbstractVerifier { vref = VerificationResultEntryFactory.create(resultBuilder); } + public final Future<VerifierResult> verify(ExecutorService executor) { + return executor.submit((Callable<VerifierResult>) this::verify); + } + public final VerifierResult verify() { doVerification(); return resultBuilder.build(); } protected abstract void doVerification(); + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + AbstractVerifier that = (AbstractVerifier) o; + return verificationType == that.verificationType; + } + + @Override + public int hashCode() { + return Objects.hash(verificationType); + } } 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/verfication/verifier/SampleVerifier.java index 986d3519144e42805c54f252629f38a970b2d7af..0a5de313146b523d15bd6fbc4becec88514304db 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/verfication/verifier/SampleVerifier.java @@ -1,6 +1,7 @@ package de.unikoblenz.fgbks.core.dmn.verfication.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 de.unikoblenz.fgbks.core.dmn.verfication.result.VerificationResultEntryElement; @@ -12,20 +13,20 @@ public class SampleVerifier extends AbstractVerifier { @Override protected void doVerification() { - vref.addElement(new VerificationResultEntryElement("test 1").setId("21313").setTable("asad")) - .addElement(new VerificationResultEntryElement("test 4")) - .addElement(new VerificationResultEntryElement("test 3")) - .addElement(new VerificationResultEntryElement("test 2")) - .addToEntry("Test"); - vref.addElement(new VerificationResultEntryElement("test 1")) - .addElement(new VerificationResultEntryElement("test 4")) - .addElement(new VerificationResultEntryElement("test 3")) - .addElement(new VerificationResultEntryElement("test 2")) - .addToEntry("Tes 324423t"); - vref.addElement(new VerificationResultEntryElement("A 1")) - .addElement(new VerificationResultEntryElement("tBest 4")) - .addElement(new VerificationResultEntryElement("teCst 3")) - .addElement(new VerificationResultEntryElement("tesDt 2")) - .addToEntry("AAA 4353 43 est"); + vref.addElement(VerificationResultEntryElement.create() + .withDecisionId("hello workd") + .withInputEntryId("adsas") + .withRuleId("asdads")); + vref.addElement(VerificationResultEntryElement.create() + .withDecisionId("hello workd") + .withInputEntryId("adsas") + .withRuleId("asdads")); + vref.addToEntry(ERROR, "Asd"); + try { + Thread.sleep(1500); + } 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/verfication/verifier/Verifier.java new file mode 100644 index 0000000000000000000000000000000000000000..279ad8ac4c28a44648755bfc2b13a3b34bb446a7 --- /dev/null +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/verifier/Verifier.java @@ -0,0 +1,11 @@ +package de.unikoblenz.fgbks.core.dmn.verfication.verifier; + +import de.unikoblenz.fgbks.core.dmn.verfication.result.VerifierResult; +import java.util.Set; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Future; + +public interface Verifier { + + Future<VerifierResult> verify(ExecutorService executor); +} diff --git a/dmnverifierapi/src/main/resources/application.properties b/dmnverifierapi/src/main/resources/application.properties index 3b1f6466945718950d4abb9fb7ab728a2040484b..d53a22529b77f21b2b97905533d8e5fe8a60bd23 100644 --- a/dmnverifierapi/src/main/resources/application.properties +++ b/dmnverifierapi/src/main/resources/application.properties @@ -2,8 +2,12 @@ %dev.hello=hello my hello=hello world +# Quarkus cors settings quarkus.http.cors=true quarkus.http.cors.origins=http://localhost:8081 quarkus.http.cors.headers=accept, authorization, content-type, x-requested-with quarkus.http.cors.methods=GET, OPTIONS +# Amount of threads for calculating the verifications +verifier.threads=8 +%dev.verifier.threads=4