diff options
Diffstat (limited to 'subprojects/language-web/src/main/java/tools/refinery/language/web/semantics/SemanticsWorker.java')
-rw-r--r-- | subprojects/language-web/src/main/java/tools/refinery/language/web/semantics/SemanticsWorker.java | 63 |
1 files changed, 24 insertions, 39 deletions
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 fb89bea6..44974869 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 | |||
@@ -15,16 +15,11 @@ import org.eclipse.xtext.validation.FeatureBasedDiagnostic; | |||
15 | import org.eclipse.xtext.validation.IDiagnosticConverter; | 15 | import org.eclipse.xtext.validation.IDiagnosticConverter; |
16 | import org.eclipse.xtext.validation.Issue; | 16 | import org.eclipse.xtext.validation.Issue; |
17 | import org.eclipse.xtext.web.server.validation.ValidationResult; | 17 | import org.eclipse.xtext.web.server.validation.ValidationResult; |
18 | import tools.refinery.generator.ModelSemantics; | ||
19 | import tools.refinery.generator.ModelSemanticsFactory; | ||
18 | import tools.refinery.language.model.problem.Problem; | 20 | import tools.refinery.language.model.problem.Problem; |
19 | import tools.refinery.language.semantics.metadata.MetadataCreator; | 21 | import tools.refinery.language.web.semantics.metadata.MetadataCreator; |
20 | import tools.refinery.language.semantics.model.ModelInitializer; | 22 | import tools.refinery.language.semantics.TracedException; |
21 | import tools.refinery.language.semantics.model.TracedException; | ||
22 | import tools.refinery.store.dse.propagation.PropagationAdapter; | ||
23 | import tools.refinery.store.model.ModelStore; | ||
24 | import tools.refinery.store.query.interpreter.QueryInterpreterAdapter; | ||
25 | import tools.refinery.store.reasoning.ReasoningAdapter; | ||
26 | import tools.refinery.store.reasoning.ReasoningStoreAdapter; | ||
27 | import tools.refinery.store.reasoning.literal.Concreteness; | ||
28 | import tools.refinery.store.reasoning.translator.TranslationException; | 23 | import tools.refinery.store.reasoning.translator.TranslationException; |
29 | import tools.refinery.store.util.CancellationToken; | 24 | import tools.refinery.store.util.CancellationToken; |
30 | 25 | ||
@@ -35,20 +30,20 @@ class SemanticsWorker implements Callable<SemanticsResult> { | |||
35 | private static final String DIAGNOSTIC_ID = "tools.refinery.language.semantics.SemanticError"; | 30 | private static final String DIAGNOSTIC_ID = "tools.refinery.language.semantics.SemanticError"; |
36 | 31 | ||
37 | @Inject | 32 | @Inject |
38 | private PartialInterpretation2Json partialInterpretation2Json; | ||
39 | |||
40 | @Inject | ||
41 | private OperationCanceledManager operationCanceledManager; | 33 | private OperationCanceledManager operationCanceledManager; |
42 | 34 | ||
43 | @Inject | 35 | @Inject |
44 | private IDiagnosticConverter diagnosticConverter; | 36 | private IDiagnosticConverter diagnosticConverter; |
45 | 37 | ||
46 | @Inject | 38 | @Inject |
47 | private ModelInitializer initializer; | 39 | private ModelSemanticsFactory semanticsFactory; |
48 | 40 | ||
49 | @Inject | 41 | @Inject |
50 | private MetadataCreator metadataCreator; | 42 | private MetadataCreator metadataCreator; |
51 | 43 | ||
44 | @Inject | ||
45 | private PartialInterpretation2Json partialInterpretation2Json; | ||
46 | |||
52 | private Problem problem; | 47 | private Problem problem; |
53 | 48 | ||
54 | private CancellationToken cancellationToken; | 49 | private CancellationToken cancellationToken; |
@@ -64,36 +59,26 @@ class SemanticsWorker implements Callable<SemanticsResult> { | |||
64 | 59 | ||
65 | @Override | 60 | @Override |
66 | public SemanticsResult call() { | 61 | public SemanticsResult call() { |
67 | var builder = ModelStore.builder() | ||
68 | .cancellationToken(cancellationToken) | ||
69 | .with(QueryInterpreterAdapter.builder()) | ||
70 | .with(PropagationAdapter.builder()) | ||
71 | .with(ReasoningAdapter.builder() | ||
72 | .requiredInterpretations(Concreteness.PARTIAL)); | ||
73 | cancellationToken.checkCancelled(); | 62 | cancellationToken.checkCancelled(); |
63 | ModelSemantics semantics; | ||
74 | try { | 64 | try { |
75 | var modelSeed = initializer.createModel(problem, builder); | 65 | semantics = semanticsFactory.cancellationToken(cancellationToken).createSemantics(problem); |
76 | cancellationToken.checkCancelled(); | ||
77 | metadataCreator.setInitializer(initializer); | ||
78 | cancellationToken.checkCancelled(); | ||
79 | var nodesMetadata = metadataCreator.getNodesMetadata(); | ||
80 | cancellationToken.checkCancelled(); | ||
81 | var relationsMetadata = metadataCreator.getRelationsMetadata(); | ||
82 | cancellationToken.checkCancelled(); | ||
83 | var store = builder.build(); | ||
84 | cancellationToken.checkCancelled(); | ||
85 | var model = store.getAdapter(ReasoningStoreAdapter.class).createInitialModel(modelSeed); | ||
86 | cancellationToken.checkCancelled(); | ||
87 | var partialInterpretation = partialInterpretation2Json.getPartialInterpretation(initializer, model, | ||
88 | Concreteness.PARTIAL, cancellationToken); | ||
89 | |||
90 | return new SemanticsSuccessResult(nodesMetadata, relationsMetadata, partialInterpretation); | ||
91 | } catch (TracedException e) { | ||
92 | return getTracedErrorResult(e.getSourceElement(), e.getMessage()); | ||
93 | } catch (TranslationException e) { | 66 | } catch (TranslationException e) { |
94 | var sourceElement = initializer.getInverseTrace(e.getPartialSymbol()); | 67 | return new SemanticsInternalErrorResult(e.getMessage()); |
95 | return getTracedErrorResult(sourceElement, e.getMessage()); | 68 | } catch (TracedException e) { |
69 | var cause = e.getCause(); | ||
70 | // Suppress the type of the cause exception. | ||
71 | var message = cause == null ? e.getMessage() : cause.getMessage(); | ||
72 | return getTracedErrorResult(e.getSourceElement(), message); | ||
96 | } | 73 | } |
74 | cancellationToken.checkCancelled(); | ||
75 | metadataCreator.setProblemTrace(semantics.getProblemTrace()); | ||
76 | var nodesMetadata = metadataCreator.getNodesMetadata(semantics.getModel(), true); | ||
77 | cancellationToken.checkCancelled(); | ||
78 | var relationsMetadata = metadataCreator.getRelationsMetadata(); | ||
79 | cancellationToken.checkCancelled(); | ||
80 | var partialInterpretation = partialInterpretation2Json.getPartialInterpretation(semantics, cancellationToken); | ||
81 | return new SemanticsSuccessResult(nodesMetadata, relationsMetadata, partialInterpretation); | ||
97 | } | 82 | } |
98 | 83 | ||
99 | private SemanticsResult getTracedErrorResult(EObject sourceElement, String message) { | 84 | private SemanticsResult getTracedErrorResult(EObject sourceElement, String message) { |