diff options
Diffstat (limited to 'subprojects')
9 files changed, 39 insertions, 8 deletions
diff --git a/subprojects/logic/src/main/java/tools/refinery/logic/term/Aggregator.java b/subprojects/logic/src/main/java/tools/refinery/logic/term/Aggregator.java index 40189ebc..d99904fd 100644 --- a/subprojects/logic/src/main/java/tools/refinery/logic/term/Aggregator.java +++ b/subprojects/logic/src/main/java/tools/refinery/logic/term/Aggregator.java | |||
@@ -5,6 +5,8 @@ | |||
5 | */ | 5 | */ |
6 | package tools.refinery.logic.term; | 6 | package tools.refinery.logic.term; |
7 | 7 | ||
8 | import org.jetbrains.annotations.NotNull; | ||
9 | |||
8 | import java.util.stream.Stream; | 10 | import java.util.stream.Stream; |
9 | 11 | ||
10 | public interface Aggregator<R, T> { | 12 | public interface Aggregator<R, T> { |
@@ -12,7 +14,9 @@ public interface Aggregator<R, T> { | |||
12 | 14 | ||
13 | Class<T> getInputType(); | 15 | Class<T> getInputType(); |
14 | 16 | ||
17 | @NotNull | ||
15 | R aggregateStream(Stream<T> stream); | 18 | R aggregateStream(Stream<T> stream); |
16 | 19 | ||
20 | @NotNull | ||
17 | R getEmptyResult(); | 21 | R getEmptyResult(); |
18 | } | 22 | } |
diff --git a/subprojects/logic/src/main/java/tools/refinery/logic/term/ExtremeValueAggregator.java b/subprojects/logic/src/main/java/tools/refinery/logic/term/ExtremeValueAggregator.java index 31c61b6a..e163bfea 100644 --- a/subprojects/logic/src/main/java/tools/refinery/logic/term/ExtremeValueAggregator.java +++ b/subprojects/logic/src/main/java/tools/refinery/logic/term/ExtremeValueAggregator.java | |||
@@ -5,6 +5,8 @@ | |||
5 | */ | 5 | */ |
6 | package tools.refinery.logic.term; | 6 | package tools.refinery.logic.term; |
7 | 7 | ||
8 | import org.jetbrains.annotations.NotNull; | ||
9 | |||
8 | import java.util.Comparator; | 10 | import java.util.Comparator; |
9 | import java.util.Objects; | 11 | import java.util.Objects; |
10 | import java.util.SortedMap; | 12 | import java.util.SortedMap; |
@@ -12,14 +14,14 @@ import java.util.TreeMap; | |||
12 | 14 | ||
13 | public class ExtremeValueAggregator<T> implements StatefulAggregator<T, T> { | 15 | public class ExtremeValueAggregator<T> implements StatefulAggregator<T, T> { |
14 | private final Class<T> type; | 16 | private final Class<T> type; |
15 | private final T emptyResult; | 17 | private final @NotNull T emptyResult; |
16 | private final Comparator<T> comparator; | 18 | private final Comparator<T> comparator; |
17 | 19 | ||
18 | public ExtremeValueAggregator(Class<T> type, T emptyResult) { | 20 | public ExtremeValueAggregator(Class<T> type, @NotNull T emptyResult) { |
19 | this(type, emptyResult, null); | 21 | this(type, emptyResult, null); |
20 | } | 22 | } |
21 | 23 | ||
22 | public ExtremeValueAggregator(Class<T> type, T emptyResult, Comparator<T> comparator) { | 24 | public ExtremeValueAggregator(Class<T> type, @NotNull T emptyResult, Comparator<T> comparator) { |
23 | this.type = type; | 25 | this.type = type; |
24 | this.emptyResult = emptyResult; | 26 | this.emptyResult = emptyResult; |
25 | this.comparator = comparator; | 27 | this.comparator = comparator; |
@@ -40,6 +42,7 @@ public class ExtremeValueAggregator<T> implements StatefulAggregator<T, T> { | |||
40 | return new Aggregate(); | 42 | return new Aggregate(); |
41 | } | 43 | } |
42 | 44 | ||
45 | @NotNull | ||
43 | @Override | 46 | @Override |
44 | public T getEmptyResult() { | 47 | public T getEmptyResult() { |
45 | return emptyResult; | 48 | return emptyResult; |
@@ -85,6 +88,7 @@ public class ExtremeValueAggregator<T> implements StatefulAggregator<T, T> { | |||
85 | }); | 88 | }); |
86 | } | 89 | } |
87 | 90 | ||
91 | @NotNull | ||
88 | @Override | 92 | @Override |
89 | public T getResult() { | 93 | public T getResult() { |
90 | return isEmpty() ? emptyResult : values.firstKey(); | 94 | return isEmpty() ? emptyResult : values.firstKey(); |
diff --git a/subprojects/logic/src/main/java/tools/refinery/logic/term/StatefulAggregate.java b/subprojects/logic/src/main/java/tools/refinery/logic/term/StatefulAggregate.java index 75e7ecff..960e8c53 100644 --- a/subprojects/logic/src/main/java/tools/refinery/logic/term/StatefulAggregate.java +++ b/subprojects/logic/src/main/java/tools/refinery/logic/term/StatefulAggregate.java | |||
@@ -5,11 +5,14 @@ | |||
5 | */ | 5 | */ |
6 | package tools.refinery.logic.term; | 6 | package tools.refinery.logic.term; |
7 | 7 | ||
8 | import org.jetbrains.annotations.NotNull; | ||
9 | |||
8 | public interface StatefulAggregate<R, T> { | 10 | public interface StatefulAggregate<R, T> { |
9 | void add(T value); | 11 | void add(T value); |
10 | 12 | ||
11 | void remove(T value); | 13 | void remove(T value); |
12 | 14 | ||
15 | @NotNull | ||
13 | R getResult(); | 16 | R getResult(); |
14 | 17 | ||
15 | boolean isEmpty(); | 18 | boolean isEmpty(); |
diff --git a/subprojects/logic/src/main/java/tools/refinery/logic/term/StatefulAggregator.java b/subprojects/logic/src/main/java/tools/refinery/logic/term/StatefulAggregator.java index 79d32535..2b9243b7 100644 --- a/subprojects/logic/src/main/java/tools/refinery/logic/term/StatefulAggregator.java +++ b/subprojects/logic/src/main/java/tools/refinery/logic/term/StatefulAggregator.java | |||
@@ -5,11 +5,14 @@ | |||
5 | */ | 5 | */ |
6 | package tools.refinery.logic.term; | 6 | package tools.refinery.logic.term; |
7 | 7 | ||
8 | import org.jetbrains.annotations.NotNull; | ||
9 | |||
8 | import java.util.stream.Stream; | 10 | import java.util.stream.Stream; |
9 | 11 | ||
10 | public interface StatefulAggregator<R, T> extends Aggregator<R, T> { | 12 | public interface StatefulAggregator<R, T> extends Aggregator<R, T> { |
11 | StatefulAggregate<R, T> createEmptyAggregate(); | 13 | StatefulAggregate<R, T> createEmptyAggregate(); |
12 | 14 | ||
15 | @NotNull | ||
13 | @Override | 16 | @Override |
14 | default R aggregateStream(Stream<T> stream) { | 17 | default R aggregateStream(Stream<T> stream) { |
15 | var accumulator = createEmptyAggregate(); | 18 | var accumulator = createEmptyAggregate(); |
@@ -21,6 +24,7 @@ public interface StatefulAggregator<R, T> extends Aggregator<R, T> { | |||
21 | return accumulator.getResult(); | 24 | return accumulator.getResult(); |
22 | } | 25 | } |
23 | 26 | ||
27 | @NotNull | ||
24 | @Override | 28 | @Override |
25 | default R getEmptyResult() { | 29 | default R getEmptyResult() { |
26 | return createEmptyAggregate().getResult(); | 30 | return createEmptyAggregate().getResult(); |
diff --git a/subprojects/logic/src/main/java/tools/refinery/logic/term/StatelessAggregator.java b/subprojects/logic/src/main/java/tools/refinery/logic/term/StatelessAggregator.java index 37db262e..e489378b 100644 --- a/subprojects/logic/src/main/java/tools/refinery/logic/term/StatelessAggregator.java +++ b/subprojects/logic/src/main/java/tools/refinery/logic/term/StatelessAggregator.java | |||
@@ -5,6 +5,8 @@ | |||
5 | */ | 5 | */ |
6 | package tools.refinery.logic.term; | 6 | package tools.refinery.logic.term; |
7 | 7 | ||
8 | import org.jetbrains.annotations.NotNull; | ||
9 | |||
8 | import java.util.stream.Stream; | 10 | import java.util.stream.Stream; |
9 | 11 | ||
10 | public interface StatelessAggregator<R, T> extends Aggregator<R, T> { | 12 | public interface StatelessAggregator<R, T> extends Aggregator<R, T> { |
@@ -12,6 +14,7 @@ public interface StatelessAggregator<R, T> extends Aggregator<R, T> { | |||
12 | 14 | ||
13 | R remove(R current, T value); | 15 | R remove(R current, T value); |
14 | 16 | ||
17 | @NotNull | ||
15 | @Override | 18 | @Override |
16 | default R aggregateStream(Stream<T> stream) { | 19 | default R aggregateStream(Stream<T> stream) { |
17 | var accumulator = getEmptyResult(); | 20 | var accumulator = getEmptyResult(); |
diff --git a/subprojects/logic/src/main/java/tools/refinery/logic/term/int_/IntSumAggregator.java b/subprojects/logic/src/main/java/tools/refinery/logic/term/int_/IntSumAggregator.java index b42038ab..d4462587 100644 --- a/subprojects/logic/src/main/java/tools/refinery/logic/term/int_/IntSumAggregator.java +++ b/subprojects/logic/src/main/java/tools/refinery/logic/term/int_/IntSumAggregator.java | |||
@@ -5,8 +5,11 @@ | |||
5 | */ | 5 | */ |
6 | package tools.refinery.logic.term.int_; | 6 | package tools.refinery.logic.term.int_; |
7 | 7 | ||
8 | import org.jetbrains.annotations.NotNull; | ||
8 | import tools.refinery.logic.term.StatelessAggregator; | 9 | import tools.refinery.logic.term.StatelessAggregator; |
9 | 10 | ||
11 | // Singleton implementation, since there is only one way to sum integers. | ||
12 | @SuppressWarnings("squid:S6548") | ||
10 | public final class IntSumAggregator implements StatelessAggregator<Integer, Integer> { | 13 | public final class IntSumAggregator implements StatelessAggregator<Integer, Integer> { |
11 | public static final IntSumAggregator INSTANCE = new IntSumAggregator(); | 14 | public static final IntSumAggregator INSTANCE = new IntSumAggregator(); |
12 | 15 | ||
@@ -23,6 +26,7 @@ public final class IntSumAggregator implements StatelessAggregator<Integer, Inte | |||
23 | return Integer.class; | 26 | return Integer.class; |
24 | } | 27 | } |
25 | 28 | ||
29 | @NotNull | ||
26 | @Override | 30 | @Override |
27 | public Integer getEmptyResult() { | 31 | public Integer getEmptyResult() { |
28 | return 0; | 32 | return 0; |
diff --git a/subprojects/logic/src/main/java/tools/refinery/logic/term/real/RealSumAggregator.java b/subprojects/logic/src/main/java/tools/refinery/logic/term/real/RealSumAggregator.java index 4b090188..b6f79270 100644 --- a/subprojects/logic/src/main/java/tools/refinery/logic/term/real/RealSumAggregator.java +++ b/subprojects/logic/src/main/java/tools/refinery/logic/term/real/RealSumAggregator.java | |||
@@ -5,12 +5,15 @@ | |||
5 | */ | 5 | */ |
6 | package tools.refinery.logic.term.real; | 6 | package tools.refinery.logic.term.real; |
7 | 7 | ||
8 | import org.jetbrains.annotations.NotNull; | ||
8 | import tools.refinery.logic.term.StatefulAggregate; | 9 | import tools.refinery.logic.term.StatefulAggregate; |
9 | import tools.refinery.logic.term.StatefulAggregator; | 10 | import tools.refinery.logic.term.StatefulAggregator; |
10 | 11 | ||
11 | import java.util.Map; | 12 | import java.util.Map; |
12 | import java.util.TreeMap; | 13 | import java.util.TreeMap; |
13 | 14 | ||
15 | // Singleton implementation, since there is only one way to sum reals. | ||
16 | @SuppressWarnings("squid:S6548") | ||
14 | public final class RealSumAggregator implements StatefulAggregator<Double, Double> { | 17 | public final class RealSumAggregator implements StatefulAggregator<Double, Double> { |
15 | public static final RealSumAggregator INSTANCE = new RealSumAggregator(); | 18 | public static final RealSumAggregator INSTANCE = new RealSumAggregator(); |
16 | 19 | ||
@@ -32,6 +35,7 @@ public final class RealSumAggregator implements StatefulAggregator<Double, Doubl | |||
32 | return new Aggregate(); | 35 | return new Aggregate(); |
33 | } | 36 | } |
34 | 37 | ||
38 | @NotNull | ||
35 | @Override | 39 | @Override |
36 | public Double getEmptyResult() { | 40 | public Double getEmptyResult() { |
37 | return 0d; | 41 | return 0d; |
@@ -63,6 +67,7 @@ public final class RealSumAggregator implements StatefulAggregator<Double, Doubl | |||
63 | }); | 67 | }); |
64 | } | 68 | } |
65 | 69 | ||
70 | @NotNull | ||
66 | @Override | 71 | @Override |
67 | public Double getResult() { | 72 | public Double getResult() { |
68 | return values.entrySet() | 73 | return values.entrySet() |
diff --git a/subprojects/logic/src/main/java/tools/refinery/logic/term/uppercardinality/UpperCardinalitySumAggregator.java b/subprojects/logic/src/main/java/tools/refinery/logic/term/uppercardinality/UpperCardinalitySumAggregator.java index 7c45e6ef..846e954b 100644 --- a/subprojects/logic/src/main/java/tools/refinery/logic/term/uppercardinality/UpperCardinalitySumAggregator.java +++ b/subprojects/logic/src/main/java/tools/refinery/logic/term/uppercardinality/UpperCardinalitySumAggregator.java | |||
@@ -5,10 +5,11 @@ | |||
5 | */ | 5 | */ |
6 | package tools.refinery.logic.term.uppercardinality; | 6 | package tools.refinery.logic.term.uppercardinality; |
7 | 7 | ||
8 | import org.jetbrains.annotations.NotNull; | ||
8 | import tools.refinery.logic.term.StatefulAggregate; | 9 | import tools.refinery.logic.term.StatefulAggregate; |
9 | import tools.refinery.logic.term.StatefulAggregator; | 10 | import tools.refinery.logic.term.StatefulAggregator; |
10 | 11 | ||
11 | // Singleton implementation, since there is only one way to aggregate upper cardinalities. | 12 | // Singleton implementation, since there is only one way to sum upper cardinalities. |
12 | @SuppressWarnings("squid:S6548") | 13 | @SuppressWarnings("squid:S6548") |
13 | public class UpperCardinalitySumAggregator implements StatefulAggregator<UpperCardinality, UpperCardinality> { | 14 | public class UpperCardinalitySumAggregator implements StatefulAggregator<UpperCardinality, UpperCardinality> { |
14 | public static final UpperCardinalitySumAggregator INSTANCE = new UpperCardinalitySumAggregator(); | 15 | public static final UpperCardinalitySumAggregator INSTANCE = new UpperCardinalitySumAggregator(); |
@@ -46,8 +47,8 @@ public class UpperCardinalitySumAggregator implements StatefulAggregator<UpperCa | |||
46 | 47 | ||
47 | @Override | 48 | @Override |
48 | public void add(UpperCardinality value) { | 49 | public void add(UpperCardinality value) { |
49 | if (value instanceof FiniteUpperCardinality finiteUpperCardinality) { | 50 | if (value instanceof FiniteUpperCardinality(var finiteUpperBound)) { |
50 | sumFiniteUpperBounds += finiteUpperCardinality.finiteUpperBound(); | 51 | sumFiniteUpperBounds += finiteUpperBound; |
51 | } else if (value instanceof UnboundedUpperCardinality) { | 52 | } else if (value instanceof UnboundedUpperCardinality) { |
52 | countUnbounded += 1; | 53 | countUnbounded += 1; |
53 | } else { | 54 | } else { |
@@ -57,8 +58,8 @@ public class UpperCardinalitySumAggregator implements StatefulAggregator<UpperCa | |||
57 | 58 | ||
58 | @Override | 59 | @Override |
59 | public void remove(UpperCardinality value) { | 60 | public void remove(UpperCardinality value) { |
60 | if (value instanceof FiniteUpperCardinality finiteUpperCardinality) { | 61 | if (value instanceof FiniteUpperCardinality(var finiteUpperBound)) { |
61 | sumFiniteUpperBounds -= finiteUpperCardinality.finiteUpperBound(); | 62 | sumFiniteUpperBounds -= finiteUpperBound; |
62 | } else if (value instanceof UnboundedUpperCardinality) { | 63 | } else if (value instanceof UnboundedUpperCardinality) { |
63 | countUnbounded -= 1; | 64 | countUnbounded -= 1; |
64 | } else { | 65 | } else { |
@@ -66,6 +67,7 @@ public class UpperCardinalitySumAggregator implements StatefulAggregator<UpperCa | |||
66 | } | 67 | } |
67 | } | 68 | } |
68 | 69 | ||
70 | @NotNull | ||
69 | @Override | 71 | @Override |
70 | public UpperCardinality getResult() { | 72 | public UpperCardinality getResult() { |
71 | return countUnbounded > 0 ? UpperCardinalities.UNBOUNDED : UpperCardinalities.atMost(sumFiniteUpperBounds); | 73 | return countUnbounded > 0 ? UpperCardinalities.UNBOUNDED : UpperCardinalities.atMost(sumFiniteUpperBounds); |
diff --git a/subprojects/store-query-interpreter/src/test/java/tools/refinery/store/query/interpreter/AggregatorBatchingTest.java b/subprojects/store-query-interpreter/src/test/java/tools/refinery/store/query/interpreter/AggregatorBatchingTest.java index 209d7ac0..0bdd2148 100644 --- a/subprojects/store-query-interpreter/src/test/java/tools/refinery/store/query/interpreter/AggregatorBatchingTest.java +++ b/subprojects/store-query-interpreter/src/test/java/tools/refinery/store/query/interpreter/AggregatorBatchingTest.java | |||
@@ -5,6 +5,7 @@ | |||
5 | */ | 5 | */ |
6 | package tools.refinery.store.query.interpreter; | 6 | package tools.refinery.store.query.interpreter; |
7 | 7 | ||
8 | import org.jetbrains.annotations.NotNull; | ||
8 | import org.junit.jupiter.api.Test; | 9 | import org.junit.jupiter.api.Test; |
9 | import tools.refinery.store.model.Model; | 10 | import tools.refinery.store.model.Model; |
10 | import tools.refinery.store.model.ModelStore; | 11 | import tools.refinery.store.model.ModelStore; |
@@ -167,6 +168,7 @@ class AggregatorBatchingTest { | |||
167 | sum -= value; | 168 | sum -= value; |
168 | } | 169 | } |
169 | 170 | ||
171 | @NotNull | ||
170 | @Override | 172 | @Override |
171 | public Integer getResult() { | 173 | public Integer getResult() { |
172 | extractCount++; | 174 | extractCount++; |