aboutsummaryrefslogtreecommitdiffstats
path: root/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.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/ModelGenerationMethodProvider.xtend')
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend78
1 files changed, 78 insertions, 0 deletions
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend
new file mode 100644
index 00000000..1653226d
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend
@@ -0,0 +1,78 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra
2
3import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Relation
4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type
5import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
6import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternProvider
7import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.rules.GoalConstraintProvider
8import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.rules.RefinementRuleProvider
9import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
10import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace
11import java.util.Collection
12import java.util.LinkedHashMap
13import java.util.List
14import org.eclipse.viatra.query.runtime.api.GenericPatternMatch
15import org.eclipse.viatra.query.runtime.api.IQuerySpecification
16import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher
17import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQuery
18import org.eclipse.viatra.transformation.runtime.emf.rules.batch.BatchTransformationRule
19import org.eclipse.xtend.lib.annotations.Data
20import org.eclipse.viatra.query.runtime.api.IPatternMatch
21
22class ModelGenerationStatistics {
23 public var long transformationExecutionTime = 0
24 synchronized def addExecutionTime(long amount) {
25 transformationExecutionTime+=amount
26 }
27 public var long PreliminaryTypeAnalisisTime = 0
28}
29@Data class ModelGenerationMethod {
30 ModelGenerationStatistics statistics
31
32 Collection<? extends BatchTransformationRule<?,?>> objectRefinementRules
33 Collection<? extends BatchTransformationRule<?,?>> relationRefinementRules
34
35 List<MultiplicityGoalConstraintCalculator> unfinishedMultiplicities
36 Collection<? extends IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> unfinishedWF
37
38 Collection<? extends IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> invalidWF
39}
40enum TypeInferenceMethod {
41 Generic, PreliminaryAnalysis
42}
43
44class ModelGenerationMethodProvider {
45 private val PatternProvider patternProvider = new PatternProvider
46 private val RefinementRuleProvider refinementRuleProvider = new RefinementRuleProvider
47 private val GoalConstraintProvider goalConstraintProvider = new GoalConstraintProvider
48
49 public def ModelGenerationMethod createModelGenerationMethod(
50 LogicProblem logicProblem,
51 PartialInterpretation emptySolution,
52 Iterable<PQuery> existingQueries,
53 ReasonerWorkspace workspace,
54 boolean nameNewElements,
55 TypeInferenceMethod typeInferenceMethod
56 ) {
57 val statistics = new ModelGenerationStatistics
58 val queries = patternProvider.generateQueries(logicProblem,emptySolution,statistics,existingQueries,workspace,typeInferenceMethod)
59
60 val //LinkedHashMap<Pair<Relation, ? extends Type>, BatchTransformationRule<GenericPatternMatch, ViatraQueryMatcher<GenericPatternMatch>>>
61 objectRefinementRules = refinementRuleProvider.createObjectRefinementRules(queries,nameNewElements,statistics)
62 val relationRefinementRules = refinementRuleProvider.createRelationRefinementRules(queries,statistics)
63
64 val unfinishedMultiplicities = goalConstraintProvider.getUnfinishedMultiplicityQueries(queries)
65 val unfinishedWF = queries.getUnfinishedWFQueries.values
66
67 val invalidWF = queries.getInvalidWFQueries.values
68
69 return new ModelGenerationMethod(
70 statistics,
71 objectRefinementRules.values,
72 relationRefinementRules.values,
73 unfinishedMultiplicities,
74 unfinishedWF,
75 invalidWF
76 )
77 }
78}