From b49dba90d3fdad79655e2d49a43294fd38ec38c4 Mon Sep 17 00:00:00 2001
From: Philip Makedonski <makedonski@cs.uni-goettingen.de>
Date: Sat, 18 May 2024 13:57:53 +0200
Subject: [PATCH] + initial resource description strategy (may be removed again

---
 .../src/org/etsi/mts/tdl/RDS.xtend            | 35 +++++++++++++++++++
 1 file changed, 35 insertions(+)
 create mode 100644 plugins/org.etsi.mts.tdl.tx/src/org/etsi/mts/tdl/RDS.xtend

diff --git a/plugins/org.etsi.mts.tdl.tx/src/org/etsi/mts/tdl/RDS.xtend b/plugins/org.etsi.mts.tdl.tx/src/org/etsi/mts/tdl/RDS.xtend
new file mode 100644
index 00000000..0f891f3d
--- /dev/null
+++ b/plugins/org.etsi.mts.tdl.tx/src/org/etsi/mts/tdl/RDS.xtend
@@ -0,0 +1,35 @@
+package org.etsi.mts.tdl;
+
+import com.google.inject.Inject
+import java.util.HashMap
+import org.eclipse.xtext.naming.QualifiedName
+import org.eclipse.xtext.resource.EObjectDescription
+import org.eclipse.xtext.resource.IEObjectDescription
+import org.eclipse.xtext.resource.impl.DefaultResourceDescriptionStrategy
+import org.eclipse.xtext.scoping.impl.ImportUriResolver
+import org.eclipse.xtext.util.IAcceptor
+import org.eclipse.emf.ecore.EObject
+
+class RDS extends DefaultResourceDescriptionStrategy {
+	public static final String INCLUDES = "includes"
+	@Inject
+	ImportUriResolver uriResolver
+
+	override createEObjectDescriptions(EObject eObject, IAcceptor<IEObjectDescription> acceptor) {
+		if(eObject instanceof Package) {
+			this.createEObjectDescriptionForPackage(eObject, acceptor)
+			return true
+		}
+		else {
+			super.createEObjectDescriptions(eObject, acceptor)
+		}
+	}
+
+	def void createEObjectDescriptionForPackage(Package model, IAcceptor<IEObjectDescription> acceptor) {
+		val uris = newArrayList()
+		model.import.forEach[uris.add(uriResolver.apply(it.importedPackage))]
+		val userData = new HashMap<String,String>
+		userData.put(INCLUDES, uris.join(","))
+		acceptor.accept(EObjectDescription.create(QualifiedName.create(model.eResource.URI.toString), model, userData))
+	}
+}
\ No newline at end of file
-- 
GitLab