package org.js.model.feature.ptnet.m2m.atl; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.util.HashMap; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.m2m.atl.core.ATLCoreException; import org.eclipse.m2m.atl.core.IExtractor; import org.eclipse.m2m.atl.core.IInjector; import org.eclipse.m2m.atl.core.IModel; import org.eclipse.m2m.atl.core.IReferenceModel; import org.eclipse.m2m.atl.core.ModelFactory; import org.eclipse.m2m.atl.core.emf.EMFExtractor; import org.eclipse.m2m.atl.core.emf.EMFInjector; import org.eclipse.m2m.atl.core.emf.EMFModel; import org.eclipse.m2m.atl.core.emf.EMFModelFactory; import org.eclipse.m2m.atl.core.emf.EMFReferenceModel; import org.eclipse.m2m.atl.core.launch.ILauncher; import org.eclipse.m2m.atl.engine.emfvm.launch.EMFVMLauncher; public class ATLTransform { /** * @param args */ public static void main(String[] args) { // String inputMetaModelFileName = "src/main/metamodel/feature.ecore"; // String inputMetaModelFileName = "src/main/metamodel/stageconfig.ecore"; String inputMetaModelFileName = "../../../../workspace/efm/org.js.model.stageconfig/model/stageconfig.ecore"; // String inputModelFileName = "src/main/model/complex.feature"; String inputModelFileName = "src/main/model/alternative_fm.stageModel"; String outputMetaModelFileName = "src/main/metamodel/ptnetLoLA.ecore"; String outputModelFileName = "src/main/model/complex.ptnetlola"; // String asmFileName = "src/main/atl/feature2ptnet.asm"; String asmFileName = "src/main/atl/sc2ptnet.asm"; try { /* * Initializations */ ILauncher transformationLauncher = new EMFVMLauncher(); ModelFactory modelFactory = new EMFModelFactory(); IInjector injector = new EMFInjector(); IExtractor extractor = new EMFExtractor(); /* * Load metamodels */ IReferenceModel inputMetaModel = modelFactory.newReferenceModel(); injector.inject(inputMetaModel, inputMetaModelFileName); IReferenceModel outputMetaModel = modelFactory.newReferenceModel(); injector.inject(outputMetaModel, outputMetaModelFileName); /* * Run "Cut" transformation */ IModel inputModel = modelFactory.newModel(inputMetaModel); injector.inject(inputModel,inputModelFileName); // // transformationLauncher.initialize(new HashMap<String,Object>()); // transformationLauncher.addInOutModel(featureModel, "IN", "fm"); // IReferenceModel refiningTraceMetamodel = modelFactory.getBuiltInResource("RefiningTrace.ecore"); // IModel refiningTraceModel = modelFactory.newModel(refiningTraceMetamodel); // transformationLauncher.addOutModel(refiningTraceModel, "refiningTrace", "RefiningTrace"); // transformationLauncher.launch(ILauncher.RUN_MODE, new NullProgressMonitor(), new HashMap<String,Object>(), // new FileInputStream("src/main/atl/feature2ptnet.asm")); // // IModel companyModel_Cut = featureModel; // String outputFileName = "C:/git/extFM-Tooling/plugins/org.js.model.feature.ptnet.test/src/main/model/alternative_fm.ptnetlola"; // extractor.extract(companyModel_Cut, outputFileName); /* * Run "ComputeTotal" transformation */ IModel outputModel = modelFactory.newModel(outputMetaModel); transformationLauncher.initialize(new HashMap<String,Object>()); transformationLauncher.addInModel(inputModel, "IN", "fm"); transformationLauncher.addOutModel(outputModel, "OUT", "ptnet"); transformationLauncher.launch(ILauncher.RUN_MODE, new NullProgressMonitor(), new HashMap<String,Object>(), new FileInputStream(asmFileName)); extractor.extract(outputModel, outputModelFileName); /* * Unload all models and metamodels (EMF-specific) */ EMFModelFactory emfModelFactory = (EMFModelFactory) modelFactory; emfModelFactory.unload((EMFModel) inputModel); emfModelFactory.unload((EMFModel) outputModel); emfModelFactory.unload((EMFReferenceModel) inputMetaModel); emfModelFactory.unload((EMFReferenceModel) outputMetaModel); } catch (ATLCoreException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } } }