aboutsummaryrefslogtreecommitdiffstats
path: root/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/SimpleRun.xtend
diff options
context:
space:
mode:
Diffstat (limited to 'Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/SimpleRun.xtend')
-rw-r--r--Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/SimpleRun.xtend95
1 files changed, 46 insertions, 49 deletions
diff --git a/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/SimpleRun.xtend b/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/SimpleRun.xtend
index 863a91c8..b65826ad 100644
--- a/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/SimpleRun.xtend
+++ b/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/SimpleRun.xtend
@@ -1,41 +1,42 @@
1package hu.bme.mit.inf.dslreasoner.run 1package hu.bme.mit.inf.dslreasoner.run
2 2
3import functionalarchitecture.FunctionalarchitecturePackage
4import hu.bme.mit.inf.dslreasoner.domains.transima.fam.FamPatterns
5import hu.bme.mit.inf.dslreasoner.domains.transima.fam.Model
6import hu.bme.mit.inf.dslreasoner.domains.transima.fam.Type
7import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic
8import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration
9import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor
10import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel
11import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner
12import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult
13import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult
14import hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore
15import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic
16import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2LogicConfiguration
17import hu.bme.mit.inf.dslreasoner.viatra2logic.ViatraQuerySetDescriptor
18import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.cardinality.ScopePropagatorStrategy
19import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic
20import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
21import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.visualisation.PartialInterpretation2Gml
22import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasoner
23import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasonerConfiguration
24import hu.bme.mit.inf.dslreasoner.visualisation.pi2graphviz.GraphvizVisualiser
3import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace 25import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace
4import hu.bme.mit.inf.dslreasomer.domains.transima.fam.FunctionalArchitecture.FunctionalArchitecturePackage 26import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace
27import java.util.LinkedHashMap
28import java.util.LinkedList
5import java.util.List 29import java.util.List
30import org.eclipse.emf.ecore.EAttribute
6import org.eclipse.emf.ecore.EClass 31import org.eclipse.emf.ecore.EClass
7import org.eclipse.emf.ecore.EEnumLiteral
8import org.eclipse.emf.ecore.EReference
9import org.eclipse.emf.ecore.EEnum 32import org.eclipse.emf.ecore.EEnum
10import org.eclipse.emf.ecore.EAttribute 33import org.eclipse.emf.ecore.EEnumLiteral
11import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor
12import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace
13import org.eclipse.emf.ecore.EObject 34import org.eclipse.emf.ecore.EObject
14import java.util.LinkedHashMap 35import org.eclipse.emf.ecore.EReference
15import hu.bme.mit.inf.dslreasoner.viatra2logic.ViatraQuerySetDescriptor
16import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic
17import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic
18import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic
19import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration
20import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2LogicConfiguration
21import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasonerConfiguration
22import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.TypeInferenceMethod
23import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.StateCoderStrategy
24import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasoner
25import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult
26import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
27import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult
28import org.eclipse.emf.ecore.resource.Resource 36import org.eclipse.emf.ecore.resource.Resource
29import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl 37import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl
30import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.visualisation.PartialInterpretation2Gml 38import org.eclipse.viatra.query.patternlanguage.emf.EMFPatternLanguageStandaloneSetup
31import hu.bme.mit.inf.dlsreasoner.alloy.reasoner.AlloySolverConfiguration 39import org.eclipse.viatra.query.runtime.rete.matcher.ReteEngine
32import hu.bme.mit.inf.dlsreasoner.alloy.reasoner.AlloySolver
33import hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore
34import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner
35import java.util.LinkedList
36import hu.bme.mit.inf.dslreasoner.visualisation.pi2graphviz.GraphvizVisualisation
37import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicStructureBuilder
38import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicProblemBuilder
39 40
40class SimpleRun { 41class SimpleRun {
41 42
@@ -59,7 +60,8 @@ class SimpleRun {
59 60
60 val modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel,new Ecore2LogicConfiguration()) 61 val modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel,new Ecore2LogicConfiguration())
61 val modelExtensionProblem = instanceModel2Logic.transform(modelGenerationProblem,partialModel) 62 val modelExtensionProblem = instanceModel2Logic.transform(modelGenerationProblem,partialModel)
62 val validModelExtensionProblem = viatra2Logic.transformQueries(queries,modelGenerationProblem,new Viatra2LogicConfiguration) 63 val validModelExtensionProblem = viatra2Logic.transformQueries(queries,modelExtensionProblem,new Viatra2LogicConfiguration)
64// workspace.writeModel(validModelExtensionProblem.output, "generation.logicproblem")
63 65
64 val logicProblem = validModelExtensionProblem.output 66 val logicProblem = validModelExtensionProblem.output
65 67
@@ -71,11 +73,11 @@ class SimpleRun {
71 val viatraConfig = new ViatraReasonerConfiguration => [ 73 val viatraConfig = new ViatraReasonerConfiguration => [
72 it.typeScopes.maxNewElements = 40 74 it.typeScopes.maxNewElements = 40
73 it.typeScopes.minNewElements = 40 75 it.typeScopes.minNewElements = 40
74 it.solutionScope.numberOfRequiredSolution = 1 76 it.solutionScope.numberOfRequiredSolutions = 1
75 it.existingQueries = queries.patterns.map[it.internalQueryRepresentation] 77// it.scopePropagatorStrategy = ScopePropagatorStrategy.BasicTypeHierarchy
76 it.debugCongiguration.logging = false 78 it.documentationLevel = DocumentationLevel.NONE
77 it.debugCongiguration.partalInterpretationVisualisationFrequency = 1 79 it.debugConfiguration.partalInterpretationVisualisationFrequency = 1
78 it.debugCongiguration.partialInterpretatioVisualiser = new GraphvizVisualisation 80 it.debugConfiguration.partialInterpretatioVisualiser = new GraphvizVisualiser
79 ] 81 ]
80 solution = reasoner.solve(logicProblem,viatraConfig,workspace) 82 solution = reasoner.solve(logicProblem,viatraConfig,workspace)
81 /*/ 83 /*/
@@ -92,23 +94,20 @@ class SimpleRun {
92 94
93 println("Problem solved") 95 println("Problem solved")
94 96
95 val interpretations = reasoner.getInterpretations(solution as ModelResult) 97 val result = solution as ModelResult
98 val interpretations = reasoner.getInterpretations(result)
96 val models = new LinkedList 99 val models = new LinkedList
97 for(interpretation : interpretations) { 100 for(interpretation : interpretations) {
98 val extension b = new LogicStructureBuilder
99 val extension a = new LogicProblemBuilder
100
101
102
103 val instanceModel = logic2Ecore.transformInterpretation(interpretation,modelGenerationProblem.trace) 101 val instanceModel = logic2Ecore.transformInterpretation(interpretation,modelGenerationProblem.trace)
104 models+=instanceModel 102 models+=instanceModel
105 } 103 }
104 println(result.statistics.solverTime)
106 105
107 solution.writeSolution(workspace, #[]) 106 solution.writeSolution(workspace, #[])
108 } 107 }
109 108
110 def private static loadMetamodel() { 109 def private static loadMetamodel() {
111 val pckg = FunctionalArchitecturePackage.eINSTANCE 110 val pckg = FunctionalarchitecturePackage.eINSTANCE
112 val List<EClass> classes = pckg.EClassifiers.filter(EClass).toList 111 val List<EClass> classes = pckg.EClassifiers.filter(EClass).toList
113 val List<EEnum> enums = pckg.EClassifiers.filter(EEnum).toList 112 val List<EEnum> enums = pckg.EClassifiers.filter(EEnum).toList
114 val List<EEnumLiteral> literals = enums.map[ELiterals].flatten.toList 113 val List<EEnumLiteral> literals = enums.map[ELiterals].flatten.toList
@@ -118,12 +117,12 @@ class SimpleRun {
118 } 117 }
119 118
120 def private static loadQueries(EcoreMetamodelDescriptor metamodel) { 119 def private static loadQueries(EcoreMetamodelDescriptor metamodel) {
121 val i = hu.bme.mit.inf.dslreasoner.domains.transima.fam.patterns.Pattern.instance 120 val i = FamPatterns.instance
122 val patterns = i.specifications.toList 121 val patterns = i.specifications.toList
123 val wfPatterns = patterns.filter[it.allAnnotations.exists[it.name== "Constraint"]].toSet 122 val wfPatterns = patterns.filter[it.allAnnotations.exists[it.name== "Constraint"]].toSet
124 val derivedFeatures = new LinkedHashMap 123 val derivedFeatures = new LinkedHashMap
125 derivedFeatures.put(i.type,metamodel.attributes.filter[it.name == "type"].head) 124 derivedFeatures.put(Type.instance,metamodel.attributes.filter[it.name == "type"].head)
126 derivedFeatures.put(i.model,metamodel.references.filter[it.name == "model"].head) 125 derivedFeatures.put(Model.instance,metamodel.references.filter[it.name == "model"].head)
127 val res = new ViatraQuerySetDescriptor( 126 val res = new ViatraQuerySetDescriptor(
128 patterns, 127 patterns,
129 wfPatterns, 128 wfPatterns,
@@ -133,6 +132,8 @@ class SimpleRun {
133 } 132 }
134 133
135 def static loadPartialModel(ReasonerWorkspace inputs) { 134 def static loadPartialModel(ReasonerWorkspace inputs) {
135 EMFPatternLanguageStandaloneSetup.doSetup
136 ReteEngine.getClass
136 Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("*", new XMIResourceFactoryImpl()); 137 Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("*", new XMIResourceFactoryImpl());
137 inputs.readModel(EObject,"FAM.xmi").eResource.allContents.toList 138 inputs.readModel(EObject,"FAM.xmi").eResource.allContents.toList
138 } 139 }
@@ -160,8 +161,4 @@ class SimpleRun {
160 println("Solution saved and visualised") 161 println("Solution saved and visualised")
161 } 162 }
162 } 163 }
163
164 def static visualizeSolution() {
165
166 }
167} \ No newline at end of file 164} \ No newline at end of file