Skip to content
Snippets Groups Projects
Commit 8c75607e authored by Jonas Blatt's avatar Jonas Blatt :ant:
Browse files

Create Builder for dmn pojos

parent b3296f38
No related branches found
No related tags found
No related merge requests found
Showing
with 234 additions and 40 deletions
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
......
......@@ -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();
......
......@@ -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();
......
......@@ -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();
}
package de.unikoblenz.fgbks.core.dmn.domain.values;
public interface VDmnElement {}
......@@ -6,5 +6,7 @@ public interface VDmnInputValue extends VDmnValue {
InputEntryId getInputEntryId();
VDmnInputColumn getDmnInput();
default VDmnInputColumn getDmnInputColumn() {
return (VDmnInputColumn) getDmnColumn();
}
}
......@@ -6,5 +6,7 @@ public interface VDmnOutputValue extends VDmnValue {
OutputEntryId getOutputEntryId();
VDmnOutputColumn getDmnOutput();
default VDmnOutputColumn getDmnOutputColumn() {
return (VDmnOutputColumn) getDmnColumn();
}
}
......@@ -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();
......
......@@ -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();
......
package de.unikoblenz.fgbks.core.dmn.domain.values.impl;
import de.unikoblenz.fgbks.base.builder.DefaultBuilder;
public abstract class DmnElementBuilder<E> extends DefaultBuilder<E> {}
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;
......
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();
}
}
}
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;
......
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);
}
}
}
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;
......
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);
}
}
}
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;
}
......
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;
}
}
......@@ -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(
......
......@@ -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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment