aboutsummaryrefslogtreecommitdiffstats
path: root/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/FileSystemInconsistencyDetector.xtend
diff options
context:
space:
mode:
Diffstat (limited to 'Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/FileSystemInconsistencyDetector.xtend')
-rw-r--r--Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/FileSystemInconsistencyDetector.xtend53
1 files changed, 53 insertions, 0 deletions
diff --git a/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/FileSystemInconsistencyDetector.xtend b/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/FileSystemInconsistencyDetector.xtend
new file mode 100644
index 00000000..e79a6261
--- /dev/null
+++ b/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/FileSystemInconsistencyDetector.xtend
@@ -0,0 +1,53 @@
1package hu.bme.mit.inf.dslreasoner.run
2
3import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher
4import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
5import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ModelGenerationMethodBasedGlobalConstraint
6import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.ModelGenerationMethod
7import org.eclipse.viatra.dse.base.ThreadContext
8
9class FileSystemInconsistencyDetector extends ModelGenerationMethodBasedGlobalConstraint {
10 var PartialInterpretation partialInterpretation
11
12 //unfinishedLowerMultiplicity_root_reference_FileSystem
13 //unfinishedLowerMultiplicity_filesystems_reference_Model
14 var ViatraQueryMatcher<?> filesystem
15 var ViatraQueryMatcher<?> root
16
17 new(ModelGenerationMethod method) {
18 super(method)
19 }
20
21 override init(ThreadContext context) {
22 partialInterpretation = context.model as PartialInterpretation
23
24 try{
25 this.filesystem = method.allPatterns.filter[
26 it.fullyQualifiedName.equals("unfinishedLowerMultiplicity_root_reference_FileSystem")
27 ].head.getMatcher(context.queryEngine)
28
29 this.root = method.allPatterns.filter[
30 it.fullyQualifiedName.equals("unfinishedLowerMultiplicity_filesystems_reference_Model")
31 ].head.getMatcher(context.queryEngine)
32
33 } catch(Exception e) { }
34 }
35
36 override checkGlobalConstraint(ThreadContext context) {
37 var requiredNewObjects =
38 filesystem.countMatches*2 +
39 root.countMatches
40 val availableNewObjects = partialInterpretation.maxNewElements
41 val res = availableNewObjects >= requiredNewObjects
42 //println('''[«availableNewObjects» >= «requiredNewObjects»] = «res»''')
43 return res
44 }
45
46 override createNew() {
47 return new FileSystemInconsistencyDetector(this.method)
48 }
49
50 override getName() {
51 this.class.simpleName
52 }
53}