diff options
author | OszkarSemerath <oszkar.semerath@gmail.com> | 2018-03-24 22:16:37 -0400 |
---|---|---|
committer | OszkarSemerath <oszkar.semerath@gmail.com> | 2018-03-24 22:16:37 -0400 |
commit | 4236f6735c91e8db3e4eb5641f5625f83024f434 (patch) | |
tree | 4daa916edd6d7f2e6d8908fe6582d166770193de /Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/validation/QueryAndMetamodelValidator.xtend | |
parent | example projects added (diff) | |
download | VIATRA-Generator-4236f6735c91e8db3e4eb5641f5625f83024f434.tar.gz VIATRA-Generator-4236f6735c91e8db3e4eb5641f5625f83024f434.tar.zst VIATRA-Generator-4236f6735c91e8db3e4eb5641f5625f83024f434.zip |
Removed unused projects
Diffstat (limited to 'Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/validation/QueryAndMetamodelValidator.xtend')
-rw-r--r-- | Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/validation/QueryAndMetamodelValidator.xtend | 53 |
1 files changed, 0 insertions, 53 deletions
diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/validation/QueryAndMetamodelValidator.xtend b/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/validation/QueryAndMetamodelValidator.xtend deleted file mode 100644 index e1a20ffd..00000000 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/validation/QueryAndMetamodelValidator.xtend +++ /dev/null | |||
@@ -1,53 +0,0 @@ | |||
1 | package hu.bme.mit.inf.dslreasoner.application.execution.validation | ||
2 | |||
3 | import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor | ||
4 | import hu.bme.mit.inf.dslreasoner.viatra2logic.ViatraQuerySetDescriptor | ||
5 | import java.util.List | ||
6 | import java.util.Set | ||
7 | import org.eclipse.emf.ecore.ENamedElement | ||
8 | import org.eclipse.viatra.query.patternlanguage.patternLanguage.Pattern | ||
9 | import org.eclipse.viatra.query.runtime.api.IQuerySpecification | ||
10 | import java.util.LinkedList | ||
11 | |||
12 | class QueryAndMetamodelValidator { | ||
13 | |||
14 | def public validateQueryAndMetamodel( | ||
15 | EcoreMetamodelDescriptor metamodel, | ||
16 | Pair<ViatraQuerySetDescriptor, Set<Pattern>> viatra) | ||
17 | { | ||
18 | val patterns = viatra.value | ||
19 | val elementsInMetamodel = | ||
20 | (metamodel.classes + | ||
21 | metamodel.enums + | ||
22 | metamodel.literals+ | ||
23 | metamodel.attributes + | ||
24 | metamodel.references) | ||
25 | .toSet | ||
26 | val errors = new LinkedList | ||
27 | for(pattern : patterns) { | ||
28 | val elements = getReferredNamedElements(pattern) | ||
29 | for(element : elements) { | ||
30 | if(!elementsInMetamodel.contains(element)) { | ||
31 | errors+='''Pattern "«pattern.name»" refers to an element "«element»" that is not included to the selected metamodel!''' | ||
32 | } | ||
33 | } | ||
34 | } | ||
35 | return errors | ||
36 | } | ||
37 | |||
38 | def getReferredNamedElements(Pattern pattern) { | ||
39 | val elements = pattern.eAllContents.toList | ||
40 | return elements.map[element| | ||
41 | val references = element.eClass.EAllReferences | ||
42 | return references.map[r | | ||
43 | if(r.isMany) { | ||
44 | return (element.eGet(r) as List<?>).filter(ENamedElement) | ||
45 | } else { | ||
46 | val value = element.eGet(r) | ||
47 | if(value instanceof ENamedElement) return #[value] | ||
48 | else return #[] | ||
49 | } | ||
50 | ].flatten.filter(ENamedElement) | ||
51 | ].flatten | ||
52 | } | ||
53 | } \ No newline at end of file | ||