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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
package ca.mcgill.ecse.dslreasoner.vampire.icse
import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic
import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic_Trace
import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor
import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type
import hu.bme.mit.inf.dslreasoner.viatra2logic.ViatraQuerySetDescriptor
import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace
import java.util.HashMap
import java.util.List
import java.util.Map
import org.eclipse.emf.ecore.EAttribute
import org.eclipse.emf.ecore.EClass
import org.eclipse.emf.ecore.EEnum
import org.eclipse.emf.ecore.EEnumLiteral
import org.eclipse.emf.ecore.EObject
import org.eclipse.emf.ecore.EPackage
import org.eclipse.emf.ecore.EReference
import org.eclipse.emf.ecore.resource.Resource
import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl
import org.eclipse.viatra.query.runtime.api.IQueryGroup
class GeneralTest {
def static Map<Type, Integer> getTypeMap(Map<Class, Integer> classMap, EcoreMetamodelDescriptor metamodel, Ecore2Logic e2l, Ecore2Logic_Trace trace) {
val typeMap = new HashMap<Type, Integer>
val listMap = metamodel.classes.toMap[s|s.name]
for (Class elem : classMap.keySet) {
typeMap.put(e2l.TypeofEClass(
trace, listMap.get(elem.simpleName)
), classMap.get(elem))
}
return typeMap
}
def static loadMetamodel(EPackage pckg) {
val List<EClass> classes = pckg.getEClassifiers.filter(EClass).toList
val List<EEnum> enums = pckg.getEClassifiers.filter(EEnum).toList
val List<EEnumLiteral> literals = enums.map[getELiterals].flatten.toList
val List<EReference> references = classes.map[getEReferences].flatten.toList
val List<EAttribute> attributes = classes.map[getEAttributes].flatten.toList
return new EcoreMetamodelDescriptor(classes, #{}, false, enums, literals, references, attributes)
}
def static loadPartialModel(ReasonerWorkspace inputs, String path) {
Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("*", new XMIResourceFactoryImpl());
inputs.readModel(EObject, path).eResource.contents
// inputs.readModel(EObject,"FamInstance.xmi").eResource.allContents.toList
}
def static loadQueries(EcoreMetamodelDescriptor metamodel, IQueryGroup i) {
val patterns = i.specifications.toList
val wfPatterns = patterns.filter[it.allAnnotations.exists[it.name == "Constraint"]].toSet
val derivedFeatures = emptyMap
// NO DERIVED FEATURES
// val derivedFeatures = new LinkedHashMap
// derivedFeatures.put(i.type,metamodel.attributes.filter[it.name == "type"].head)
// derivedFeatures.put(i.model,metamodel.references.filter[it.name == "model"].head)
val res = new ViatraQuerySetDescriptor(
patterns,
wfPatterns,
derivedFeatures
)
return res
}
}
|