aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/generator
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2024-06-28 19:43:52 +0200
committerLibravatar Kristóf Marussy <kristof@marussy.com>2024-06-28 21:44:58 +0200
commit6095f6eca9ae96f94d1afdcba9971ac2ec4d8c5b (patch)
tree1ed444c895dd6b383299397b5a97acc11aea5a33 /subprojects/generator
parentrefactor: show semantics even if propagation fails (diff)
downloadrefinery-6095f6eca9ae96f94d1afdcba9971ac2ec4d8c5b.tar.gz
refinery-6095f6eca9ae96f94d1afdcba9971ac2ec4d8c5b.tar.zst
refinery-6095f6eca9ae96f94d1afdcba9971ac2ec4d8c5b.zip
refactor: improve propagation traceability
Diffstat (limited to 'subprojects/generator')
-rw-r--r--subprojects/generator/src/main/java/tools/refinery/generator/ModelFacade.java13
-rw-r--r--subprojects/generator/src/main/java/tools/refinery/generator/ModelGeneratorFactory.java2
-rw-r--r--subprojects/generator/src/main/java/tools/refinery/generator/ModelSemanticsFactory.java2
3 files changed, 8 insertions, 9 deletions
diff --git a/subprojects/generator/src/main/java/tools/refinery/generator/ModelFacade.java b/subprojects/generator/src/main/java/tools/refinery/generator/ModelFacade.java
index 459503cd..15f7b4c4 100644
--- a/subprojects/generator/src/main/java/tools/refinery/generator/ModelFacade.java
+++ b/subprojects/generator/src/main/java/tools/refinery/generator/ModelFacade.java
@@ -7,6 +7,7 @@ package tools.refinery.generator;
7 7
8import tools.refinery.language.semantics.ProblemTrace; 8import tools.refinery.language.semantics.ProblemTrace;
9import tools.refinery.logic.AbstractValue; 9import tools.refinery.logic.AbstractValue;
10import tools.refinery.store.dse.propagation.PropagationResult;
10import tools.refinery.store.model.Model; 11import tools.refinery.store.model.Model;
11import tools.refinery.store.model.ModelStore; 12import tools.refinery.store.model.ModelStore;
12import tools.refinery.store.reasoning.ReasoningAdapter; 13import tools.refinery.store.reasoning.ReasoningAdapter;
@@ -21,7 +22,7 @@ import tools.refinery.store.reasoning.translator.TranslationException;
21public abstract class ModelFacade { 22public abstract class ModelFacade {
22 private final ProblemTrace problemTrace; 23 private final ProblemTrace problemTrace;
23 private final ModelStore store; 24 private final ModelStore store;
24 private final PropagatedModel propagatedModel; 25 private final PropagationResult propagationResult;
25 private final Model model; 26 private final Model model;
26 private final ReasoningAdapter reasoningAdapter; 27 private final ReasoningAdapter reasoningAdapter;
27 private final Concreteness concreteness; 28 private final Concreteness concreteness;
@@ -30,12 +31,14 @@ public abstract class ModelFacade {
30 Concreteness concreteness) { 31 Concreteness concreteness) {
31 this.problemTrace = problemTrace; 32 this.problemTrace = problemTrace;
32 this.store = store; 33 this.store = store;
34 PropagatedModel propagatedModel;
33 try { 35 try {
34 propagatedModel = store.getAdapter(ReasoningStoreAdapter.class).tryCreateInitialModel(modelSeed); 36 propagatedModel = store.getAdapter(ReasoningStoreAdapter.class).tryCreateInitialModel(modelSeed);
35 } catch (TranslationException e) { 37 } catch (TranslationException e) {
36 throw problemTrace.wrapException(e); 38 throw problemTrace.wrapException(e);
37 } 39 }
38 model = propagatedModel.model(); 40 model = propagatedModel.model();
41 propagationResult = propagatedModel.propagationResult();
39 reasoningAdapter = model.getAdapter(ReasoningAdapter.class); 42 reasoningAdapter = model.getAdapter(ReasoningAdapter.class);
40 this.concreteness = concreteness; 43 this.concreteness = concreteness;
41 } 44 }
@@ -52,12 +55,8 @@ public abstract class ModelFacade {
52 return model; 55 return model;
53 } 56 }
54 57
55 public boolean isRejected() { 58 public PropagationResult getPropagationResult() {
56 return propagatedModel.isRejected(); 59 return propagationResult;
57 }
58
59 public void throwIfRejected() {
60 propagatedModel.throwIfRejected();
61 } 60 }
62 61
63 public Concreteness getConcreteness() { 62 public Concreteness getConcreteness() {
diff --git a/subprojects/generator/src/main/java/tools/refinery/generator/ModelGeneratorFactory.java b/subprojects/generator/src/main/java/tools/refinery/generator/ModelGeneratorFactory.java
index 1b222204..0a1b4396 100644
--- a/subprojects/generator/src/main/java/tools/refinery/generator/ModelGeneratorFactory.java
+++ b/subprojects/generator/src/main/java/tools/refinery/generator/ModelGeneratorFactory.java
@@ -80,7 +80,7 @@ public final class ModelGeneratorFactory {
80 var store = storeBuilder.build(); 80 var store = storeBuilder.build();
81 var generator = new ModelGenerator(initializer.getProblemTrace(), store, initializer.getModelSeed(), 81 var generator = new ModelGenerator(initializer.getProblemTrace(), store, initializer.getModelSeed(),
82 solutionSerializerProvider); 82 solutionSerializerProvider);
83 generator.throwIfRejected(); 83 generator.getPropagationResult().throwIfRejected();
84 return generator; 84 return generator;
85 } 85 }
86 86
diff --git a/subprojects/generator/src/main/java/tools/refinery/generator/ModelSemanticsFactory.java b/subprojects/generator/src/main/java/tools/refinery/generator/ModelSemanticsFactory.java
index 20f404f3..77f05a9d 100644
--- a/subprojects/generator/src/main/java/tools/refinery/generator/ModelSemanticsFactory.java
+++ b/subprojects/generator/src/main/java/tools/refinery/generator/ModelSemanticsFactory.java
@@ -31,7 +31,7 @@ public final class ModelSemanticsFactory {
31 31
32 public ModelSemantics createSemantics(Problem problem) { 32 public ModelSemantics createSemantics(Problem problem) {
33 var semantics = tryCreateSemantics(problem); 33 var semantics = tryCreateSemantics(problem);
34 semantics.throwIfRejected(); 34 semantics.getPropagationResult().throwIfRejected();
35 return semantics; 35 return semantics;
36 } 36 }
37 37