aboutsummaryrefslogtreecommitdiffstats
path: root/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/ModelLoader.xtend
blob: 350901ea8fd2fc2fcdce0ef821d918c91aeb314b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package hu.bme.mit.inf.dslreasoner.application.execution

import hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.PartialModelSpecification
import java.util.List
import org.eclipse.emf.common.util.URI
import org.eclipse.emf.ecore.EObject

class ModelLoader {
	
	def List<EObject> loadModel(PartialModelSpecification specification, ScriptExecutor scriptExecutor) {
		val entries = specification.entry
		if (entries.size == 1) {
			var URI uri
			try {
				uri = URI::createURI(
					scriptExecutor.getFileSpecification(specification.entry.head.path).path
				)
			} catch (IllegalArgumentException e) {
				return null
			}

			val resourceSet = specification.eResource.resourceSet
			val resource = resourceSet.getResource(uri, true)
			if (resource === null) {
			} else {
				return resource.allContents.toList
			}
		} else {
			throw new UnsupportedOperationException('''Currently single partial models are supported''')
		}

	}
}