From cb77845089f6c8171fc3c39a92690dee3671886a Mon Sep 17 00:00:00 2001 From: OszkarSemerath Date: Sun, 17 Feb 2019 19:34:52 +0100 Subject: Created new module to load referred patterns. hacked metamodel linking. --- .../application/execution/util/VQLParser.xtend | 100 --------------------- 1 file changed, 100 deletions(-) delete mode 100644 Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/util/VQLParser.xtend (limited to 'Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/util') diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/util/VQLParser.xtend b/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/util/VQLParser.xtend deleted file mode 100644 index e458267c..00000000 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/util/VQLParser.xtend +++ /dev/null @@ -1,100 +0,0 @@ -package hu.bme.mit.inf.dslreasoner.application.execution.util - -import com.google.inject.Guice -import com.google.inject.Injector -import com.google.inject.Module -import hu.bme.mit.inf.dslreasoner.application.execution.ScriptConsole -import java.util.LinkedHashMap -import java.util.List -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.util.EcoreUtil -import org.eclipse.viatra.query.patternlanguage.emf.EMFPatternLanguageRuntimeModule -import org.eclipse.viatra.query.patternlanguage.emf.EMFPatternLanguageStandaloneSetup -import org.eclipse.viatra.query.patternlanguage.emf.GenmodelExtensionLoader -import org.eclipse.viatra.query.patternlanguage.emf.IGenmodelMappingLoader -import org.eclipse.viatra.query.patternlanguage.emf.scoping.CompoundMetamodelProviderService -import org.eclipse.viatra.query.patternlanguage.emf.scoping.IMetamodelProvider -import org.eclipse.viatra.query.patternlanguage.emf.specification.SpecificationBuilder -import org.eclipse.viatra.query.patternlanguage.emf.vql.PatternModel -import org.eclipse.viatra.query.runtime.api.IQuerySpecification -import org.eclipse.xtext.resource.XtextResourceSet - -class MyModule extends EMFPatternLanguageRuntimeModule implements Module { -// override public Class bindAnnotationValidatorLoader() { -// return typeof(ExtensionBasedAnnotationValidatorLoader); -// } - def public Class bindGenmodelMappingLoader() { - return typeof(GenmodelExtensionLoader); - } - override Class bindIMetamodelProvider() { - CompoundMetamodelProviderService - // PreloadedMetamodelProvider - } -} - -class VQLParser { - val Injector injector; - val SpecificationBuilder builder = new SpecificationBuilder - - new() { - EMFPatternLanguageStandaloneSetup.doSetup; - - injector = internalCreateInjector - } - - def protected Injector internalCreateInjector() { - new EMFPatternLanguageStandaloneSetup().createInjectorAndDoEMFRegistration(); - val Module module = new MyModule - val newInjector = Guice.createInjector(module) - return newInjector; - } - - public def createResourceSet() { - injector.getInstance(XtextResourceSet); - } - - /** - * Load patterns in two steps: first, the pattern models are are loaded to a resource set, then - * the linked patterns are loaded validated and translated to a {@link IQuerySpecification} object. - * @returns uri -> (name -> pattern) - */ - public def parse(List uris, ResourceSet resourceSet, ScriptConsole context) { - val res = new LinkedHashMap - val uri2resource = new LinkedHashMap - - for(uri : uris) { - var Resource resource - var PatternModel patternModel - try { - resource = resourceSet.getResource(URI.createURI(uri),true); - patternModel = resource.getContents().get(0) as PatternModel; - uri2resource.put(uri,patternModel) - } catch(RuntimeException e) { - context.writeError('''Unable to load patterns from "«uri»"!''') - } - } - - for(entry : uri2resource.entrySet) { - val uri = entry.key - val model = entry.value - EcoreUtil.resolveAll(model.eResource) - model.eResource.validate(uri, context) - - val map = new LinkedHashMap - for(pattern : model.patterns) { - val IQuerySpecification querySpecification = (this.builder as SpecificationBuilder).getOrCreateSpecification(pattern) - map.put(querySpecification.fullyQualifiedName.split('.').last,querySpecification) - } - res.put(uri,map) - } - - return res - } - - def private validate(Resource resource, String URI, ScriptConsole context) { - val errors = resource.errors - errors.forEach[context.writeError('''Error in loading pattern "«URI»": «it»''')] - } -} \ No newline at end of file -- cgit v1.2.3-70-g09d2