diff options
Diffstat (limited to 'subprojects/language-web/src')
2 files changed, 4 insertions, 104 deletions
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/semantics/CancellableSeed.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/semantics/CancellableSeed.java deleted file mode 100644 index aa14f39d..00000000 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/semantics/CancellableSeed.java +++ /dev/null | |||
@@ -1,99 +0,0 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.language.web.semantics; | ||
7 | |||
8 | import tools.refinery.store.map.AnyVersionedMap; | ||
9 | import tools.refinery.store.map.Cursor; | ||
10 | import tools.refinery.store.reasoning.representation.PartialSymbol; | ||
11 | import tools.refinery.store.reasoning.seed.ModelSeed; | ||
12 | import tools.refinery.store.reasoning.seed.Seed; | ||
13 | import tools.refinery.store.tuple.Tuple; | ||
14 | import tools.refinery.viatra.runtime.CancellationToken; | ||
15 | |||
16 | import java.util.Set; | ||
17 | |||
18 | class CancellableSeed<T> implements Seed<T> { | ||
19 | private final CancellationToken cancellationToken; | ||
20 | private final Seed<T> seed; | ||
21 | |||
22 | private CancellableSeed(CancellationToken cancellationToken, Seed<T> seed) { | ||
23 | this.cancellationToken = cancellationToken; | ||
24 | this.seed = seed; | ||
25 | } | ||
26 | |||
27 | @Override | ||
28 | public int arity() { | ||
29 | return seed.arity(); | ||
30 | } | ||
31 | |||
32 | @Override | ||
33 | public Class<T> valueType() { | ||
34 | return seed.valueType(); | ||
35 | } | ||
36 | |||
37 | @Override | ||
38 | public T reducedValue() { | ||
39 | return seed.reducedValue(); | ||
40 | } | ||
41 | |||
42 | @Override | ||
43 | public T get(Tuple key) { | ||
44 | return seed.get(key); | ||
45 | } | ||
46 | |||
47 | @Override | ||
48 | public Cursor<Tuple, T> getCursor(T defaultValue, int nodeCount) { | ||
49 | return new CancellableCursor<>(cancellationToken, seed.getCursor(defaultValue, nodeCount)); | ||
50 | } | ||
51 | |||
52 | public static ModelSeed wrap(CancellationToken cancellationToken, ModelSeed modelSeed) { | ||
53 | var builder = ModelSeed.builder(modelSeed.getNodeCount()); | ||
54 | for (var partialSymbol : modelSeed.getSeededSymbols()) { | ||
55 | wrap(cancellationToken, (PartialSymbol<?, ?>) partialSymbol, modelSeed, builder); | ||
56 | } | ||
57 | return builder.build(); | ||
58 | } | ||
59 | |||
60 | private static <A, C> void wrap(CancellationToken cancellationToken, PartialSymbol<A, C> partialSymbol, | ||
61 | ModelSeed originalModelSeed, ModelSeed.Builder builder) { | ||
62 | var originalSeed = originalModelSeed.getSeed(partialSymbol); | ||
63 | builder.seed(partialSymbol, new CancellableSeed<>(cancellationToken, originalSeed)); | ||
64 | } | ||
65 | |||
66 | private record CancellableCursor<T>(CancellationToken cancellationToken, Cursor<Tuple, T> cursor) | ||
67 | implements Cursor<Tuple, T> { | ||
68 | @Override | ||
69 | public Tuple getKey() { | ||
70 | return cursor.getKey(); | ||
71 | } | ||
72 | |||
73 | @Override | ||
74 | public T getValue() { | ||
75 | return cursor.getValue(); | ||
76 | } | ||
77 | |||
78 | @Override | ||
79 | public boolean isTerminated() { | ||
80 | return cursor.isTerminated(); | ||
81 | } | ||
82 | |||
83 | @Override | ||
84 | public boolean move() { | ||
85 | cancellationToken.checkCancelled(); | ||
86 | return cursor.move(); | ||
87 | } | ||
88 | |||
89 | @Override | ||
90 | public boolean isDirty() { | ||
91 | return cursor.isDirty(); | ||
92 | } | ||
93 | |||
94 | @Override | ||
95 | public Set<AnyVersionedMap> getDependingMaps() { | ||
96 | return cursor.getDependingMaps(); | ||
97 | } | ||
98 | } | ||
99 | } | ||
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/semantics/SemanticsWorker.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/semantics/SemanticsWorker.java index c745d86e..33b1c4fb 100644 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/semantics/SemanticsWorker.java +++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/semantics/SemanticsWorker.java | |||
@@ -34,7 +34,7 @@ import tools.refinery.store.reasoning.representation.PartialRelation; | |||
34 | import tools.refinery.store.reasoning.translator.TranslationException; | 34 | import tools.refinery.store.reasoning.translator.TranslationException; |
35 | import tools.refinery.store.reasoning.translator.multiobject.MultiObjectTranslator; | 35 | import tools.refinery.store.reasoning.translator.multiobject.MultiObjectTranslator; |
36 | import tools.refinery.store.tuple.Tuple; | 36 | import tools.refinery.store.tuple.Tuple; |
37 | import tools.refinery.viatra.runtime.CancellationToken; | 37 | import tools.refinery.store.util.CancellationToken; |
38 | 38 | ||
39 | import java.util.ArrayList; | 39 | import java.util.ArrayList; |
40 | import java.util.TreeMap; | 40 | import java.util.TreeMap; |
@@ -74,8 +74,8 @@ class SemanticsWorker implements Callable<SemanticsResult> { | |||
74 | @Override | 74 | @Override |
75 | public SemanticsResult call() { | 75 | public SemanticsResult call() { |
76 | var builder = ModelStore.builder() | 76 | var builder = ModelStore.builder() |
77 | .with(ViatraModelQueryAdapter.builder() | 77 | .cancellationToken(cancellationToken) |
78 | .cancellationToken(cancellationToken)) | 78 | .with(ViatraModelQueryAdapter.builder()) |
79 | .with(PropagationAdapter.builder()) | 79 | .with(PropagationAdapter.builder()) |
80 | .with(ReasoningAdapter.builder() | 80 | .with(ReasoningAdapter.builder() |
81 | .requiredInterpretations(Concreteness.PARTIAL)); | 81 | .requiredInterpretations(Concreteness.PARTIAL)); |
@@ -91,8 +91,7 @@ class SemanticsWorker implements Callable<SemanticsResult> { | |||
91 | cancellationToken.checkCancelled(); | 91 | cancellationToken.checkCancelled(); |
92 | var store = builder.build(); | 92 | var store = builder.build(); |
93 | cancellationToken.checkCancelled(); | 93 | cancellationToken.checkCancelled(); |
94 | var cancellableModelSeed = CancellableSeed.wrap(cancellationToken, modelSeed); | 94 | var model = store.getAdapter(ReasoningStoreAdapter.class).createInitialModel(modelSeed); |
95 | var model = store.getAdapter(ReasoningStoreAdapter.class).createInitialModel(cancellableModelSeed); | ||
96 | cancellationToken.checkCancelled(); | 95 | cancellationToken.checkCancelled(); |
97 | var partialInterpretation = getPartialInterpretation(initializer, model); | 96 | var partialInterpretation = getPartialInterpretation(initializer, model); |
98 | 97 | ||