aboutsummaryrefslogtreecommitdiffstats
path: root/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/VisualiseAllModelInDirectory.xtend
blob: 6b74d1614881ae487b2dd26b5e758c831050cc1b (plain) (blame)
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package hu.bme.mit.inf.dslreasoner.run

import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicproblemPackage
import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage
import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace
import java.io.File
import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguagePackage
import hu.bme.mit.inf.dslreasoner.ecore2logic.ecore2logicannotations.Ecore2logicannotationsPackage
import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.Viatra2LogicAnnotationsPackage
import org.eclipse.emf.ecore.resource.Resource
import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.visualisation.PartialInterpretation2Gml
import hu.bme.mit.inf.dslreasoner.visualisation.pi2graphviz.GraphvizVisualisation
import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl

class VisualiseAllModelInDirectory {
	def static void main(String[] args) {
		LogiclanguagePackage.eINSTANCE.class
		LogicproblemPackage.eINSTANCE.class
		PartialinterpretationPackage.eINSTANCE.class
		Ecore2logicannotationsPackage.eINSTANCE.class
		Viatra2LogicAnnotationsPackage.eINSTANCE.class
		Resource.Factory.Registry.INSTANCE.extensionToFactoryMap.put("*",new XMIResourceFactoryImpl)
		
		//"D:/Data/ICSE18/Yakindu-WF/Largest-by-Graph-Solver".visualiseModel
//		val folderName = new File("D:/Data/ICSE18/FAM+WF/Largest-by-Graph-Solver")
//		for(subFolderName : folderName.listFiles) {
//			subFolderName.absolutePath.visualiseModel
//		}
		visualise('''D:\FASE18Meas\OneMinus_Alloy''')
	}
	
	def static void visualise(String path) {
		val file = new File(path)
		if(file.isDirectory) {
			for(subFileName : file.list) {
				(path + "/" + subFileName).visualise
			}
		} else if(file.isFile) {
			if(path.endsWith("partialinterpretation")) {
				visualiseModel(file,path)
			}
		}	
	}
	
	def static visualiseModel(File file, String fileName) {
		val list = file.name.split("\\.")
		val fileNameWithoutExtension = list.subList(0,list.length-1).join('.')
		val parent = file.parent
		
		val hasPng = new File(parent + "/" + fileNameWithoutExtension+".png").exists
		val hasGml = new File(parent + "/" + fileNameWithoutExtension+".gml").exists
		
		val workspace = new FileSystemWorkspace(parent,"")
		val model = workspace.readModel(PartialInterpretation,'''«fileNameWithoutExtension».partialinterpretation''')
		
		if(!hasGml) {
			val partialInterpretation2GML = new PartialInterpretation2Gml
			val gmlText = partialInterpretation2GML.transform(model)
			workspace.writeText('''«fileNameWithoutExtension».gml''',gmlText)
			println('''«fileNameWithoutExtension».gml''')
		}

		if(!hasPng && model.newElements.size <160) {
			val visualiser = new GraphvizVisualisation
			val visualisation = visualiser.visualiseConcretization(model)
			visualisation.writeToFile(workspace,fileNameWithoutExtension)
			println('''«fileNameWithoutExtension».png''')
		}
		
		println('''«parent»/«fileNameWithoutExtension» visualised''')
	}
}