From 8c75607eda656fce5fe25b43792081d3c43e9b42 Mon Sep 17 00:00:00 2001 From: Jonas Blatt <jonasblatt@uni-koblenz.de> Date: Fri, 13 Sep 2019 22:05:21 +0200 Subject: [PATCH] Create Builder for dmn pojos --- .../de/unikoblenz/fgbks/api/test/TestApi.java | 7 ++- .../core/dmn/domain/values/VDmnColumn.java | 2 +- .../core/dmn/domain/values/VDmnDecision.java | 2 +- .../dmn/domain/values/VDmnDecisionTable.java | 4 +- .../core/dmn/domain/values/VDmnElement.java | 3 + .../dmn/domain/values/VDmnInputValue.java | 4 +- .../dmn/domain/values/VDmnOutputValue.java | 4 +- .../core/dmn/domain/values/VDmnRule.java | 2 +- .../core/dmn/domain/values/VDmnValue.java | 2 +- .../domain/values/impl/DmnElementBuilder.java | 5 ++ .../domain/values/impl/VDmnDecisionImpl.java | 3 +- .../values/impl/VDmnDecisionTableImpl.java | 29 ++++++++- .../values/impl/VDmnInputColumnImpl.java | 3 +- .../values/impl/VDmnInputValueImpl.java | 60 +++++++++++++++++++ .../values/impl/VDmnOutputColumnImpl.java | 3 +- .../values/impl/VDmnOutputValueImpl.java | 60 +++++++++++++++++++ .../dmn/domain/values/impl/VDmnRuleImpl.java | 7 +-- .../dmn/domain/values/impl/VDmnValueImpl.java | 33 ++++++++++ ...enerator.java => VerificationService.java} | 40 +++++++------ .../src/main/resources/application.properties | 1 + 20 files changed, 234 insertions(+), 40 deletions(-) create mode 100644 dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/VDmnElement.java create mode 100644 dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/DmnElementBuilder.java create mode 100644 dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/VDmnInputValueImpl.java create mode 100644 dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/VDmnOutputValueImpl.java create mode 100644 dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/VDmnValueImpl.java rename dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/{VerificationGenerator.java => VerificationService.java} (76%) 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 317f1e73..32e8965f 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,7 +1,8 @@ package de.unikoblenz.fgbks.api.test; import de.unikoblenz.fgbks.core.dmn.utils.DmnService; -import de.unikoblenz.fgbks.core.dmn.verification.VerificationGenerator; +import de.unikoblenz.fgbks.core.dmn.verification.VerificationService; +import javax.inject.Inject; import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.POST; @@ -17,10 +18,12 @@ public class TestApi { private static Logger LOGGER = LoggerFactory.getLogger(TestApi.class.getSimpleName()); + @Inject private VerificationService verificationService; + @GET @Produces(MediaType.APPLICATION_JSON) public Response helloBuilder() { - return Response.accepted(VerificationGenerator.generate()).build(); + return Response.accepted(verificationService.generate()).build(); } @POST diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/VDmnColumn.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/VDmnColumn.java index 947786ec..02d05dc0 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/VDmnColumn.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/VDmnColumn.java @@ -3,7 +3,7 @@ package de.unikoblenz.fgbks.core.dmn.domain.values; import de.unikoblenz.fgbks.core.dmn.domain.ids.ColumnId; import java.util.List; -public interface VDmnColumn { +public interface VDmnColumn extends VDmnElement { VDmnDecisionTable getDmnDecisionTable(); diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/VDmnDecision.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/VDmnDecision.java index 68171b08..f908e84b 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/VDmnDecision.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/VDmnDecision.java @@ -3,7 +3,7 @@ package de.unikoblenz.fgbks.core.dmn.domain.values; import de.unikoblenz.fgbks.core.dmn.domain.ids.DecisionId; import java.util.List; -public interface VDmnDecision { +public interface VDmnDecision extends VDmnElement { DecisionId getDecisionId(); diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/VDmnDecisionTable.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/VDmnDecisionTable.java index 862d9ad0..8d4b5771 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/VDmnDecisionTable.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/VDmnDecisionTable.java @@ -3,7 +3,7 @@ package de.unikoblenz.fgbks.core.dmn.domain.values; import de.unikoblenz.fgbks.core.dmn.domain.ids.DecisionTableId; import java.util.List; -public interface VDmnDecisionTable { +public interface VDmnDecisionTable extends VDmnElement { VDmnDecision getDecision(); @@ -14,4 +14,6 @@ public interface VDmnDecisionTable { List<VDmnInputColumn> getInputColumns(); List<VDmnRule> getRules(); + + List<VDmnValue> getValues(); } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/VDmnElement.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/VDmnElement.java new file mode 100644 index 00000000..a7376aa1 --- /dev/null +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/VDmnElement.java @@ -0,0 +1,3 @@ +package de.unikoblenz.fgbks.core.dmn.domain.values; + +public interface VDmnElement {} diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/VDmnInputValue.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/VDmnInputValue.java index 18a66725..53dbbad5 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/VDmnInputValue.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/VDmnInputValue.java @@ -6,5 +6,7 @@ public interface VDmnInputValue extends VDmnValue { InputEntryId getInputEntryId(); - VDmnInputColumn getDmnInput(); + default VDmnInputColumn getDmnInputColumn() { + return (VDmnInputColumn) getDmnColumn(); + } } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/VDmnOutputValue.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/VDmnOutputValue.java index f951643b..609d6540 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/VDmnOutputValue.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/VDmnOutputValue.java @@ -6,5 +6,7 @@ public interface VDmnOutputValue extends VDmnValue { OutputEntryId getOutputEntryId(); - VDmnOutputColumn getDmnOutput(); + default VDmnOutputColumn getDmnOutputColumn() { + return (VDmnOutputColumn) getDmnColumn(); + } } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/VDmnRule.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/VDmnRule.java index 3f84a431..0e6dbb01 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/VDmnRule.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/VDmnRule.java @@ -4,7 +4,7 @@ import de.unikoblenz.fgbks.core.dmn.domain.common.RowNumber; import de.unikoblenz.fgbks.core.dmn.domain.ids.RuleId; import java.util.List; -public interface VDmnRule { +public interface VDmnRule extends VDmnElement { RowNumber getRowNumber(); diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/VDmnValue.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/VDmnValue.java index ff92718d..2a28b5ac 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/VDmnValue.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/VDmnValue.java @@ -4,7 +4,7 @@ import de.unikoblenz.fgbks.core.dmn.domain.ids.DecisionId; import de.unikoblenz.fgbks.core.dmn.domain.ids.DecisionTableId; import de.unikoblenz.fgbks.core.dmn.domain.ids.RuleId; -public interface VDmnValue { +public interface VDmnValue extends VDmnElement { VDmnRule getDmnRule(); diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/DmnElementBuilder.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/DmnElementBuilder.java new file mode 100644 index 00000000..1b3ce58d --- /dev/null +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/DmnElementBuilder.java @@ -0,0 +1,5 @@ +package de.unikoblenz.fgbks.core.dmn.domain.values.impl; + +import de.unikoblenz.fgbks.base.builder.DefaultBuilder; + +public abstract class DmnElementBuilder<E> extends DefaultBuilder<E> {} diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/VDmnDecisionImpl.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/VDmnDecisionImpl.java index 2de8b397..caf79d69 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/VDmnDecisionImpl.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/VDmnDecisionImpl.java @@ -1,6 +1,5 @@ package de.unikoblenz.fgbks.core.dmn.domain.values.impl; -import de.unikoblenz.fgbks.base.builder.DefaultBuilder; import de.unikoblenz.fgbks.core.dmn.domain.ids.DecisionId; import de.unikoblenz.fgbks.core.dmn.domain.values.VDmnDecision; import de.unikoblenz.fgbks.core.dmn.domain.values.VDmnDecisionTable; @@ -32,7 +31,7 @@ public class VDmnDecisionImpl implements VDmnDecision { return new VDmnDecisionImpl().new Builder(); } - public class Builder extends DefaultBuilder<VDmnDecisionImpl> { + public class Builder extends DmnElementBuilder<VDmnDecisionImpl> { public Builder withDecisionId(DecisionId decisionId) { value.decisionId = decisionId; diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/VDmnDecisionTableImpl.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/VDmnDecisionTableImpl.java index 27ed6ec6..7c3ac980 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/VDmnDecisionTableImpl.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/VDmnDecisionTableImpl.java @@ -1,12 +1,12 @@ package de.unikoblenz.fgbks.core.dmn.domain.values.impl; -import de.unikoblenz.fgbks.base.builder.DefaultBuilder; import de.unikoblenz.fgbks.core.dmn.domain.ids.DecisionTableId; import de.unikoblenz.fgbks.core.dmn.domain.values.VDmnDecision; import de.unikoblenz.fgbks.core.dmn.domain.values.VDmnDecisionTable; import de.unikoblenz.fgbks.core.dmn.domain.values.VDmnInputColumn; import de.unikoblenz.fgbks.core.dmn.domain.values.VDmnOutputColumn; import de.unikoblenz.fgbks.core.dmn.domain.values.VDmnRule; +import de.unikoblenz.fgbks.core.dmn.domain.values.VDmnValue; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -19,11 +19,13 @@ public class VDmnDecisionTableImpl implements VDmnDecisionTable { private List<VDmnOutputColumn> dmnOutputColumns; private List<VDmnInputColumn> dmnInputColumns; private List<VDmnRule> dmnRules; + private List<VDmnValue> dmnValues; private VDmnDecisionTableImpl() { dmnOutputColumns = new ArrayList<>(); dmnInputColumns = new ArrayList<>(); dmnRules = new ArrayList<>(); + dmnValues = new ArrayList<>(); } @Override @@ -51,11 +53,22 @@ public class VDmnDecisionTableImpl implements VDmnDecisionTable { return Collections.unmodifiableList(dmnRules); } + @Override + public List<VDmnValue> getValues() { + return Collections.unmodifiableList(dmnValues); + } + public static Builder getBuilder() { return new VDmnDecisionTableImpl().new Builder(); } - public class Builder extends DefaultBuilder<VDmnDecisionTableImpl> { + public class Builder extends DmnElementBuilder<VDmnDecisionTableImpl> { + + private List<VDmnOutputColumnImpl.Builder> dmnOutputColumnsBuilders = new ArrayList<>(); + private List<VDmnInputColumnImpl.Builder> dmnInputColumnsBuilders = new ArrayList<>(); + private List<DmnElementBuilder> dmnRulesBuilders = new ArrayList<>(); + private List<DmnElementBuilder> dmnOutputValueBuilders = new ArrayList<>(); + private List<DmnElementBuilder> dmnInputValueBuilders = new ArrayList<>(); public Builder withDecisionTableId(DecisionTableId decisionTableId) { value.decisionTableId = decisionTableId; @@ -82,11 +95,23 @@ public class VDmnDecisionTableImpl implements VDmnDecisionTable { return this; } + public Builder addDmnValue(VDmnValue dmnValue) { + value.dmnValues.add(Validate.notNull(dmnValue)); + return this; + } + @Override protected void validate() { super.validate(); Validate.notNull(value.decisionTableId); Validate.notNull(value.dmnDecision); } + + @Override + public VDmnDecisionTableImpl build() { + dmnOutputColumnsBuilders.forEach(v -> addDmnOutputColumn(v.build())); + dmnInputColumnsBuilders.forEach(v -> addDmnInputColumn(v.build())); + return super.build(); + } } } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/VDmnInputColumnImpl.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/VDmnInputColumnImpl.java index 64ffed58..722684c8 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/VDmnInputColumnImpl.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/VDmnInputColumnImpl.java @@ -1,6 +1,5 @@ package de.unikoblenz.fgbks.core.dmn.domain.values.impl; -import de.unikoblenz.fgbks.base.builder.DefaultBuilder; import de.unikoblenz.fgbks.core.dmn.domain.ids.InputId; import de.unikoblenz.fgbks.core.dmn.domain.values.VDmnDecisionTable; import de.unikoblenz.fgbks.core.dmn.domain.values.VDmnInputColumn; @@ -18,7 +17,7 @@ public class VDmnInputColumnImpl extends VDmnColumnImpl implements VDmnInputColu return new VDmnInputColumnImpl().new Builder(); } - public class Builder extends DefaultBuilder<VDmnInputColumnImpl> { + public class Builder extends DmnElementBuilder<VDmnInputColumnImpl> { public Builder withInputId(InputId inputId) { value.columnId = inputId; diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/VDmnInputValueImpl.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/VDmnInputValueImpl.java new file mode 100644 index 00000000..7cf82af8 --- /dev/null +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/VDmnInputValueImpl.java @@ -0,0 +1,60 @@ +package de.unikoblenz.fgbks.core.dmn.domain.values.impl; + +import de.unikoblenz.fgbks.core.dmn.domain.ids.InputEntryId; +import de.unikoblenz.fgbks.core.dmn.domain.values.VDmnInputColumn; +import de.unikoblenz.fgbks.core.dmn.domain.values.VDmnInputValue; +import de.unikoblenz.fgbks.core.dmn.domain.values.VDmnRule; +import org.apache.commons.lang3.Validate; + +public class VDmnInputValueImpl extends VDmnValueImpl implements VDmnInputValue { + + private InputEntryId inputEntryId; + + @Override + public InputEntryId getInputEntryId() { + return inputEntryId; + } + + private VDmnInputValueImpl() {} + + public static Builder getBuilder() { + return new VDmnInputValueImpl().new Builder(); + } + + public class Builder extends DmnElementBuilder<VDmnInputValueImpl> { + + public Builder withDmnRule(VDmnRule dmnRule) { + value.dmnRule = dmnRule; + return this; + } + + public Builder withText(String text) { + value.text = text; + return this; + } + + public Builder withDescription(String description) { + value.description = description; + return this; + } + + public Builder withDmnInputColumn(VDmnInputColumn dmnColumn) { + value.dmnColumn = dmnColumn; + return this; + } + + public Builder withInputEntryId(InputEntryId inputEntryId) { + value.inputEntryId = inputEntryId; + return this; + } + + @Override + protected void validate() { + super.validate(); + Validate.notNull(value.dmnRule); + Validate.notNull(value.text); + Validate.notNull(value.dmnColumn); + Validate.notNull(value.inputEntryId); + } + } +} diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/VDmnOutputColumnImpl.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/VDmnOutputColumnImpl.java index a4c99d05..7eb4777b 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/VDmnOutputColumnImpl.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/VDmnOutputColumnImpl.java @@ -1,6 +1,5 @@ package de.unikoblenz.fgbks.core.dmn.domain.values.impl; -import de.unikoblenz.fgbks.base.builder.DefaultBuilder; import de.unikoblenz.fgbks.core.dmn.domain.ids.InputId; import de.unikoblenz.fgbks.core.dmn.domain.values.VDmnDecisionTable; import de.unikoblenz.fgbks.core.dmn.domain.values.VDmnOutputColumn; @@ -18,7 +17,7 @@ public class VDmnOutputColumnImpl extends VDmnColumnImpl implements VDmnOutputCo return new VDmnOutputColumnImpl().new Builder(); } - public class Builder extends DefaultBuilder<VDmnOutputColumnImpl> { + public class Builder extends DmnElementBuilder<VDmnOutputColumnImpl> { public Builder withInputId(InputId inputId) { value.columnId = inputId; diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/VDmnOutputValueImpl.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/VDmnOutputValueImpl.java new file mode 100644 index 00000000..7a58d986 --- /dev/null +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/VDmnOutputValueImpl.java @@ -0,0 +1,60 @@ +package de.unikoblenz.fgbks.core.dmn.domain.values.impl; + +import de.unikoblenz.fgbks.core.dmn.domain.ids.OutputEntryId; +import de.unikoblenz.fgbks.core.dmn.domain.values.VDmnOutputColumn; +import de.unikoblenz.fgbks.core.dmn.domain.values.VDmnOutputValue; +import de.unikoblenz.fgbks.core.dmn.domain.values.VDmnRule; +import org.apache.commons.lang3.Validate; + +public class VDmnOutputValueImpl extends VDmnValueImpl implements VDmnOutputValue { + + private OutputEntryId outputEntryId; + + @Override + public OutputEntryId getOutputEntryId() { + return outputEntryId; + } + + private VDmnOutputValueImpl() {} + + public static Builder getBuilder() { + return new VDmnOutputValueImpl().new Builder(); + } + + public class Builder extends DmnElementBuilder<VDmnOutputValueImpl> { + + public Builder withDmnRule(VDmnRule dmnRule) { + value.dmnRule = dmnRule; + return this; + } + + public Builder withText(String text) { + value.text = text; + return this; + } + + public Builder withDescription(String description) { + value.description = description; + return this; + } + + public Builder withDmnOutputColumn(VDmnOutputColumn dmnColumn) { + value.dmnColumn = dmnColumn; + return this; + } + + public Builder withOutputEntryId(OutputEntryId outputEntryId) { + value.outputEntryId = outputEntryId; + return this; + } + + @Override + protected void validate() { + super.validate(); + Validate.notNull(value.dmnRule); + Validate.notNull(value.text); + Validate.notNull(value.dmnColumn); + Validate.notNull(value.outputEntryId); + } + } +} diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/VDmnRuleImpl.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/VDmnRuleImpl.java index efaefce4..c1e48f05 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/VDmnRuleImpl.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/VDmnRuleImpl.java @@ -1,6 +1,5 @@ package de.unikoblenz.fgbks.core.dmn.domain.values.impl; -import de.unikoblenz.fgbks.base.builder.DefaultBuilder; import de.unikoblenz.fgbks.core.dmn.domain.common.RowNumber; import de.unikoblenz.fgbks.core.dmn.domain.ids.RuleId; import de.unikoblenz.fgbks.core.dmn.domain.values.VDmnInputValue; @@ -47,7 +46,7 @@ public class VDmnRuleImpl implements VDmnRule { return new VDmnRuleImpl().new Builder(); } - public class Builder extends DefaultBuilder<VDmnRuleImpl> { + public class Builder extends DmnElementBuilder<VDmnRuleImpl> { public Builder withRowNumber(RowNumber rowNumber) { value.rowNumber = rowNumber; @@ -59,12 +58,12 @@ public class VDmnRuleImpl implements VDmnRule { return this; } - public Builder addiInputValues(VDmnInputValue inputValue) { + public Builder addiInputValue(VDmnInputValue inputValue) { value.inputValues.add(Validate.notNull(inputValue)); return this; } - public Builder addiInputValues(VDmnOutputValue outputValue) { + public Builder addOutputValue(VDmnOutputValue outputValue) { value.outputValues.add(Validate.notNull(outputValue)); return this; } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/VDmnValueImpl.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/VDmnValueImpl.java new file mode 100644 index 00000000..c4f28eb7 --- /dev/null +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/values/impl/VDmnValueImpl.java @@ -0,0 +1,33 @@ +package de.unikoblenz.fgbks.core.dmn.domain.values.impl; + +import de.unikoblenz.fgbks.core.dmn.domain.values.VDmnColumn; +import de.unikoblenz.fgbks.core.dmn.domain.values.VDmnRule; +import de.unikoblenz.fgbks.core.dmn.domain.values.VDmnValue; + +public abstract class VDmnValueImpl implements VDmnValue { + + protected VDmnRule dmnRule; + protected String text; + protected String description; + protected VDmnColumn dmnColumn; + + @Override + public VDmnRule getDmnRule() { + return dmnRule; + } + + @Override + public String getText() { + return text; + } + + @Override + public String getDescription() { + return description; + } + + @Override + public VDmnColumn getDmnColumn() { + return dmnColumn; + } +} 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/VerificationService.java similarity index 76% rename from dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/VerificationGenerator.java rename to dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/VerificationService.java index 8bed941e..92fe6969 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/VerificationGenerator.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/VerificationService.java @@ -16,39 +16,42 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; +import javax.inject.Singleton; import org.eclipse.microprofile.config.Config; import org.eclipse.microprofile.config.ConfigProvider; import org.reflections.Reflections; -public class VerificationGenerator { +@Singleton +public class VerificationService { private static final String CONF_VERIFIER_THREADS = "verifier.threads"; + private static final String CONF_PACKAGE_PATH = "verifier.package"; private static final Integer DEFAULT_MAX_THREADS = 1; private static final String DEFAULT_PACKAGE = "de.unikoblenz.fgbks.core.dmn.verification.verifier"; - public static VerifierResultSet generate() { - return generate(DEFAULT_PACKAGE, DEFAULT_MAX_THREADS); - } - - public static VerifierResultSet generate(String packagePath, Integer maxThreads) { + private ExecutorService executor; + private Set<Class<?>> verifierClasses; + protected VerificationService() { 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."); - + int maxThreads = + config.getOptionalValue(CONF_VERIFIER_THREADS, Integer.class).orElse(DEFAULT_MAX_THREADS); + executor = Executors.newFixedThreadPool(maxThreads); + System.out.println("Creating thread pool with " + maxThreads + " threads!"); + String packagePath = + config.getOptionalValue(CONF_PACKAGE_PATH, String.class).orElse(DEFAULT_PACKAGE); Reflections reflections = new Reflections(packagePath); - Set<Class<?>> verifierClasses = reflections.getTypesAnnotatedWith(DmnVerifier.class); + verifierClasses = reflections.getTypesAnnotatedWith(DmnVerifier.class); + } - // TODO: Load configuraion Propertiey dynamicl + public VerifierResultSet generate() { + System.out.println("xxx"); Map<Class<? extends AbstractDmnVerifierConfig>, AbstractDmnVerifierConfig> configs = getConfigs(); + Builder resultBuilder = VerifierResultSet.getBuilder(); + + List<Future<VerifierResult>> results = new ArrayList<>(10); for (Class<?> verifierClass : verifierClasses) { AbstractVerifier av = null; @@ -81,8 +84,7 @@ public class VerificationGenerator { return resultBuilder.build(); } - private static Map<Class<? extends AbstractDmnVerifierConfig>, AbstractDmnVerifierConfig> - getConfigs() { + private Map<Class<? extends AbstractDmnVerifierConfig>, AbstractDmnVerifierConfig> getConfigs() { Map<Class<? extends AbstractDmnVerifierConfig>, AbstractDmnVerifierConfig> map = new ConcurrentHashMap<>(); map.put( diff --git a/dmnverifierapi/src/main/resources/application.properties b/dmnverifierapi/src/main/resources/application.properties index d53a2252..93113c69 100644 --- a/dmnverifierapi/src/main/resources/application.properties +++ b/dmnverifierapi/src/main/resources/application.properties @@ -11,3 +11,4 @@ quarkus.http.cors.methods=GET, OPTIONS # Amount of threads for calculating the verifications verifier.threads=8 %dev.verifier.threads=4 +verifier.package=de.unikoblenz.fgbks.core.dmn.verification.verifier -- GitLab