aboutsummaryrefslogtreecommitdiffstats
path: root/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/EcoreTest.xtend
diff options
context:
space:
mode:
Diffstat (limited to 'Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/EcoreTest.xtend')
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/EcoreTest.xtend105
1 files changed, 105 insertions, 0 deletions
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/EcoreTest.xtend b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/EcoreTest.xtend
new file mode 100644
index 00000000..54114189
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/EcoreTest.xtend
@@ -0,0 +1,105 @@
1package ca.mcgill.ecse.dslreasoner.vampire.icse
2
3import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolver
4import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration
5import functionalarchitecture.FunctionalarchitecturePackage
6import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic
7import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration
8import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor
9import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner
10import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult
11import hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore
12import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic
13import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic
14import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace
15import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace
16import java.util.List
17import org.eclipse.emf.ecore.EAttribute
18import org.eclipse.emf.ecore.EClass
19import org.eclipse.emf.ecore.EEnum
20import org.eclipse.emf.ecore.EEnumLiteral
21import org.eclipse.emf.ecore.EObject
22import org.eclipse.emf.ecore.EReference
23import org.eclipse.emf.ecore.resource.Resource
24import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl
25import hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.Patterns
26import java.util.LinkedHashMap
27import hu.bme.mit.inf.dslreasoner.viatra2logic.ViatraQuerySetDescriptor
28
29class EcoreTest {
30 def static void main(String[] args) {
31 val inputs = new FileSystemWorkspace('''initialModels/''', "")
32 val workspace = new FileSystemWorkspace('''output/FAMTest/''', "")
33 workspace.initAndClear
34
35 println("Input and output workspaces are created")
36
37 val metamodel = loadMetamodel()
38 val partialModel = loadPartialModel(inputs)
39// val queries = loadQueries(metamodel)
40
41 println("DSL loaded")
42
43 val Ecore2Logic ecore2Logic = new Ecore2Logic
44 val Logic2Ecore logic2Ecore = new Logic2Ecore(ecore2Logic)
45 val Viatra2Logic viatra2Logic = new Viatra2Logic(ecore2Logic)
46 val InstanceModel2Logic instanceModel2Logic = new InstanceModel2Logic
47
48 val modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel,new Ecore2LogicConfiguration())
49 val modelExtensionProblem = instanceModel2Logic.transform(modelGenerationProblem,partialModel)
50// val validModelExtensionProblem = viatra2Logic.transformQueries(queries,modelGenerationProblem,new Viatra2LogicConfiguration)
51
52 val logicProblem = modelGenerationProblem.output
53// val logicProblem = modelExtensionProblem.output
54// val logicProblem = validModelExtensionProblem.output
55
56
57 println("Problem created")
58
59 var LogicResult solution
60 var LogicReasoner reasoner
61 //*
62 reasoner = new VampireSolver
63 val vampireConfig = new VampireSolverConfiguration => [
64 //add configuration things, in config file first
65 it.writeToFile = true
66 ]
67
68 solution = reasoner.solve(logicProblem, vampireConfig, workspace)
69
70 println("Problem solved")
71
72
73 }
74
75 def private static loadMetamodel() {
76 val pckg = FunctionalarchitecturePackage.eINSTANCE
77 val List<EClass> classes = pckg.getEClassifiers.filter(EClass).toList
78 val List<EEnum> enums = pckg.getEClassifiers.filter(EEnum).toList
79 val List<EEnumLiteral> literals = enums.map[getELiterals].flatten.toList
80 val List<EReference> references = classes.map[getEReferences].flatten.toList
81 val List<EAttribute> attributes = classes.map[getEAttributes].flatten.toList
82 return new EcoreMetamodelDescriptor(classes,#{},false,enums,literals,references,attributes)
83 }
84
85 def private static loadPartialModel(ReasonerWorkspace inputs) {
86 Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("*", new XMIResourceFactoryImpl());
87// inputs.readModel(EObject,"FunctionalArchitectureModel.xmi").eResource.allContents.toList
88 inputs.readModel(EObject,"FamInstance.xmi").eResource.allContents.toList
89 }
90
91 def private static loadQueries(EcoreMetamodelDescriptor metamodel) {
92// val i = Patterns.instance
93// val patterns = i.specifications.toList
94// val wfPatterns = patterns.filter[it.allAnnotations.exists[it.name== "Constraint"]].toSet
95// val derivedFeatures = new LinkedHashMap
96// derivedFeatures.put(i.type,metamodel.attributes.filter[it.name == "type"].head)
97// derivedFeatures.put(i.model,metamodel.references.filter[it.name == "model"].head)
98// val res = new ViatraQuerySetDescriptor(
99// patterns,
100// wfPatterns,
101// derivedFeatures
102// )
103// return res
104 }
105}