aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/store-dse/src/main/java/tools/refinery/store/dse/transition/DesignSpaceExplorationBuilder.java
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/store-dse/src/main/java/tools/refinery/store/dse/transition/DesignSpaceExplorationBuilder.java')
-rw-r--r--subprojects/store-dse/src/main/java/tools/refinery/store/dse/transition/DesignSpaceExplorationBuilder.java61
1 files changed, 61 insertions, 0 deletions
diff --git a/subprojects/store-dse/src/main/java/tools/refinery/store/dse/transition/DesignSpaceExplorationBuilder.java b/subprojects/store-dse/src/main/java/tools/refinery/store/dse/transition/DesignSpaceExplorationBuilder.java
new file mode 100644
index 00000000..800cf8f7
--- /dev/null
+++ b/subprojects/store-dse/src/main/java/tools/refinery/store/dse/transition/DesignSpaceExplorationBuilder.java
@@ -0,0 +1,61 @@
1/*
2 * SPDX-FileCopyrightText: 2023 The Refinery Authors <https://refinery.tools/>
3 *
4 * SPDX-License-Identifier: EPL-2.0
5 */
6package tools.refinery.store.dse.transition;
7
8import tools.refinery.store.adapter.ModelAdapterBuilder;
9import tools.refinery.store.dse.transition.objectives.Criterion;
10import tools.refinery.store.dse.transition.objectives.Objective;
11
12import java.util.Collection;
13import java.util.List;
14
15// Builder pattern with methods returning {@code this} for convenience.
16@SuppressWarnings("UnusedReturnValue")
17public interface DesignSpaceExplorationBuilder extends ModelAdapterBuilder {
18 DesignSpaceExplorationBuilder transformation(Rule transformationRuleDefinition);
19
20 default DesignSpaceExplorationBuilder transformations(Rule... transformationRuleDefinitions) {
21 return transformations(List.of(transformationRuleDefinitions));
22 }
23
24 default DesignSpaceExplorationBuilder transformations(Collection<? extends Rule> transformationRules) {
25 transformationRules.forEach(this::transformation);
26 return this;
27 }
28
29 DesignSpaceExplorationBuilder accept(Criterion criteria);
30
31 default DesignSpaceExplorationBuilder accept(Criterion... criteria) {
32 return accept(List.of(criteria));
33 }
34
35 default DesignSpaceExplorationBuilder accept(Collection<Criterion> criteria) {
36 criteria.forEach(this::accept);
37 return this;
38 }
39
40 DesignSpaceExplorationBuilder exclude(Criterion criteria);
41
42 default DesignSpaceExplorationBuilder exclude(Criterion... criteria) {
43 return exclude(List.of(criteria));
44 }
45
46 default DesignSpaceExplorationBuilder exclude(Collection<Criterion> criteria) {
47 criteria.forEach(this::exclude);
48 return this;
49 }
50
51 DesignSpaceExplorationBuilder objective(Objective objective);
52
53 default DesignSpaceExplorationBuilder objectives(Objective... objectives) {
54 return objectives(List.of(objectives));
55 }
56
57 default DesignSpaceExplorationBuilder objectives(Collection<? extends Objective> objectives) {
58 objectives.forEach(this::objective);
59 return this;
60 }
61}