aboutsummaryrefslogtreecommitdiffstats
path: root/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/CSERposterSample.xtend
diff options
context:
space:
mode:
Diffstat (limited to 'Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/CSERposterSample.xtend')
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/CSERposterSample.xtend76
1 files changed, 76 insertions, 0 deletions
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/CSERposterSample.xtend b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/CSERposterSample.xtend
new file mode 100644
index 00000000..8dd16090
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/CSERposterSample.xtend
@@ -0,0 +1,76 @@
1package ca.mcgill.ecse.dslreasoner.realistic.metrics.examples
2
3import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.YakindummPackage
4import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic
5import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration
6import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor
7import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2PartialInterpretation
8import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.neighbourhood.PartialInterpretation2ImmutableTypeLattice
9import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.visualisation.PartialInterpretation2Gml
10import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace
11import java.util.Collections
12import org.eclipse.emf.ecore.EClass
13import org.eclipse.emf.ecore.EEnum
14import org.eclipse.emf.ecore.EObject
15import org.eclipse.emf.ecore.resource.Resource
16import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl
17import org.eclipse.viatra.query.runtime.rete.matcher.ReteEngine
18import java.io.PrintWriter
19import linkedList.LinkedListPackage
20import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.neighbourhood.Neighbourhood2Gml
21
22class CSERposterSample {
23 static val partialInterpretation2Logic = new InstanceModel2PartialInterpretation
24 static val neighbourhoodComputer = new PartialInterpretation2ImmutableTypeLattice
25 static val Ecore2Logic ecore2Logic = new Ecore2Logic
26 static val partialVisualizer = new PartialInterpretation2Gml
27 static val neighbourhoodVisualizer = new Neighbourhood2Gml
28 static val depth = 1
29
30 def static void main(String[] args) {
31 Resource.Factory.Registry.INSTANCE.extensionToFactoryMap.put("*", new XMIResourceFactoryImpl)
32 YakindummPackage.eINSTANCE.eClass
33 LinkedListPackage.eINSTANCE.eClass
34 ReteEngine.getClass
35
36 val outputs = "outputs"
37 val instModName = "realisticModel"
38 val workspace = new FileSystemWorkspace('''resources''', "")
39 val model = workspace.readModel(EObject, instModName+".xmi")
40
41 val pckg = model.eClass.EPackage
42 val metamodel = new EcoreMetamodelDescriptor(
43 pckg.EClassifiers.filter(EClass).toList,
44 Collections::emptySet,
45 false,
46 pckg.EClassifiers.filter(EEnum).toList,
47 pckg.EClassifiers.filter(EEnum).map[ELiterals].flatten.toList,
48 pckg.EClassifiers.filter(EClass).map[EReferences].flatten.toList,
49 pckg.EClassifiers.filter(EClass).map[EAttributes].flatten.toList
50 )
51 val metamodelTransformationOutput = ecore2Logic.transformMetamodel(metamodel, new Ecore2LogicConfiguration)
52
53 val partialModelOutput = partialInterpretation2Logic.transform(metamodelTransformationOutput, model.eResource, false)
54
55 val writer = new PrintWriter(outputs+"//"+instModName+"MODEL.gml")
56
57 writer.print(partialVisualizer.transform(partialModelOutput))
58
59 writer.close
60
61 val hood = neighbourhoodComputer.createRepresentation(partialModelOutput, depth, Integer.MAX_VALUE, Integer.MAX_VALUE)
62
63 val w2 = new PrintWriter(outputs+"/"+instModName+"NEIGHBOURHOOD.gml")
64
65 w2.print(neighbourhoodVisualizer.transform(hood, partialModelOutput))
66
67 w2.close
68
69 println("visualization done")
70
71// partialModelOutput.openWorldElements
72 //RESULTS
73// print(hood)
74
75 }
76}