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.xtend97
1 files changed, 0 insertions, 97 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
deleted file mode 100644
index 8a26470a..00000000
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend
+++ /dev/null
@@ -1,97 +0,0 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra
2
3import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel
4import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
5import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery
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.List
13import java.util.Set
14import org.eclipse.viatra.query.runtime.api.IPatternMatch
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
20
21class ModelGenerationStatistics {
22 public var long transformationExecutionTime = 0
23 public var long metricCalculationTime = 0
24
25 synchronized def addExecutionTime(long amount) {
26 transformationExecutionTime+=amount
27 }
28
29 synchronized def addMetricCalculationTime(long amount) {
30 metricCalculationTime+=amount
31 }
32
33 public var long PreliminaryTypeAnalisisTime = 0
34}
35@Data class ModelGenerationMethod {
36 ModelGenerationStatistics statistics
37
38 Collection<? extends BatchTransformationRule<?,?>> objectRefinementRules
39 Collection<? extends BatchTransformationRule<?,?>> relationRefinementRules
40
41 List<MultiplicityGoalConstraintCalculator> unfinishedMultiplicities
42 Collection<? extends IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> unfinishedWF
43
44 Collection<? extends IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> invalidWF
45
46 Collection<? extends IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> allPatterns
47}
48enum TypeInferenceMethod {
49 Generic, PreliminaryAnalysis
50}
51
52class ModelGenerationMethodProvider {
53 private val PatternProvider patternProvider = new PatternProvider
54 private val RefinementRuleProvider refinementRuleProvider = new RefinementRuleProvider
55 private val GoalConstraintProvider goalConstraintProvider = new GoalConstraintProvider
56
57 public def ModelGenerationMethod createModelGenerationMethod(
58 LogicProblem logicProblem,
59 PartialInterpretation emptySolution,
60 ReasonerWorkspace workspace,
61 boolean nameNewElements,
62 TypeInferenceMethod typeInferenceMethod,
63 ScopePropagator scopePropagator,
64 DocumentationLevel debugLevel
65 ) {
66 val statistics = new ModelGenerationStatistics
67 val writeFiles = (debugLevel === DocumentationLevel.NORMAL || debugLevel === DocumentationLevel.FULL)
68
69 val Set<PQuery> existingQueries = logicProblem
70 .relations
71 .map[annotations]
72 .flatten
73 .filter(TransfomedViatraQuery)
74 .map[it.patternPQuery as PQuery]
75 .toSet
76
77 val queries = patternProvider.generateQueries(logicProblem,emptySolution,statistics,existingQueries,workspace,typeInferenceMethod,writeFiles)
78 val //LinkedHashMap<Pair<Relation, ? extends Type>, BatchTransformationRule<GenericPatternMatch, ViatraQueryMatcher<GenericPatternMatch>>>
79 objectRefinementRules = refinementRuleProvider.createObjectRefinementRules(queries,scopePropagator,nameNewElements,statistics)
80 val relationRefinementRules = refinementRuleProvider.createRelationRefinementRules(queries,statistics)
81
82 val unfinishedMultiplicities = goalConstraintProvider.getUnfinishedMultiplicityQueries(queries)
83 val unfinishedWF = queries.getUnfinishedWFQueries.values
84
85 val invalidWF = queries.getInvalidWFQueries.values
86
87 return new ModelGenerationMethod(
88 statistics,
89 objectRefinementRules.values,
90 relationRefinementRules.values,
91 unfinishedMultiplicities,
92 unfinishedWF,
93 invalidWF,
94 queries.allQueries
95 )
96 }
97}