diff options
author | Kristóf Marussy <kristof@marussy.com> | 2023-09-11 19:22:26 +0200 |
---|---|---|
committer | Kristóf Marussy <kristof@marussy.com> | 2023-09-11 19:22:26 +0200 |
commit | 4d365b54dad8d066bba2a2b1a05092b4802b9970 (patch) | |
tree | 12e5ae36b0041463ded54e7a69dcdc9f3662794f /subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiObjectInitializer.java | |
parent | fix: build failures after integrating generation (diff) | |
download | refinery-4d365b54dad8d066bba2a2b1a05092b4802b9970.tar.gz refinery-4d365b54dad8d066bba2a2b1a05092b4802b9970.tar.zst refinery-4d365b54dad8d066bba2a2b1a05092b4802b9970.zip |
feat: cancellation token for ModelStore
Diffstat (limited to 'subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiObjectInitializer.java')
-rw-r--r-- | subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiObjectInitializer.java | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiObjectInitializer.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiObjectInitializer.java index f11ab46b..89918155 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiObjectInitializer.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiObjectInitializer.java | |||
@@ -30,9 +30,9 @@ class MultiObjectInitializer implements PartialModelInitializer { | |||
30 | 30 | ||
31 | @Override | 31 | @Override |
32 | public void initialize(Model model, ModelSeed modelSeed) { | 32 | public void initialize(Model model, ModelSeed modelSeed) { |
33 | var intervals = initializeIntervals(modelSeed); | 33 | var intervals = initializeIntervals(model, modelSeed); |
34 | initializeExists(intervals, modelSeed); | 34 | initializeExists(intervals, model, modelSeed); |
35 | initializeEquals(intervals, modelSeed); | 35 | initializeEquals(intervals, model, modelSeed); |
36 | var countInterpretation = model.getInterpretation(countSymbol); | 36 | var countInterpretation = model.getInterpretation(countSymbol); |
37 | var uniqueTable = new HashMap<CardinalityInterval, CardinalityInterval>(); | 37 | var uniqueTable = new HashMap<CardinalityInterval, CardinalityInterval>(); |
38 | for (int i = 0; i < intervals.length; i++) { | 38 | for (int i = 0; i < intervals.length; i++) { |
@@ -47,12 +47,13 @@ class MultiObjectInitializer implements PartialModelInitializer { | |||
47 | } | 47 | } |
48 | 48 | ||
49 | @NotNull | 49 | @NotNull |
50 | private CardinalityInterval[] initializeIntervals(ModelSeed modelSeed) { | 50 | private CardinalityInterval[] initializeIntervals(Model model, ModelSeed modelSeed) { |
51 | var intervals = new CardinalityInterval[modelSeed.getNodeCount()]; | 51 | var intervals = new CardinalityInterval[modelSeed.getNodeCount()]; |
52 | if (modelSeed.containsSeed(MultiObjectTranslator.COUNT_SYMBOL)) { | 52 | if (modelSeed.containsSeed(MultiObjectTranslator.COUNT_SYMBOL)) { |
53 | Arrays.fill(intervals, CardinalityIntervals.ONE); | 53 | Arrays.fill(intervals, CardinalityIntervals.ONE); |
54 | var cursor = modelSeed.getCursor(MultiObjectTranslator.COUNT_SYMBOL, CardinalityIntervals.ONE); | 54 | var cursor = modelSeed.getCursor(MultiObjectTranslator.COUNT_SYMBOL, CardinalityIntervals.ONE); |
55 | while (cursor.move()) { | 55 | while (cursor.move()) { |
56 | model.checkCancelled(); | ||
56 | int i = cursor.getKey().get(0); | 57 | int i = cursor.getKey().get(0); |
57 | checkNodeId(intervals, i); | 58 | checkNodeId(intervals, i); |
58 | intervals[i] = cursor.getValue(); | 59 | intervals[i] = cursor.getValue(); |
@@ -70,12 +71,13 @@ class MultiObjectInitializer implements PartialModelInitializer { | |||
70 | return intervals; | 71 | return intervals; |
71 | } | 72 | } |
72 | 73 | ||
73 | private void initializeExists(CardinalityInterval[] intervals, ModelSeed modelSeed) { | 74 | private void initializeExists(CardinalityInterval[] intervals, Model model, ModelSeed modelSeed) { |
74 | if (!modelSeed.containsSeed(ReasoningAdapter.EXISTS_SYMBOL)) { | 75 | if (!modelSeed.containsSeed(ReasoningAdapter.EXISTS_SYMBOL)) { |
75 | return; | 76 | return; |
76 | } | 77 | } |
77 | var cursor = modelSeed.getCursor(ReasoningAdapter.EXISTS_SYMBOL, TruthValue.UNKNOWN); | 78 | var cursor = modelSeed.getCursor(ReasoningAdapter.EXISTS_SYMBOL, TruthValue.UNKNOWN); |
78 | while (cursor.move()) { | 79 | while (cursor.move()) { |
80 | model.checkCancelled(); | ||
79 | int i = cursor.getKey().get(0); | 81 | int i = cursor.getKey().get(0); |
80 | checkNodeId(intervals, i); | 82 | checkNodeId(intervals, i); |
81 | switch (cursor.getValue()) { | 83 | switch (cursor.getValue()) { |
@@ -89,13 +91,14 @@ class MultiObjectInitializer implements PartialModelInitializer { | |||
89 | } | 91 | } |
90 | } | 92 | } |
91 | 93 | ||
92 | private void initializeEquals(CardinalityInterval[] intervals, ModelSeed modelSeed) { | 94 | private void initializeEquals(CardinalityInterval[] intervals, Model model, ModelSeed modelSeed) { |
93 | if (!modelSeed.containsSeed(ReasoningAdapter.EQUALS_SYMBOL)) { | 95 | if (!modelSeed.containsSeed(ReasoningAdapter.EQUALS_SYMBOL)) { |
94 | return; | 96 | return; |
95 | } | 97 | } |
96 | var seed = modelSeed.getSeed(ReasoningAdapter.EQUALS_SYMBOL); | 98 | var seed = modelSeed.getSeed(ReasoningAdapter.EQUALS_SYMBOL); |
97 | var cursor = seed.getCursor(TruthValue.FALSE, modelSeed.getNodeCount()); | 99 | var cursor = seed.getCursor(TruthValue.FALSE, modelSeed.getNodeCount()); |
98 | while (cursor.move()) { | 100 | while (cursor.move()) { |
101 | model.checkCancelled(); | ||
99 | var key = cursor.getKey(); | 102 | var key = cursor.getKey(); |
100 | int i = key.get(0); | 103 | int i = key.get(0); |
101 | int otherIndex = key.get(1); | 104 | int otherIndex = key.get(1); |
@@ -116,6 +119,7 @@ class MultiObjectInitializer implements PartialModelInitializer { | |||
116 | } | 119 | } |
117 | } | 120 | } |
118 | for (int i = 0; i < intervals.length; i++) { | 121 | for (int i = 0; i < intervals.length; i++) { |
122 | model.checkCancelled(); | ||
119 | if (seed.get(Tuple.of(i, i)) == TruthValue.FALSE) { | 123 | if (seed.get(Tuple.of(i, i)) == TruthValue.FALSE) { |
120 | throw new TranslationException(ReasoningAdapter.EQUALS_SYMBOL, "Inconsistent equality for node " + i); | 124 | throw new TranslationException(ReasoningAdapter.EQUALS_SYMBOL, "Inconsistent equality for node " + i); |
121 | } | 125 | } |