aboutsummaryrefslogtreecommitdiffstats
path: root/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/MultiplicityGoalConstraintCalculator.xtend
diff options
context:
space:
mode:
Diffstat (limited to 'Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/MultiplicityGoalConstraintCalculator.xtend')
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/MultiplicityGoalConstraintCalculator.xtend19
1 files changed, 16 insertions, 3 deletions
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/MultiplicityGoalConstraintCalculator.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/MultiplicityGoalConstraintCalculator.xtend
index e05160d0..e1358fb6 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/MultiplicityGoalConstraintCalculator.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/MultiplicityGoalConstraintCalculator.xtend
@@ -10,23 +10,33 @@ class MultiplicityGoalConstraintCalculator {
10 val String targetRelationName; 10 val String targetRelationName;
11 val IQuerySpecification<?> querySpecification; 11 val IQuerySpecification<?> querySpecification;
12 var ViatraQueryMatcher<?> matcher; 12 var ViatraQueryMatcher<?> matcher;
13 val boolean containment
14 val int cost
13 15
14 public new(String targetRelationName, IQuerySpecification<?> querySpecification) { 16 public new(String targetRelationName, IQuerySpecification<?> querySpecification, boolean containment, int cost) {
15 this.targetRelationName = targetRelationName 17 this.targetRelationName = targetRelationName
16 this.querySpecification = querySpecification 18 this.querySpecification = querySpecification
17 this.matcher = null 19 this.matcher = null
20 this.containment = containment
21 this.cost = cost
18 } 22 }
19 23
20 public new(MultiplicityGoalConstraintCalculator other) { 24 public new(MultiplicityGoalConstraintCalculator other) {
21 this.targetRelationName = other.targetRelationName 25 this.targetRelationName = other.targetRelationName
22 this.querySpecification = other.querySpecification 26 this.querySpecification = other.querySpecification
23 this.matcher = null 27 this.matcher = null
28 this.containment = other.containment
29 this.cost = other.cost
24 } 30 }
25 31
26 def public getName() { 32 def public getName() {
27 targetRelationName 33 targetRelationName
28 } 34 }
29 35
36 def isContainment() {
37 return containment
38 }
39
30 def public init(Notifier notifier) { 40 def public init(Notifier notifier) {
31 val engine = ViatraQueryEngine.on(new EMFScope(notifier)) 41 val engine = ViatraQueryEngine.on(new EMFScope(notifier))
32 matcher = querySpecification.getMatcher(engine) 42 matcher = querySpecification.getMatcher(engine)
@@ -36,11 +46,14 @@ class MultiplicityGoalConstraintCalculator {
36 var res = 0 46 var res = 0
37 val allMatches = this.matcher.allMatches 47 val allMatches = this.matcher.allMatches
38 for(match : allMatches) { 48 for(match : allMatches) {
39 //println(targetRelationName+ " missing multiplicity: "+match.get(3)) 49
40 val missingMultiplicity = match.get(4) as Integer 50 val missingMultiplicity = match.get(4) as Integer
41 res += missingMultiplicity 51 res += missingMultiplicity
52 if(missingMultiplicity!=0) {
53 println(targetRelationName+ " missing multiplicity: "+missingMultiplicity)
54 }
42 } 55 }
43 //println(targetRelationName+ " all missing multiplicities: "+res) 56 //println(targetRelationName+ " all missing multiplicities: "+res)
44 return res 57 return res*cost
45 } 58 }
46} \ No newline at end of file 59} \ No newline at end of file