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. --- .../ApplicationConfigurationLinkingService.xtend | 33 ++++++++++++++++++---- 1 file changed, 28 insertions(+), 5 deletions(-) (limited to 'Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/linking/ApplicationConfigurationLinkingService.xtend') diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/linking/ApplicationConfigurationLinkingService.xtend b/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/linking/ApplicationConfigurationLinkingService.xtend index 41a89e6f..fc4b721a 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/linking/ApplicationConfigurationLinkingService.xtend +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/linking/ApplicationConfigurationLinkingService.xtend @@ -20,6 +20,8 @@ import org.eclipse.xtext.conversion.ValueConverterException import org.eclipse.xtext.linking.impl.DefaultLinkingService import org.eclipse.xtext.nodemodel.ILeafNode import org.eclipse.xtext.nodemodel.INode +import org.eclipse.emf.ecore.resource.ResourceSet +import org.eclipse.emf.ecore.EPackage class ApplicationConfigurationLinkingService extends DefaultLinkingService{ @@ -57,11 +59,32 @@ class ApplicationConfigurationLinkingService extends DefaultLinkingService{ } private def getEPackage(EPackageImport packageImport, ILeafNode node) { - getNSUri(node).flatMap [ uri | - Optional.ofNullable(metamodelProvider.loadEPackage(uri, packageImport.eResource.resourceSet)) - ].map [ ePackage | - Collections.singletonList(ePackage as EObject) - ].orElse(emptyList) + val x = getNSUri(node) + if(x.isPresent) { + val uriString = x.get + val epackageByMetamodelProvider = metamodelProvider.loadEPackage(uriString, packageImport.eResource.resourceSet) + val epackageByMe = ePackageByMe(packageImport.eResource.resourceSet,uriString) + //println(epackageByMetamodelProvider) + //println(epackageByMe) + if(epackageByMetamodelProvider!==null) { + return Collections.singletonList(epackageByMetamodelProvider as EObject) + } else if(epackageByMe !== null) { + return Collections.singletonList(epackageByMe as EObject) + } else { + emptyList + } + } else { + return emptyList + } + } + + private def ePackageByMe(ResourceSet rs, String uri) { + try { + val resource = rs.getResource(URI.createURI(uri), true); + return resource.contents.head as EPackage + } catch (Exception e) { + return null + } } private def getViatra(ViatraImport viatraImport, INode node) { -- cgit v1.2.3-70-g09d2