From 3961e8630edc5cb9f13d352383f6f7be59fdf457 Mon Sep 17 00:00:00 2001 From: OszkarSemerath Date: Fri, 6 Jul 2018 15:19:02 +0200 Subject: Additional packages for standalone runtime environment --- .../execution/StandaloneScriptExecutor.xtend | 74 ++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/StandaloneScriptExecutor.xtend (limited to 'Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/StandaloneScriptExecutor.xtend') diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/StandaloneScriptExecutor.xtend b/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/StandaloneScriptExecutor.xtend new file mode 100644 index 00000000..825bfdcc --- /dev/null +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/StandaloneScriptExecutor.xtend @@ -0,0 +1,74 @@ +package hu.bme.mit.inf.dslreasoner.application.execution + +import hu.bme.mit.inf.dslreasoner.application.ApplicationConfigurationStandaloneSetup +import org.eclipse.emf.common.util.URI +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl +import hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ConfigurationScript +import org.eclipse.core.runtime.NullProgressMonitor +import org.eclipse.viatra.query.patternlanguage.emf.EMFPatternLanguageStandaloneSetup +import org.eclipse.emf.ecore.util.EcoreUtil +import java.io.FileNotFoundException +import org.eclipse.emf.ecore.resource.Resource +import java.io.IOException +import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl +import org.eclipse.viatra.query.runtime.matchers.backend.IQueryBackendFactoryProvider +import org.eclipse.viatra.query.runtime.rete.matcher.ReteBackendFactoryProvider +import org.eclipse.viatra.query.runtime.api.ViatraQueryEngineOptions +import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint +import org.eclipse.viatra.query.runtime.rete.util.ReteHintOptions +import org.eclipse.viatra.query.runtime.rete.matcher.ReteEngine + +class StandaloneScriptExecutor { + def static void main(String[] args) { + if(args.size == 1) { + val message = executeScript(args.head) + println(message) + } else if(args.size == 0){ + println('''Run generator with script file path as parameter!''') + } else { // args.size > 1 + println('''Multiple arguments are not supported! Run generator with script file path as parameter!''') + } + } + + def static executeScript(String path){ + //Initialise extensions + EMFPatternLanguageStandaloneSetup.doSetup + ApplicationConfigurationStandaloneSetup.doSetup + Resource.Factory.Registry.INSTANCE.extensionToFactoryMap.put("xmi",new XMIResourceFactoryImpl) + Resource.Factory.Registry.INSTANCE.extensionToFactoryMap.put("logicproblem",new XMIResourceFactoryImpl) + ReteEngine.getClass + + val ext = path.split("\\.").last + if(ext.equals("vsconfig")) { + val resourceSet = new ResourceSetImpl + var Resource resource + + try{ + resource = resourceSet.getResource(URI.createURI(path),true) + } catch(Exception e) { + return '''Unable to load Configuration Script!''' + } + + EcoreUtil::resolveAll(resource) + val errors = resource.errors + if(errors.empty) { + val content = resource.contents.head + if(content instanceof ConfigurationScript) { + val executor = new ScriptExecutor + executor.executeScript(content,new NullProgressMonitor) + } else { + return('''Content is not a Configuration Script! (Found : «content.class.simpleName»)''') + } + } else { + return ''' + The Configuration Script contains «errors.size» error«IF errors.size>1»s«ENDIF»: + «FOR error : errors» + «"\t"»«error.message» + «ENDFOR» + ''' + } + } else { + return '''Unsupported file extension: «ext»''' + } + } +} \ No newline at end of file -- cgit v1.2.3-54-g00ecf