Created
February 15, 2017 20:10
-
-
Save valeriocos/d643bff1ffa504916ac7e6be7e23ec7a to your computer and use it in GitHub Desktop.
ATL EMFTVM query launcher
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package codeskills.query; | |
import java.util.logging.Level; | |
import java.util.logging.Logger; | |
import org.eclipse.emf.common.util.URI; | |
import org.eclipse.emf.ecore.resource.Resource; | |
import org.eclipse.emf.ecore.resource.ResourceSet; | |
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; | |
import org.eclipse.m2m.atl.emftvm.EmftvmFactory; | |
import org.eclipse.m2m.atl.emftvm.ExecEnv; | |
import org.eclipse.m2m.atl.emftvm.Metamodel; | |
import org.eclipse.m2m.atl.emftvm.Model; | |
import org.eclipse.m2m.atl.emftvm.util.DefaultModuleResolver; | |
import org.eclipse.m2m.atl.emftvm.util.ModuleResolver; | |
import org.eclipse.m2m.atl.emftvm.util.TimingData; | |
import codeskills.resource.ResourceManager; | |
public class ATLQueryLauncher { | |
private ExecEnv env; | |
private ResourceSet rs; | |
private Logger logger = Logger.getAnonymousLogger(); | |
public ATLQueryLauncher() { | |
this.env = EmftvmFactory.eINSTANCE.createExecEnv(); | |
this.rs = new ResourceSetImpl(); | |
} | |
public boolean execute(Resource project, Resource uml, String queryPath) { | |
boolean isComplete = false; | |
//load project metamodel | |
Metamodel projectMetaModel = EmftvmFactory.eINSTANCE.createMetamodel(); | |
projectMetaModel.setResource(rs.getResource(URI.createURI("http://www.designer.codeskills/data/Data"), true)); | |
env.registerMetaModel("PRJ", projectMetaModel); | |
//load uml metamodel | |
Metamodel umlMetamodel = EmftvmFactory.eINSTANCE.createMetamodel(); | |
umlMetamodel.setResource(rs.getResource(URI.createURI("http://www.eclipse.org/uml2/5.0.0/UML"), true)); | |
env.registerMetaModel("UML", umlMetamodel); | |
Model inProjectModel = EmftvmFactory.eINSTANCE.createModel(); | |
inProjectModel.setResource(project); | |
env.registerInputModel("IN1", inProjectModel); | |
Model inUMLModel = EmftvmFactory.eINSTANCE.createModel(); | |
inUMLModel.setResource(uml); | |
env.registerInputModel("IN2", inUMLModel); | |
// Load and run module | |
ModuleResolver mr = new DefaultModuleResolver("platform:/plugin/codeskills.enduser" + ResourceManager.QUERIES, new ResourceSetImpl()); | |
TimingData td = new TimingData(); | |
env.loadModule(mr, queryPath); | |
td.finishLoading(); | |
Object resultQuery = env.run(td); | |
td.finish(); | |
if (resultQuery instanceof Boolean) | |
isComplete = (Boolean)resultQuery; | |
else | |
logger.log(Level.SEVERE, "[ATLQueryLauncher] Query does not return a boolean " + queryPath); | |
return isComplete; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment