From 60f01f46ba232ed6416054f0a6115cb2a9b70b4e Mon Sep 17 00:00:00 2001 From: OszkarSemerath Date: Sat, 10 Jun 2017 19:05:05 +0200 Subject: Migrating Additional projects --- .../ModelGenerationMethodProvider.xtend | 78 ++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend (limited to 'Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend') 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 @@ +package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra + +import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Relation +import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type +import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem +import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternProvider +import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.rules.GoalConstraintProvider +import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.rules.RefinementRuleProvider +import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation +import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace +import java.util.Collection +import java.util.LinkedHashMap +import java.util.List +import org.eclipse.viatra.query.runtime.api.GenericPatternMatch +import org.eclipse.viatra.query.runtime.api.IQuerySpecification +import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher +import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQuery +import org.eclipse.viatra.transformation.runtime.emf.rules.batch.BatchTransformationRule +import org.eclipse.xtend.lib.annotations.Data +import org.eclipse.viatra.query.runtime.api.IPatternMatch + +class ModelGenerationStatistics { + public var long transformationExecutionTime = 0 + synchronized def addExecutionTime(long amount) { + transformationExecutionTime+=amount + } + public var long PreliminaryTypeAnalisisTime = 0 +} +@Data class ModelGenerationMethod { + ModelGenerationStatistics statistics + + Collection> objectRefinementRules + Collection> relationRefinementRules + + List unfinishedMultiplicities + Collection>> unfinishedWF + + Collection>> invalidWF +} +enum TypeInferenceMethod { + Generic, PreliminaryAnalysis +} + +class ModelGenerationMethodProvider { + private val PatternProvider patternProvider = new PatternProvider + private val RefinementRuleProvider refinementRuleProvider = new RefinementRuleProvider + private val GoalConstraintProvider goalConstraintProvider = new GoalConstraintProvider + + public def ModelGenerationMethod createModelGenerationMethod( + LogicProblem logicProblem, + PartialInterpretation emptySolution, + Iterable existingQueries, + ReasonerWorkspace workspace, + boolean nameNewElements, + TypeInferenceMethod typeInferenceMethod + ) { + val statistics = new ModelGenerationStatistics + val queries = patternProvider.generateQueries(logicProblem,emptySolution,statistics,existingQueries,workspace,typeInferenceMethod) + + val //LinkedHashMap, BatchTransformationRule>> + objectRefinementRules = refinementRuleProvider.createObjectRefinementRules(queries,nameNewElements,statistics) + val relationRefinementRules = refinementRuleProvider.createRelationRefinementRules(queries,statistics) + + val unfinishedMultiplicities = goalConstraintProvider.getUnfinishedMultiplicityQueries(queries) + val unfinishedWF = queries.getUnfinishedWFQueries.values + + val invalidWF = queries.getInvalidWFQueries.values + + return new ModelGenerationMethod( + statistics, + objectRefinementRules.values, + relationRefinementRules.values, + unfinishedMultiplicities, + unfinishedWF, + invalidWF + ) + } +} -- cgit v1.2.3-54-g00ecf