package hu.bme.mit.inf.dslreasoner.run import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration import hu.bme.mit.inf.dslreasoner.ecore2logic.ecore2logicannotations.Ecore2logicannotationsPackage import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguagePackage import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicproblemPackage import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.Viatra2LogicAnnotationsPackage import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2PartialInterpretation import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.neighbourhood.PartialInterpretation2ImmutableTypeLattice 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 java.util.HashMap import java.util.LinkedList import java.util.List import org.eclipse.emf.ecore.EObject import org.eclipse.emf.ecore.resource.Resource import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl import java.util.HashSet import java.util.ArrayList import java.util.Comparator class MeasureDiversity { static val partialInterpretation2Logic = new InstanceModel2PartialInterpretation static val neiguboirhoodComputer = new PartialInterpretation2ImmutableTypeLattice static val Ecore2Logic ecore2Logic = new Ecore2Logic static private def init() { LogiclanguagePackage.eINSTANCE.class LogicproblemPackage.eINSTANCE.class PartialinterpretationPackage.eINSTANCE.class Ecore2logicannotationsPackage.eINSTANCE.class Viatra2LogicAnnotationsPackage.eINSTANCE.class Resource.Factory.Registry.INSTANCE.extensionToFactoryMap.put("*",new XMIResourceFactoryImpl) } def static void main(String[] args) { init() val range = 20 val path = '''D:/FASE18Meas/''' val scenarios = #[ "MetamodelOnly_Alloy_Symmetry0", "MetamodelOnly_Alloy_Symmetry10", //"MetamodelOnly_Alloy_Symmetry30", "MetamodelOnly_Alloy_SymmetryDefault", //"MetamodelOnly_VS_Fix_No", "MetamodelOnly_VS_Fix_R1", "MetamodelOnly_VS_Fix_R2", "MetamodelOnly_VS_Fix_R3" //,"RemoHF" ] println('''Scenario;Run;Model1;Model2;«FOR i: 0.. files, String path, int depth) { val workspace = new FileSystemWorkspace(path, "") //val file2Neighbourhood = new HashMap files.sort(new FileComparator) val neighbours = new ArrayList for(i:0.. [ it.useSynchronization = false it.useComplexStates = true ] val metamodelTransformationOutput = ecore2Logic.transformMetamodel(loader.loadMetamodel, new Ecore2LogicConfiguration) val model = workspace.readModel(EObject, file.name) val partialModel = partialInterpretation2Logic.transform(metamodelTransformationOutput, model.eResource, false) val list = representationList(partialModel, depth) //file2Neighbourhood.put(file, list) print('''«scenario»;«file.name.runIndex»;«file.name.modelIndex»''') for (i : 0 ..< list.size) { val s1 = list.get(i) neighbours.get(i).addAll(s1) print(";" + neighbours.get(i).size) } println() } } // def static void measureDiversity(String scenario, File parent, List files, String path, int depth) { // val workspace = new FileSystemWorkspace(path,"") // val file2Neighbourhood = new HashMap // for(file : files) { // val MetamodelLoader loader = new YakinduLoader(workspace) => [it.useSynchronization = false it.useComplexStates = true] // val metamodelTransformationOutput = ecore2Logic.transformMetamodel(loader.loadMetamodel,new Ecore2LogicConfiguration) // // val model = workspace.readModel(EObject,file.name) // val partialModel = partialInterpretation2Logic.transform(metamodelTransformationOutput,model.eResource,false) // val list = representationList(partialModel,depth) // // file2Neighbourhood.put(file,list) // } // for(file1Index : 0.. { override compare(File arg0, File arg1) { val a = Integer.parseInt(MeasureDiversity::modelIndex(arg0.name)) val b = Integer.parseInt(MeasureDiversity::modelIndex(arg1.name)) Integer.compare(a,b) } }