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.xtend66
1 files changed, 0 insertions, 66 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
deleted file mode 100644
index 05ce4f6e..00000000
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/MultiplicityGoalConstraintCalculator.xtend
+++ /dev/null
@@ -1,66 +0,0 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra
2
3import org.eclipse.emf.common.notify.Notifier
4import org.eclipse.viatra.query.runtime.api.IQuerySpecification
5import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine
6import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher
7import org.eclipse.viatra.query.runtime.emf.EMFScope
8
9class MultiplicityGoalConstraintCalculator {
10 val String targetRelationName;
11 val IQuerySpecification<?> querySpecification;
12 var ViatraQueryMatcher<?> matcher;
13 val int minValue
14 val boolean containment
15 val int cost
16
17 public new(String targetRelationName, IQuerySpecification<?> querySpecification, int minValue, boolean containment, int cost) {
18 this.targetRelationName = targetRelationName
19 this.querySpecification = querySpecification
20 this.matcher = null
21 this.minValue = minValue
22 this.containment = containment
23 this.cost = cost
24 }
25
26 public new(MultiplicityGoalConstraintCalculator other) {
27 this.targetRelationName = other.targetRelationName
28 this.querySpecification = other.querySpecification
29 this.matcher = null
30 this.minValue = other.minValue
31 this.containment = other.containment
32 this.cost = other.cost
33 }
34
35 def public getName() {
36 targetRelationName
37 }
38
39 def isContainment() {
40 return containment
41 }
42
43 def public init(Notifier notifier) {
44 val engine = ViatraQueryEngine.on(new EMFScope(notifier))
45 matcher = querySpecification.getMatcher(engine)
46 }
47
48 def public calculateValue() {
49 var res = 0
50 val allMatches = this.matcher.allMatches
51 for(match : allMatches) {
52
53 val existingMultiplicity = match.get(4) as Integer
54 if(existingMultiplicity < this.minValue) {
55 val missingMultiplicity = this.minValue-existingMultiplicity
56 res += missingMultiplicity
57 }
58// if(missingMultiplicity!=0) {
59// println(targetRelationName+ " missing multiplicity: "+missingMultiplicity)
60// }
61 }
62// if(res>0)
63// println(targetRelationName+ " all missing multiplicities: "+res + "*"+cost+"="+res*cost)
64 return res*cost
65 }
66} \ No newline at end of file