From 08b528adcbf00bec5f84fd398ab8bed13fc40111 Mon Sep 17 00:00:00 2001 From: Jonas Blatt <jonasblatt@uni-koblenz.de> Date: Mon, 9 Sep 2019 20:36:23 +0200 Subject: [PATCH] Add domain for identifier --- .../base/value/AbstractStringValueObject.java | 8 +-- .../fgbks/core/dmn/domain/Message.java | 15 ++++ .../fgbks/core/dmn/domain/id/AbstractId.java | 15 ++++ .../fgbks/core/dmn/domain/id/DecisionId.java | 8 +++ .../core/dmn/domain/id/DecisionTableId.java | 9 +++ .../core/dmn/domain/id/InputEntryId.java | 9 +++ .../core/dmn/domain/id/InputExpressionId.java | 9 +++ .../fgbks/core/dmn/domain/id/InputId.java | 9 +++ .../core/dmn/domain/id/JsonIdentifier.java | 15 ++++ .../core/dmn/domain/id/OutputEntryId.java | 9 +++ .../fgbks/core/dmn/domain/id/OutputId.java | 9 +++ .../fgbks/core/dmn/domain/id/RuleId.java | 9 +++ .../result/VerificationResultEntry.java | 11 +-- .../VerificationResultEntryElement.java | 70 +++++-------------- .../VerificationResultEntryFactory.java | 7 +- .../verfication/verifier/SampleVerifier.java | 17 +++-- 16 files changed, 161 insertions(+), 68 deletions(-) create mode 100644 dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/Message.java create mode 100644 dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/AbstractId.java create mode 100644 dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/DecisionId.java create mode 100644 dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/DecisionTableId.java create mode 100644 dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/InputEntryId.java create mode 100644 dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/InputExpressionId.java create mode 100644 dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/InputId.java create mode 100644 dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/JsonIdentifier.java create mode 100644 dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/OutputEntryId.java create mode 100644 dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/OutputId.java create mode 100644 dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/RuleId.java diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/value/AbstractStringValueObject.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/value/AbstractStringValueObject.java index ec5e6f96..a7f54fe6 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/value/AbstractStringValueObject.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/value/AbstractStringValueObject.java @@ -7,7 +7,7 @@ import static org.apache.commons.lang3.Validate.notNull; public abstract class AbstractStringValueObject extends AbstractSimpleValueObject<String> { - public static final int MIN_LEN = 1; + public static final int DEFAULT_MIN_LEN = 1; protected AbstractStringValueObject() {} @@ -25,10 +25,10 @@ public abstract class AbstractStringValueObject extends AbstractSimpleValueObjec if (handleBlanksAsNull() && super.getValue().trim().isEmpty()) { return null; } - return isBlankAllowed() ? super.getValue() : toStringTimTrailing(); + return isBlankAllowed() ? super.getValue() : toStringTrim(); } - private String toStringTimTrailing() { + private String toStringTrim() { return super.getValue().trim(); } @@ -54,7 +54,7 @@ public abstract class AbstractStringValueObject extends AbstractSimpleValueObjec } protected Integer getMinLength() { - return MIN_LEN; + return DEFAULT_MIN_LEN; } protected abstract Integer getMaxLength(); 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 new file mode 100644 index 00000000..b7ed52c9 --- /dev/null +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/Message.java @@ -0,0 +1,15 @@ +package de.unikoblenz.fgbks.core.dmn.domain; + +import de.unikoblenz.fgbks.base.value.AbstractStringValueObject; + +public class Message extends AbstractStringValueObject { + + public Message(String initialValue) { + super(initialValue); + } + + @Override + protected Integer getMaxLength() { + return 500; + } +} 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 new file mode 100644 index 00000000..e57aadf9 --- /dev/null +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/AbstractId.java @@ -0,0 +1,15 @@ +package de.unikoblenz.fgbks.core.dmn.domain.id; + +import de.unikoblenz.fgbks.base.value.AbstractStringValueObject; + +public abstract class AbstractId extends AbstractStringValueObject { + + public AbstractId(String initialValue) { + super(initialValue); + } + + @Override + protected Integer getMaxLength() { + return 100; + } +} 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 new file mode 100644 index 00000000..6a95016f --- /dev/null +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/DecisionId.java @@ -0,0 +1,8 @@ +package de.unikoblenz.fgbks.core.dmn.domain.id; + +public class DecisionId extends AbstractId { + + 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 new file mode 100644 index 00000000..87292a93 --- /dev/null +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/DecisionTableId.java @@ -0,0 +1,9 @@ +package de.unikoblenz.fgbks.core.dmn.domain.id; + +@JsonIdentifier("decisionTableId") +public class DecisionTableId extends AbstractId { + + 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 new file mode 100644 index 00000000..9c1d594c --- /dev/null +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/InputEntryId.java @@ -0,0 +1,9 @@ +package de.unikoblenz.fgbks.core.dmn.domain.id; + +@JsonIdentifier("inputEntryId") +public class InputEntryId extends AbstractId { + + 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 new file mode 100644 index 00000000..b3966606 --- /dev/null +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/InputExpressionId.java @@ -0,0 +1,9 @@ +package de.unikoblenz.fgbks.core.dmn.domain.id; + +@JsonIdentifier("inputExpressionId") +public class InputExpressionId extends AbstractId { + + 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 new file mode 100644 index 00000000..91f65868 --- /dev/null +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/InputId.java @@ -0,0 +1,9 @@ +package de.unikoblenz.fgbks.core.dmn.domain.id; + +@JsonIdentifier("inputId") +public class InputId extends AbstractId { + + public InputId(String initialValue) { + super(initialValue); + } +} diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/JsonIdentifier.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/JsonIdentifier.java new file mode 100644 index 00000000..4952c6a8 --- /dev/null +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/JsonIdentifier.java @@ -0,0 +1,15 @@ +package de.unikoblenz.fgbks.core.dmn.domain.id; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Inherited +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +public @interface JsonIdentifier { + + String value() default "id"; +} 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 new file mode 100644 index 00000000..853d5ce2 --- /dev/null +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/OutputEntryId.java @@ -0,0 +1,9 @@ +package de.unikoblenz.fgbks.core.dmn.domain.id; + +@JsonIdentifier("outputEntryId") +public class OutputEntryId extends AbstractId { + + 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 new file mode 100644 index 00000000..201b43b2 --- /dev/null +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/OutputId.java @@ -0,0 +1,9 @@ +package de.unikoblenz.fgbks.core.dmn.domain.id; + +@JsonIdentifier("OutputId") +public class OutputId extends AbstractId { + + 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 new file mode 100644 index 00000000..b38220e9 --- /dev/null +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/RuleId.java @@ -0,0 +1,9 @@ +package de.unikoblenz.fgbks.core.dmn.domain.id; + +@JsonIdentifier("ruleId") +public class RuleId extends AbstractId { + + public RuleId(String initialValue) { + super(initialValue); + } +} 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 287e719b..029dd51e 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 @@ -1,6 +1,7 @@ package de.unikoblenz.fgbks.core.dmn.verfication.result; import de.unikoblenz.fgbks.base.builder.DefaultBuilder; +import de.unikoblenz.fgbks.core.dmn.domain.Message; import java.util.HashSet; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; @@ -17,7 +18,7 @@ public class VerificationResultEntry extends AbstractResultObject { } private Set<VerificationResultEntryElement> verificationResultEntryElements; - private String message; + private Message message; private VerificationClassification verificationClassification; protected VerificationResultEntry() { @@ -40,8 +41,8 @@ public class VerificationResultEntry extends AbstractResultObject { } @JsonbProperty("message") - public String getMessage() { - return message; + public Message getMessage() { + return new Message(message.getValue()); } private void addVerificationResultEntry( @@ -61,8 +62,8 @@ public class VerificationResultEntry extends AbstractResultObject { return this; } - public Builder withMessage(String message) { - value.message = message; + public Builder withMessage(Message message) { + value.message = new Message(message.getValue()); 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/verfication/result/VerificationResultEntryElement.java index 63e7360e..032ce6df 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 @@ -1,5 +1,7 @@ package de.unikoblenz.fgbks.core.dmn.verfication.result; +import de.unikoblenz.fgbks.core.dmn.domain.id.AbstractId; +import de.unikoblenz.fgbks.core.dmn.domain.id.JsonIdentifier; import java.util.HashMap; import java.util.Map; import javax.json.bind.annotation.JsonbProperty; @@ -8,71 +10,37 @@ import org.apache.commons.lang3.Validate; // @JsonbTypeSerializer(VerificationResultEntryElementJsonSerializer.class) public class VerificationResultEntryElement extends AbstractResultObject { - 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, AbstractId> identifier; - private final Map<String, Object> properties; - - @JsonbProperty("properties") - public Map<String, Object> getProperties() { - return new HashMap<>(properties); + @JsonbProperty("identifier") + public Map<String, Object> getIdentifier() { + return new HashMap<>(identifier); } private VerificationResultEntryElement() { - properties = new HashMap<>(); + identifier = new HashMap<>(); } public static VerificationResultEntryElement create() { return new VerificationResultEntryElement(); } - public VerificationResultEntryElement withDecisionId(String decisionId) { - return withProperty(DECISION_ID, decisionId); - } + public VerificationResultEntryElement withIdentifier(AbstractId value) { - public VerificationResultEntryElement withDecisionTableId(String decisionTableId) { - return withProperty(DECISION_TABLE_ID, decisionTableId); - } - - public VerificationResultEntryElement withInputId(String inputId) { - return withProperty(INPUT_ID, inputId); - } - - public VerificationResultEntryElement withInputExpressionId(String inputExpressionId) { - return withProperty(INPUT_EXPRESSION_ID, inputExpressionId); - } - - 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 + // Check if annotation is present + Validate.isTrue( + value.getClass().isAnnotationPresent(JsonIdentifier.class), + "No annotation \"JsonIdentifier\" for AbstractId %s present.", + value.getClass().getSimpleName()); + String keyValue = value.getClass().getAnnotation(JsonIdentifier.class).value(); + // every identifier can only be set once Validate.isTrue( - !properties.containsKey(key), - "Property %s with value %s in %s already set", - key, + !identifier.containsKey(keyValue), + "Identifier %s with value %s in %s already set.", + keyValue, value, VerificationResultEntryElement.class.getSimpleName()); - properties.put(key, value); + identifier.put(keyValue, value); return this; } } 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 5a57a753..bc651b98 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.domain.Message; 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; @@ -37,11 +38,15 @@ public class VerificationResultEntryFactory { public void addToEntry( VerificationClassification verificationClassification, String message, Object... args) { + addToEntry(verificationClassification, new Message(String.format(message, args))); + } + + public void addToEntry(VerificationClassification verificationClassification, Message message) { Validate.notNull( verificationResultEntryBuilder, "First call \"addElement\" in VerificationResultEntryFactory before calling \"addToEntry\""); verificationResultEntryBuilder.withClassification(verificationClassification); - verificationResultEntryBuilder.withMessage(String.format(Validate.notNull(message), args)); + verificationResultEntryBuilder.withMessage(message); verifierResultBuilder.addVerificationResultEntry(verificationResultEntryBuilder.build()); verificationResultEntryBuilder = null; } 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 6e202dd3..0edc2e93 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 @@ -3,6 +3,9 @@ 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.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; public class SampleVerifier extends AbstractVerifier { @@ -15,15 +18,15 @@ public class SampleVerifier extends AbstractVerifier { protected void doVerification() { vref.addElement( VerificationResultEntryElement.create() - .withDecisionId("hello workd") - .withInputEntryId("adsas") - .withRuleId("asdads")); + .withIdentifier(new InputEntryId("asdasda")) + .withIdentifier(new OutputEntryId("test")) + .withIdentifier(new RuleId("asdasd"))); vref.addElement( VerificationResultEntryElement.create() - .withDecisionId("hello workd") - .withInputEntryId("adsas") - .withRuleId("asdads")); - vref.addToEntry(ERROR, "Asd"); + .withIdentifier(new InputEntryId("asdasda")) + .withIdentifier(new OutputEntryId("test")) + .withIdentifier(new RuleId("asdasd"))); + vref.addToEntry(ERROR, "My sample message"); try { Thread.sleep(1500); } catch (InterruptedException e) { -- GitLab