summaryrefslogtreecommitdiffstats
path: root/rba.tool.editor/src/rba/tool/editor/generator/z3/ConstraintGeneratorImpl.xtend
blob: 907f8df570a0cf3f0a99e1c3048277adf91a0c00 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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)»
	'''
}