summaryrefslogtreecommitdiffstats
path: root/rba.tool.editor/src/rba/tool/editor/generator/z3/ConstraintGeneratorImpl.xtend
diff options
context:
space:
mode:
Diffstat (limited to 'rba.tool.editor/src/rba/tool/editor/generator/z3/ConstraintGeneratorImpl.xtend')
-rw-r--r--rba.tool.editor/src/rba/tool/editor/generator/z3/ConstraintGeneratorImpl.xtend48
1 files changed, 48 insertions, 0 deletions
diff --git a/rba.tool.editor/src/rba/tool/editor/generator/z3/ConstraintGeneratorImpl.xtend b/rba.tool.editor/src/rba/tool/editor/generator/z3/ConstraintGeneratorImpl.xtend
new file mode 100644
index 0000000..907f8df
--- /dev/null
+++ b/rba.tool.editor/src/rba/tool/editor/generator/z3/ConstraintGeneratorImpl.xtend
@@ -0,0 +1,48 @@
+package rba.tool.editor.generator.z3
+
+import org.eclipse.emf.ecore.resource.Resource
+import org.eclipse.emf.ecore.resource.ResourceSet
+import org.eclipse.xtext.generator.AbstractGenerator
+import org.eclipse.xtext.generator.IFileSystemAccess2
+import org.eclipse.xtext.generator.IGeneratorContext
+import rba.tool.editor.model.manager.ResourceManager
+
+/**
+ * Generates code from your model files on save.
+ *
+ * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#code-generation
+ */
+class ConstraintGeneratorImpl extends AbstractGenerator implements IConstraintGenerator {
+
+ private static ConstraintCodeGenerationSupporter generationSupporter = new ConstraintCodeGenerationSupporter();
+
+ override doGenerate(Resource input, IFileSystemAccess2 fsa, IGeneratorContext context) {
+ doGenerate(input.resourceSet, fsa, context);
+ }
+
+ override beforeGenerate(ResourceSet input, IFileSystemAccess2 fsa, IGeneratorContext context) {
+ }
+
+ override afterGenerate(ResourceSet input, IFileSystemAccess2 fsa, IGeneratorContext context) {
+ }
+
+ override void doGenerate(ResourceSet resourceSet, IFileSystemAccess2 fsa, IGeneratorContext context) {
+ fsa.generateFile("ConstraintCalculation.java", resourceSet.compile);
+ }
+
+ def compile(ResourceSet resourceSet) '''
+ «val allAreas = ResourceManager.INSTANCE.getRbaAreas(resourceSet)»
+ «val allZones = ResourceManager.INSTANCE.getRbaZones(resourceSet)»
+ «val allVContents = ResourceManager.INSTANCE.getRbaViewContents(resourceSet)»
+ «val allSContents = ResourceManager.INSTANCE.getRbaSoundContents(resourceSet)»
+ «val allAreaSets = ResourceManager.INSTANCE.getRbaAreaSets(resourceSet)»
+ «val allZoneSets = ResourceManager.INSTANCE.getRbaZoneSets(resourceSet)»
+ «val allVContentSets = ResourceManager.INSTANCE.getRbaViewContentSets(resourceSet)»
+ «val allSContentSets = ResourceManager.INSTANCE.getRbaSoundContentSets(resourceSet)»
+ «val allValiables = ResourceManager.INSTANCE.getRbaVariables(resourceSet)»
+ «val allConstraints = ResourceManager.INSTANCE.getRbaConstraints(resourceSet)»
+ «val allScenes = ResourceManager.INSTANCE.getRbaScenes(resourceSet)»
+ «val allSetOfOperators = ResourceManager.INSTANCE.getRbaSetOfOperators(resourceSet)»
+ «generationSupporter.generate(allVContents,allSContents, allAreas,allZones, allVContentSets,allSContentSets, allAreaSets,allZoneSets, allValiables, allConstraints, allScenes, allSetOfOperators)»
+ '''
+}