diff options
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.xtend | 19 |
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 |