diff options
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.xtend | 97 |
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 @@ | |||
1 | package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra | ||
2 | |||
3 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel | ||
4 | import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem | ||
5 | import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery | ||
6 | import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternProvider | ||
7 | import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.rules.GoalConstraintProvider | ||
8 | import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.rules.RefinementRuleProvider | ||
9 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation | ||
10 | import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace | ||
11 | import java.util.Collection | ||
12 | import java.util.List | ||
13 | import java.util.Set | ||
14 | import org.eclipse.viatra.query.runtime.api.IPatternMatch | ||
15 | import org.eclipse.viatra.query.runtime.api.IQuerySpecification | ||
16 | import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher | ||
17 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQuery | ||
18 | import org.eclipse.viatra.transformation.runtime.emf.rules.batch.BatchTransformationRule | ||
19 | import org.eclipse.xtend.lib.annotations.Data | ||
20 | |||
21 | class 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 | } | ||
48 | enum TypeInferenceMethod { | ||
49 | Generic, PreliminaryAnalysis | ||
50 | } | ||
51 | |||
52 | class 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 | } | ||