blob: 6d772f32c2c4ad5e5419d20f19e942ecbf1bdd57 (
plain) (
blame)
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
|
package hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse
import com.google.common.collect.ImmutableList
import java.util.ArrayList
import java.util.Collection
import org.eclipse.viatra.dse.objectives.Comparators
import org.eclipse.viatra.dse.objectives.IGlobalConstraint
import org.eclipse.viatra.dse.objectives.impl.ConstraintsObjective
import org.eclipse.viatra.dse.objectives.impl.ConstraintsObjective.QueryConstraint
import org.eclipse.viatra.dse.objectives.impl.ModelQueriesGlobalConstraint
import org.eclipse.viatra.query.runtime.api.IPatternMatch
import org.eclipse.viatra.query.runtime.api.IQuerySpecification
import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher
class WF2ObjectiveConverter {
static val INVALIDATED_WFS_NAME = "invalidatedWFs"
def createCompletenessObjective(
Collection<? extends IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> unfinishedWF) {
new UnfinishedWFObjective(unfinishedWF)
}
def createInvalidationObjective(
Collection<? extends IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> invalidatedByWF) {
createConstraintObjective(INVALIDATED_WFS_NAME, invalidatedByWF)
}
def IGlobalConstraint createInvalidationGlobalConstraint(
Collection<? extends IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> invalidatedByWF) {
new ModelQueriesGlobalConstraint(INVALIDATED_WFS_NAME, new ArrayList(invalidatedByWF))
}
private def createConstraintObjective(String name,
Collection<? extends IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> queries) {
val res = new ConstraintsObjective(
name,
ImmutableList.copyOf(queries.map [
new QueryConstraint(it.fullyQualifiedName, it, 1.0)
])
)
res.withComparator(Comparators.LOWER_IS_BETTER)
res.level = 2
res
}
}
|