aboutsummaryrefslogtreecommitdiffstats
path: root/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/MetamodelLoader.xtend
diff options
context:
space:
mode:
authorLibravatar OszkarSemerath <oszka@152.66.252.189>2017-09-27 22:47:51 +0200
committerLibravatar OszkarSemerath <oszka@152.66.252.189>2017-09-27 22:47:51 +0200
commit0d4516ef455e916ffac2702d2bfe727c71789bc0 (patch)
treecb16562d8c29f2df497d876ab46ca1e1e99f8c0b /Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/MetamodelLoader.xtend
parentSet thread stop signal to volatile (diff)
downloadVIATRA-Generator-0d4516ef455e916ffac2702d2bfe727c71789bc0.tar.gz
VIATRA-Generator-0d4516ef455e916ffac2702d2bfe727c71789bc0.tar.zst
VIATRA-Generator-0d4516ef455e916ffac2702d2bfe727c71789bc0.zip
Research paper measurement configuration updates
Diffstat (limited to 'Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/MetamodelLoader.xtend')
-rw-r--r--Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/MetamodelLoader.xtend150
1 files changed, 132 insertions, 18 deletions
diff --git a/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/MetamodelLoader.xtend b/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/MetamodelLoader.xtend
index 60908365..10072f5a 100644
--- a/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/MetamodelLoader.xtend
+++ b/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/MetamodelLoader.xtend
@@ -1,25 +1,30 @@
1package hu.bme.mit.inf.dslreasoner.run 1package hu.bme.mit.inf.dslreasoner.run
2 2
3import hu.bme.mit.inf.dslreasomer.domains.transima.fam.FunctionalArchitecture.FunctionalArchitecturePackage 3import hu.bme.mit.inf.dslreasomer.domains.transima.fam.FunctionalArchitecture.FunctionalArchitecturePackage
4import hu.bme.mit.inf.dslreasoner.domains.alloyexamples.FileSystem
5import hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Filesystem.FilesystemPackage
6import hu.bme.mit.inf.dslreasoner.domains.transima.fam.patterns.Pattern
7import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.YakindummPackage
4import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor 8import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor
9import hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.Patterns
5import hu.bme.mit.inf.dslreasoner.viatra2logic.ViatraQuerySetDescriptor 10import hu.bme.mit.inf.dslreasoner.viatra2logic.ViatraQuerySetDescriptor
11import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.ModelGenerationMethod
12import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ModelGenerationMethodBasedGlobalConstraint
13import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace
14import java.util.Collection
6import java.util.LinkedHashMap 15import java.util.LinkedHashMap
7import java.util.List 16import java.util.List
17import java.util.Set
8import org.eclipse.emf.ecore.EAttribute 18import org.eclipse.emf.ecore.EAttribute
9import org.eclipse.emf.ecore.EClass 19import org.eclipse.emf.ecore.EClass
10import org.eclipse.emf.ecore.EEnum 20import org.eclipse.emf.ecore.EEnum
11import org.eclipse.emf.ecore.EEnumLiteral 21import org.eclipse.emf.ecore.EEnumLiteral
22import org.eclipse.emf.ecore.EObject
12import org.eclipse.emf.ecore.EReference 23import org.eclipse.emf.ecore.EReference
13import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.YakindummPackage
14import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ModelGenerationMethodBasedGlobalConstraint
15import org.eclipse.xtext.xbase.lib.Functions.Function1 24import org.eclipse.xtext.xbase.lib.Functions.Function1
16import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.ModelGenerationMethod 25import java.util.HashMap
17import org.eclipse.emf.ecore.EObject 26import org.eclipse.emf.ecore.EcorePackage
18import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace 27import hu.bme.mit.inf.dslreasoner.domains.alloyexamples.Ecore
19import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.DiversityDescriptor
20import java.util.Collection
21import java.util.Set
22import java.util.Collections
23 28
24abstract class MetamodelLoader { 29abstract class MetamodelLoader {
25 protected val ReasonerWorkspace workspace 30 protected val ReasonerWorkspace workspace
@@ -65,7 +70,7 @@ class FAMLoader extends MetamodelLoader{
65 } 70 }
66 71
67 override loadQueries(EcoreMetamodelDescriptor metamodel) { 72 override loadQueries(EcoreMetamodelDescriptor metamodel) {
68 val i = hu.bme.mit.inf.dslreasoner.domains.transima.fam.patterns.Pattern.instance 73 val i = Pattern.instance
69 val patterns = i.specifications.toList 74 val patterns = i.specifications.toList
70 val wfPatterns = patterns.filter[it.allAnnotations.exists[it.name== "Constraint"]].toSet 75 val wfPatterns = patterns.filter[it.allAnnotations.exists[it.name== "Constraint"]].toSet
71 val derivedFeatures = new LinkedHashMap 76 val derivedFeatures = new LinkedHashMap
@@ -88,11 +93,12 @@ class FAMLoader extends MetamodelLoader{
88class YakinduLoader extends MetamodelLoader{ 93class YakinduLoader extends MetamodelLoader{
89 94
90 private var useSynchronization = true; 95 private var useSynchronization = true;
96 private var useComplexStates = false;
91 public static val patternsWithSynchronization = #[ 97 public static val patternsWithSynchronization = #[
92 "synchHasNoOutgoing", "synchHasNoIncoming", "SynchronizedIncomingInSameRegion", "notSynchronizingStates", 98 "synchHasNoOutgoing", "synchHasNoIncoming", "SynchronizedIncomingInSameRegion", "notSynchronizingStates",
93 "hasMultipleOutgoingTrainsition", "hasMultipleIncomingTrainsition", "SynchronizedRegionsAreNotSiblings", 99 "hasMultipleOutgoingTrainsition", "hasMultipleIncomingTrainsition", "SynchronizedRegionsAreNotSiblings",
94 "SynchronizedRegionDoesNotHaveMultipleRegions", "synchThree", "twoSynch"] 100 "SynchronizedRegionDoesNotHaveMultipleRegions", "synchThree", "twoSynch","noSynch2","synch","noSynch4","noSynch3","noSynch"]
95 101 public static val patternsWithComplexStates =#["outgoingFromExit","outgoingFromFinal","choiceHasNoOutgoing","choiceHasNoIncoming"]
96 new(ReasonerWorkspace workspace) { 102 new(ReasonerWorkspace workspace) {
97 super(workspace) 103 super(workspace)
98 } 104 }
@@ -100,12 +106,19 @@ class YakinduLoader extends MetamodelLoader{
100 public def setUseSynchronization(boolean useSynchronization) { 106 public def setUseSynchronization(boolean useSynchronization) {
101 this.useSynchronization = useSynchronization 107 this.useSynchronization = useSynchronization
102 } 108 }
109 public def setUseComplexStates(boolean useComplexStates) {
110 this.useComplexStates = useComplexStates
111 }
103 112
104 override loadMetamodel() { 113 override loadMetamodel() {
105 val useSynchInThisLoad = this.useSynchronization 114 val useSynchInThisLoad = this.useSynchronization
115 val useComplexStates = this.useComplexStates
106 116
107 val package = YakindummPackage.eINSTANCE 117 val package = YakindummPackage.eINSTANCE
108 val List<EClass> classes = package.EClassifiers.filter(EClass).filter[(useSynchInThisLoad) || (it.name != "Synchronization")].toList 118 val List<EClass> classes = package.EClassifiers.filter(EClass)
119 .filter[useSynchInThisLoad || (it.name != "Synchronization")]
120 .filter[useComplexStates || (it.name != "Choice" && it.name != "Exit" && it.name != "FinalState")]
121 .toList
109 val List<EEnum> enums = package.EClassifiers.filter(EEnum).toList 122 val List<EEnum> enums = package.EClassifiers.filter(EEnum).toList
110 val List<EEnumLiteral> literals = enums.map[ELiterals].flatten.toList 123 val List<EEnumLiteral> literals = enums.map[ELiterals].flatten.toList
111 val List<EReference> references = classes.map[EReferences].flatten.toList 124 val List<EReference> references = classes.map[EReferences].flatten.toList
@@ -116,11 +129,17 @@ class YakinduLoader extends MetamodelLoader{
116 override loadQueries(EcoreMetamodelDescriptor metamodel) { 129 override loadQueries(EcoreMetamodelDescriptor metamodel) {
117 val useSynchInThisLoad = this.useSynchronization 130 val useSynchInThisLoad = this.useSynchronization
118 131
119 val i = hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.Patterns.instance 132 val i = Patterns.instance
120 val patterns = i.specifications.filter[spec | 133 val patterns = i.specifications
121 useSynchInThisLoad || 134 .filter[spec |
122 !patternsWithSynchronization.exists[spec.fullyQualifiedName.endsWith(it)] 135 useSynchInThisLoad ||
123 ].toList 136 !patternsWithSynchronization.exists[spec.fullyQualifiedName.endsWith(it)]
137 ]
138 .filter[spec |
139 useComplexStates ||
140 !patternsWithComplexStates.exists[spec.fullyQualifiedName.endsWith(it)]
141 ]
142 .toList
124 val wfPatterns = patterns.filter[it.allAnnotations.exists[it.name== "Constraint"]].toSet 143 val wfPatterns = patterns.filter[it.allAnnotations.exists[it.name== "Constraint"]].toSet
125 val derivedFeatures = new LinkedHashMap 144 val derivedFeatures = new LinkedHashMap
126 val res = new ViatraQuerySetDescriptor( 145 val res = new ViatraQuerySetDescriptor(
@@ -145,4 +164,99 @@ class YakinduLoader extends MetamodelLoader{
145 override additionalConstraints() { //#[] 164 override additionalConstraints() { //#[]
146 #[[method | new SGraphInconsistencyDetector(method)]] 165 #[[method | new SGraphInconsistencyDetector(method)]]
147 } 166 }
167}
168
169class FileSystemLoader extends MetamodelLoader{
170
171 new(ReasonerWorkspace workspace) {
172 super(workspace)
173 }
174
175 override loadMetamodel() {
176 val package = FilesystemPackage.eINSTANCE
177 val List<EClass> classes = package.EClassifiers.filter(EClass).toList
178 val List<EEnum> enums = package.EClassifiers.filter(EEnum).toList
179 val List<EEnumLiteral> literals = enums.map[ELiterals].flatten.toList
180 val List<EReference> references = classes.map[EReferences].flatten.toList
181 val List<EAttribute> attributes = classes.map[EAttributes].flatten.toList
182 return new EcoreMetamodelDescriptor(classes,#{},false,enums,literals,references,attributes)
183 }
184
185 override getRelevantTypes(EcoreMetamodelDescriptor descriptor) {
186 return null
187 }
188
189 override getRelevantReferences(EcoreMetamodelDescriptor descriptor) {
190 null
191 }
192
193 override loadQueries(EcoreMetamodelDescriptor metamodel) {
194 val patternGroup = FileSystem.instance
195 val patterns = patternGroup.specifications.toList
196 val wfPatterns = patterns.filter[it.allAnnotations.exists[it.name == "Constraint"]].toSet
197 val derivedFeatures = new HashMap
198 derivedFeatures.put(patternGroup.live.internalQueryRepresentation,metamodel.references.filter[it.name == "live"].head)
199 return new ViatraQuerySetDescriptor(
200 patterns,
201 wfPatterns,
202 derivedFeatures
203 )
204
205 }
206
207 override loadPartialModel() {
208 this.workspace.readModel(EObject,"fs.xmi").eResource.allContents.toList
209 }
210
211 override additionalConstraints() {
212 #[[method | new FileSystemInconsistencyDetector(method)]]
213 }
214
215}
216
217class EcoreLoader extends MetamodelLoader {
218
219 new(ReasonerWorkspace workspace) {
220 super(workspace)
221 }
222
223 override loadMetamodel() {
224 val package = EcorePackage.eINSTANCE
225 val List<EClass> classes = package.EClassifiers.filter(EClass).filter[it.name!="EFactory"].toList
226 val List<EEnum> enums = package.EClassifiers.filter(EEnum).toList
227 val List<EEnumLiteral> literals = enums.map[ELiterals].flatten.toList
228 val List<EReference> references = classes.map[EReferences].flatten.filter[it.name!="eFactoryInstance"].filter[!it.derived].toList
229 val List<EAttribute> attributes = #[] //classes.map[EAttributes].flatten.toList
230 return new EcoreMetamodelDescriptor(classes,#{},false,enums,literals,references,attributes)
231 }
232
233 override getRelevantTypes(EcoreMetamodelDescriptor descriptor) {
234 return null
235 }
236
237 override getRelevantReferences(EcoreMetamodelDescriptor descriptor) {
238 null
239 }
240
241 override loadQueries(EcoreMetamodelDescriptor metamodel) {
242 val patternGroup = Ecore.instance
243 val patterns = patternGroup.specifications.toList
244 val wfPatterns = patterns.filter[it.allAnnotations.exists[it.name == "Constraint"]].toSet
245 val derivedFeatures = new HashMap
246 return new ViatraQuerySetDescriptor(
247 patterns,
248 wfPatterns,
249 derivedFeatures
250 )
251
252 }
253
254 override loadPartialModel() {
255 this.workspace.readModel(EObject,"ecore.xmi").eResource.allContents.toList
256 }
257
258 override additionalConstraints() {
259 #[]
260 }
261
148} \ No newline at end of file 262} \ No newline at end of file