Commit d1304d09 authored by Simon Barner's avatar Simon Barner
Browse files

Merge branch '3791' into 'master'

3791

See merge request af3/af3!258
parents a799683b 30bd2dae
......@@ -12,193 +12,45 @@ Bundle-ActivationPolicy: lazy
Bundle-Activator: org.fortiss.af3.component.AF3ComponentActivator
Require-Bundle: org.fortiss.af3.allocation;visibility:=reexport,
org.fortiss.af3.expression;visibility:=reexport,
org.fortiss.af3.project;visibility:=reexport,
org.fortiss.pragmatictransformation,
org.fortiss.af3.tools
Export-Package: org.fortiss.af3.component;uses:="org.osgi.framework,
org.eclipse.core.runtime",
org.fortiss.af3.tools;visibility:=reexport
Export-Package: org.fortiss.af3.component,
org.fortiss.af3.component.compose,
org.fortiss.af3.component.constraint; uses:="org.eclipse.emf.ecore,
org.fortiss.af3.expression.model.terms.imperative,
org.fortiss.af3.component.model,
org.fortiss.tooling.kernel.extension.base,
org.fortiss.af3.component.model.behavior.code,
org.fortiss.tooling.kernel.extension.data,
org.fortiss.af3.project.model.typesystem,
org.fortiss.tooling.kernel.model,
org.fortiss.af3.component.model.behavior.common,
org.fortiss.af3.expression.model.terms",
org.fortiss.af3.component.generator.c; uses:="org.fortiss.af3.expression.model.terms.imperative,
org.fortiss.af3.expression.generator.c,
org.fortiss.tooling.kernel.extension.data,
org.fortiss.tooling.kernel.extension.base,
org.fortiss.af3.project.model.typesystem,
org.fortiss.af3.generator.common.model.c,
org.fortiss.tooling.kernel.extension",
org.fortiss.af3.component.generator.component; uses:="org.fortiss.af3.expression.model.terms.imperative,
org.fortiss.af3.component.model,
org.fortiss.tooling.kernel.extension.data,
org.fortiss.tooling.kernel.extension.base,
org.fortiss.af3.project.model.typesystem,
org.fortiss.af3.component.model.generator,
org.fortiss.af3.expression.generator,
org.fortiss.af3.expression.model.terms,
org.fortiss.af3.component.model.generator.port",
org.fortiss.af3.component.generator.java; uses:="org.fortiss.af3.expression.model.terms.imperative,
org.fortiss.tooling.kernel.extension.data,
org.fortiss.tooling.kernel.extension.base,
org.fortiss.af3.project.model.typesystem,
org.fortiss.af3.expression.generator,
org.fortiss.af3.expression.model.terms,
org.fortiss.tooling.kernel.extension,
org.fortiss.af3.generator.common.model.java",
org.fortiss.af3.component.constraint,
org.fortiss.af3.component.generator.c,
org.fortiss.af3.component.generator.component,
org.fortiss.af3.component.generator.fmu,
org.fortiss.af3.component.generator.java,
org.fortiss.af3.component.generator.nusmv,
org.fortiss.af3.component.library; uses:="org.fortiss.af3.component.model,
org.fortiss.tooling.kernel.extension.data,
org.fortiss.tooling.kernel.model,
org.fortiss.tooling.kernel.extension",
org.fortiss.af3.component.library.prototypes;uses:="org.fortiss.af3.component.model,
org.fortiss.tooling.kernel.extension.base,
org.fortiss.tooling.kernel.extension.data",
org.fortiss.af3.component.library,
org.fortiss.af3.component.library.prototypes,
org.fortiss.af3.component.listener,
org.fortiss.af3.component.migration,
org.fortiss.af3.component.model; uses:="org.eclipse.emf.ecore,
org.fortiss.tooling.base.model.element,
org.fortiss.af3.component.model.behavior.code,
org.fortiss.tooling.base.model.base,
org.eclipse.emf.common.util,
org.fortiss.af3.project.model.typesystem,
org.fortiss.tooling.kernel.model,
org.fortiss.af3.expression.model.terms,
org.fortiss.af3.expression.model.definitions.library,
org.fortiss.af3.expression.model",
org.fortiss.af3.component.model.behavior;uses:="org.eclipse.emf.ecore,
org.fortiss.tooling.base.model.element",
org.fortiss.af3.component.model.behavior.code; uses:="org.eclipse.emf.ecore,
org.fortiss.af3.expression.model.terms.imperative,
org.fortiss.af3.component.model,
org.fortiss.af3.component.model.behavior",
org.fortiss.af3.component.model.behavior.code.impl;uses:="org.fortiss.af3.component.model,
org.fortiss.af3.component.model.behavior.code",
org.fortiss.af3.component.model.behavior.code.util; uses:="org.eclipse.emf.ecore,
org.fortiss.tooling.base.model.element,
org.fortiss.af3.component.model.behavior,
org.fortiss.tooling.kernel.model,
org.fortiss.af3.component.model.behavior.code,
org.eclipse.emf.common.notify,
org.eclipse.emf.common.notify.impl,
org.eclipse.emf.ecore.util",
org.fortiss.af3.component.model.behavior.common; uses:="org.eclipse.emf.ecore,
org.eclipse.emf.common.util,
org.fortiss.af3.project.model.typesystem,
org.fortiss.tooling.kernel.model,
org.fortiss.af3.expression.model.terms",
org.fortiss.af3.component.model.behavior.common.impl;uses:="org.fortiss.af3.project.model.typesystem,
org.fortiss.af3.component.model,
org.fortiss.af3.component.model.behavior,
org.fortiss.af3.component.model.behavior.code,
org.fortiss.af3.component.model.behavior.code.impl,
org.fortiss.af3.component.model.behavior.code.util,
org.fortiss.af3.component.model.behavior.common,
org.fortiss.af3.expression.model.terms",
org.fortiss.af3.component.model.behavior.common.util; uses:="org.eclipse.emf.ecore,
org.fortiss.tooling.base.model.element,
org.fortiss.af3.project.model.typesystem,
org.fortiss.tooling.kernel.model,
org.fortiss.af3.component.model.behavior.common,
org.eclipse.emf.common.notify,
org.eclipse.emf.common.notify.impl,
org.eclipse.emf.ecore.util",
org.fortiss.af3.component.model.behavior.impl;uses:="org.eclipse.emf.ecore,
org.eclipse.emf.ecore.impl,
org.fortiss.af3.component.model.behavior",
org.fortiss.af3.component.model.behavior.util; uses:="org.eclipse.emf.ecore,
org.fortiss.tooling.base.model.element,
org.fortiss.af3.component.model.behavior,
org.fortiss.tooling.kernel.model,
org.eclipse.emf.common.notify,
org.eclipse.emf.common.notify.impl,
org.eclipse.emf.ecore.util",
org.fortiss.af3.component.model.generator; uses:="org.eclipse.emf.ecore,
org.eclipse.emf.common.util,
org.fortiss.tooling.kernel.model,
org.fortiss.af3.expression.model.definitions",
org.fortiss.af3.component.model.generator.impl; uses:="org.eclipse.emf.ecore,
org.eclipse.emf.ecore.impl,
org.eclipse.emf.common.util,
org.fortiss.af3.component.model.generator,
org.eclipse.emf.common.notify,
org.fortiss.af3.expression.model.definitions.impl",
org.fortiss.af3.component.model.generator.port; uses:="org.eclipse.emf.ecore,
org.fortiss.af3.expression.model.terms.imperative,
org.fortiss.af3.project.model.typesystem,
org.fortiss.af3.component.model.generator,
org.fortiss.af3.expression.model.terms",
org.fortiss.af3.component.model.generator.port.impl;uses:="org.fortiss.af3.component.model.generator.port",
org.fortiss.af3.component.model.generator.port.util; uses:="org.eclipse.emf.ecore,
org.fortiss.af3.expression.model.terms.imperative,
org.fortiss.af3.project.model.typesystem,
org.eclipse.emf.common.notify,
org.eclipse.emf.common.notify.impl,
org.fortiss.af3.expression.model.terms,
org.fortiss.af3.component.model.generator.port,
org.eclipse.emf.ecore.util",
org.fortiss.af3.component.model.generator.util; uses:="org.eclipse.emf.ecore,
org.fortiss.tooling.base.model.element,
org.fortiss.af3.project.model.typesystem,
org.fortiss.tooling.kernel.model,
org.fortiss.af3.component.model.generator,
org.fortiss.af3.expression.model.definitions,
org.eclipse.emf.common.notify,
org.eclipse.emf.common.notify.impl,
org.eclipse.emf.ecore.util",
org.fortiss.af3.component.model.impl; uses:="org.fortiss.af3.component.model,
org.eclipse.emf.common.util,
org.fortiss.af3.project.model.typesystem,
org.fortiss.af3.component.model.behavior.code,
org.fortiss.af3.expression.model.terms",
org.fortiss.af3.component.model.util; uses:="org.eclipse.emf.ecore,
org.fortiss.tooling.base.model.element,
org.fortiss.af3.component.model,
org.fortiss.tooling.base.model.layout,
org.fortiss.tooling.base.model.base,
org.fortiss.af3.project.model.typesystem,
org.fortiss.tooling.kernel.model,
org.eclipse.emf.common.notify,
org.eclipse.emf.common.notify.impl,
org.fortiss.af3.expression.model.definitions.library,
org.eclipse.emf.ecore.util",
org.fortiss.af3.component.model.behavior.common.impl,
org.fortiss.af3.component.model.behavior.common.util,
org.fortiss.af3.component.model.behavior.impl,
org.fortiss.af3.component.model.behavior.util,
org.fortiss.af3.component.model.generator,
org.fortiss.af3.component.model.generator.impl,
org.fortiss.af3.component.model.generator.port,
org.fortiss.af3.component.model.generator.port.impl,
org.fortiss.af3.component.model.generator.port.util,
org.fortiss.af3.component.model.generator.util,
org.fortiss.af3.component.model.impl,
org.fortiss.af3.component.model.util,
org.fortiss.af3.component.prototypes,
org.fortiss.af3.component.simulator; uses:="org.eclipse.emf.ecore,
org.fortiss.af3.component.model,
org.fortiss.af3.project.typesystem,
org.fortiss.af3.project.model.typesystem,
org.fortiss.af3.component.model.behavior.code,
org.fortiss.af3.project.typesystem.evaluation",
org.fortiss.af3.component.simulator.transform; uses:="org.fortiss.tooling.base.model.element,
org.fortiss.af3.component.model,
org.fortiss.tooling.kernel.extension.data,
org.fortiss.tooling.kernel.extension.exception,
org.fortiss.tooling.kernel.extension,
org.fortiss.af3.component.simulator",
org.fortiss.af3.component.utils; uses:="org.eclipse.emf.ecore,
org.fortiss.af3.expression.model.terms.imperative,
org.fortiss.af3.project.model.execution,
org.fortiss.tooling.base.model.element,
org.fortiss.af3.component.model,
org.fortiss.af3.component.model.behavior.code,
org.fortiss.af3.component.model.generator,
org.fortiss.af3.component.model.generator.port,
org.fortiss.af3.component.simulator,
org.fortiss.af3.project.model,
org.eclipse.emf.common.util,
org.fortiss.af3.project.model.typesystem,
org.fortiss.af3.component.model.behavior.common,
org.fortiss.af3.expression.model.terms,
org.fortiss.af3.expression.model",
org.fortiss.af3.component.simulator,
org.fortiss.af3.component.simulator.transform,
org.fortiss.af3.component.utils,
test.org.fortiss.af3.component,
test.org.fortiss.af3.component.library; uses:="org.eclipse.emf.ecore,
org.fortiss.af3.component.model,
org.fortiss.tooling.kernel.model,
org.fortiss.af3.project.model",
test.org.fortiss.af3.component.model; uses:="org.fortiss.af3.project.model.execution,
org.fortiss.af3.component.model,
test.org.fortiss.af3.expression.base,
org.fortiss.af3.component.model.behavior.code,
org.fortiss.af3.component.simulator",
test.org.fortiss.af3.component.simulator;uses:="test.org.fortiss.af3.testbase,
org.fortiss.af3.component.simulator"
test.org.fortiss.af3.component.codespec,
test.org.fortiss.af3.component.generator,
test.org.fortiss.af3.component.library,
test.org.fortiss.af3.component.model,
test.org.fortiss.af3.component.semantics,
test.org.fortiss.af3.component.simulator
GanttComposite.java c68c5336aff3f563cf35d113b9c876586a88080a GREEN
GanttScheduleVisualization.java 2d00fb3d5142f2e94e5db9855f9889c8ffd7a3cc GREEN
GanttScheduleVisualization.java 8223d2e173f98d28d6b7b0c0f3aec6d1415283a4 GREEN
......@@ -16,18 +16,17 @@
package org.fortiss.af3.exploration.ui.perspective.visualization.visualizations.gantt;
import static java.util.Arrays.asList;
import static org.fortiss.af3.exploration.util.ExplorationModelElementFactory.createSuperSetMap;
import static org.fortiss.af3.task.util.TaskModelElementFactory.createTasksToExecutionUnitAllocationTable;
import static org.fortiss.tooling.kernel.utils.EcoreUtils.copy;
import static org.fortiss.af3.exploration.util.ExplorationUtils.getRootElementsFromSnaps;
import static org.fortiss.af3.exploration.util.ExplorationUtils.getSelectedSolutionSets;
import static org.fortiss.af3.exploration.util.ExplorationUtils.getSelectedSolutions;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Collection;
import java.util.List;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.fortiss.af3.exploration.dseml.model.expression.SuperSet;
import org.fortiss.af3.exploration.model.SuperSetMap;
import org.fortiss.af3.exploration.model.project.DSE;
import org.fortiss.af3.exploration.model.project.ExplorationStep;
......@@ -35,16 +34,17 @@ import org.fortiss.af3.exploration.model.project.ProcessStep;
import org.fortiss.af3.exploration.model.project.SolutionSelectionStep;
import org.fortiss.af3.exploration.model.solutions.ExplorationSolution;
import org.fortiss.af3.exploration.model.solutions.SingleExplorationSolution;
import org.fortiss.af3.exploration.service.IDSESolutionExporterService;
import org.fortiss.af3.exploration.solutionconverter.DSESolutionArtifacts;
import org.fortiss.af3.exploration.solutionconverter.ScheduleConverter;
import org.fortiss.af3.exploration.ui.perspective.service.EventBroker;
import org.fortiss.af3.exploration.ui.perspective.service.IDSEPerspectiveManager;
import org.fortiss.af3.exploration.ui.perspective.service.IEventListener;
import org.fortiss.af3.exploration.ui.perspective.visualization.visualizations.IVisualizationView;
import org.fortiss.af3.schedule.model.ResourceAllocation;
import org.fortiss.af3.schedule.model.ResourceSchedule;
import org.fortiss.af3.schedule.model.SystemSchedule;
import org.fortiss.af3.task.model.allocation.TaskToExecutionUnitAllocationEntry;
import org.fortiss.af3.task.model.allocation.TaskToExecutionUnitAllocationTable;
import org.fortiss.tooling.base.model.element.IModelElement;
import org.fortiss.tooling.kernel.model.IProjectRootElement;
/**
* Visualizes a {@link SystemSchedule} if one has been calculated by the last DSE run.
......@@ -56,14 +56,17 @@ public final class GanttScheduleVisualization implements IVisualizationView, IEv
/** Viewer. */
private GanttComposite ganttViewer;
/** Active {@link DSE} node. */
private DSE dse;
/** {@inheritDoc} */
@Override
public void createView(final Composite composite) {
ganttViewer = new GanttComposite(composite, SWT.NONE);
addSolutionSelectionComboLogic();
DSE dse = IDSEPerspectiveManager.INSTANCE.getCurrentlySelectedDSE();
if(IDSEPerspectiveManager.INSTANCE.getCurrentlySelectedDSE() != null) {
dse = IDSEPerspectiveManager.INSTANCE.getCurrentlySelectedDSE();
if(dse != null) {
updateSolutionSelectionCombo(dse);
}
......@@ -77,33 +80,30 @@ public final class GanttScheduleVisualization implements IVisualizationView, IEv
Object selElem = selection.getFirstElement();
if(selElem instanceof SingleExplorationSolution) {
SingleExplorationSolution solution = (SingleExplorationSolution)selElem;
SuperSet<ResourceAllocation> resAllocs =
solution.getSolutionModel(ResourceAllocation.class);
// Get the allocations from a joint exploration, or an earlier exploration.
SuperSet<TaskToExecutionUnitAllocationEntry> alloc =
solution.getSolutionModel(TaskToExecutionUnitAllocationEntry.class);
if(alloc == null) {
DSE dse = IDSEPerspectiveManager.INSTANCE.getCurrentlySelectedDSE();
SuperSetMap prevSuperSets = dse.getCurrentStep().getSuperSetMap();
alloc = prevSuperSets.get(TaskToExecutionUnitAllocationEntry.class);
}
TaskToExecutionUnitAllocationTable ta2hw =
createTasksToExecutionUnitAllocationTable("temp_allocs");
// We must use copy here since we don't want to modify containment relations.
ta2hw.getContainedElements().addAll(copy(alloc.getEntries()));
// Possibly retrieves a superset of resource schedules from the solution containing
// information about frequency exploration
SuperSetMap otherSuperSets = createSuperSetMap();
SuperSet<ResourceSchedule> resSchedules =
solution.getSolutionModel(ResourceSchedule.class);
if(resSchedules != null) {
otherSuperSets.put(ResourceSchedule.class, resSchedules);
}
SystemSchedule solutionSchedule = (new ScheduleConverter()).transform(resAllocs,
otherSuperSets, null, asList(ta2hw), new HashMap<>(), "temp_sched");
// Prepare inputs and perform the transformation.
ProcessStep currentStep = dse.getCurrentStep();
Collection<IProjectRootElement> inputModels = getRootElementsFromSnaps(currentStep,
(new ScheduleConverter()).getRequiredInputCopies());
List<SingleExplorationSolution> solutions = new ArrayList<>(asList(solution));
solutions.addAll(getSelectedSolutions(currentStep));
DSESolutionArtifacts solArtifacts =
new DSESolutionArtifacts(inputModels, solutions);
// Define the set of generated artifact types: We must construct the set of
// SuperSets from previous solutions here to know which converters must be launched.
SuperSetMap solutionSets = getSelectedSolutionSets(currentStep);
Collection<Class<? extends IModelElement>> solutionTypes =
new ArrayList<>(solutionSets.keySet());
solutionTypes.add(ResourceAllocation.class);
// Perform the transformation.
solArtifacts = IDSESolutionExporterService.getInstance().transform(solutionTypes,
solArtifacts, "temp");
// Present the transformed schedule.
SystemSchedule solutionSchedule =
solArtifacts.getElementOrThrow(SystemSchedule.class);
ganttViewer.viewer.setSchedule(null, solutionSchedule.getScheduleList(),
solutionSchedule.getMajorFrame());
}
......@@ -157,6 +157,7 @@ public final class GanttScheduleVisualization implements IVisualizationView, IEv
if(!ganttViewer.isDisposed()) {
dispose();
}
dse = null;
}
}
}
ButtonColumnLabelProvider.java 74c9b3631c411fd054b939752388115cb59833e3 GREEN
ExportButtonColumnLabelProvider.java 305b4259f25b288a266090b8c322d13d4c60dc7e GREEN
ExportButtonColumnLabelProvider.java 340fea483d190986c39bc039d889f246b7300ced GREEN
SelectionButtonColumnLabelProvider.java e7c4030d78622243fb851679a1cb8b444cbf0815 GREEN
TableComposite.java 1f186c37d3d6bb4d2ee15039bad1942ad51f501d GREEN
TableVisualization.java 9c89b64b8aa3c30b9c79b832621cd681e0e81fd6 GREEN
......@@ -15,26 +15,22 @@
+--------------------------------------------------------------------------*/
package org.fortiss.af3.exploration.ui.perspective.visualization.visualizations.table;
import static org.fortiss.af3.exploration.util.ExplorationUtils.getSelectedSolutionSets;
import java.util.Map;
import java.util.Collection;
import java.util.Map.Entry;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.ViewerCell;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.fortiss.af3.exploration.model.SuperSetMap;
import org.fortiss.af3.exploration.model.project.DSE;
import org.fortiss.af3.exploration.model.project.ProcessStep;
import org.fortiss.af3.exploration.model.project.SolutionSelectionStep;
import org.fortiss.af3.exploration.model.solutions.SingleExplorationSolution;
import org.fortiss.af3.exploration.service.IDSESolutionExporterService;
import org.fortiss.af3.exploration.solutionconverter.IDSESolutionConverter;
import org.fortiss.af3.exploration.solutionconverter.DSESolutionArtifacts;
import org.fortiss.af3.exploration.ui.perspective.service.IDSEPerspectiveManager;
import org.fortiss.tooling.base.model.element.IModelElement;
import org.fortiss.tooling.base.model.visualization.DataSet;
import org.fortiss.tooling.kernel.model.INamedCommentedElement;
/**
* Provides the export {@link Button}s for this column.
......@@ -65,18 +61,16 @@ class ExportButtonColumnLabelProvider extends ButtonColumnLabelProvider {
solutionStep = selectSolution(singleSolution);
viewer.refresh();
}
Map<IDSESolutionConverter<INamedCommentedElement, IModelElement>, INamedCommentedElement> transformationResult =
DSESolutionArtifacts transformationResult =
transformSolutions((SolutionSelectionStep)solutionStep);
dseSES.exportToAF3Project(transformationResult, dse, singleSolution.getName());
}
/** Transforms the solutions of this {@link ProcessStep} into AF3 model elements. */
private Map<IDSESolutionConverter<INamedCommentedElement, IModelElement>, INamedCommentedElement>
transformSolutions(SolutionSelectionStep solSelStep) {
SuperSetMap selSolSetMap = getSelectedSolutionSets(solSelStep);
SuperSetMap aggregateMap = solSelStep.getSuperSetMap();
return dseSES.transform(selSolSetMap, aggregateMap, solSelStep,
singleSolution.getName());
private DSESolutionArtifacts transformSolutions(SolutionSelectionStep solSelStep) {
Collection<Class<? extends IModelElement>> artifacts =
solSelStep.getSolutionSuperSetMap().keySet();
return dseSES.transform(artifacts, solSelStep, singleSolution.getName());
}
}
......
dseml.ecore 7d40e97f4d0bcebc825455b334c7109573896cff GREEN
exploration.ecore 5daf56394c7645c7126f1618ec8f196346573c71 GREEN
exploration.ecore ef51b38d08dfef3d29577c8ac941bcec7ef42009 GREEN
......@@ -773,6 +773,12 @@
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="{@link ProcessStep} in which {@link SingleExplorationSolution}s are selected from a previous {@code ExplorationStep}. Each of these {@link SolutionSelectionStep}s creates a new branch in the tree of {@link ProcessStep}s."/>
</eAnnotations>
<eOperations name="getSolutionSuperSetMap" lowerBound="1" eType="#//SuperSetMap">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Aggregate view on the SuperSets contained in this and parent {@link SolutionSelectionStep}s. The latest SuperSets found in the tree are added to the resulting {@link SuperSetMap}. Note that the SuperSets are copies of the found SuperSets with the identical references to its entries."/>
<details key="body" value="return SolutionSelectionStepStaticImpl.getSolutionSuperSetMap(this);"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="selectedSolution" lowerBound="1"
eType="#//solutions/SingleExplorationSolution">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
......@@ -810,14 +816,20 @@
</eSubpackages>
<eSubpackages name="specification" nsURI="http://www.fortiss.org/af3/exploration/moea/specification"
nsPrefix="org-fortiss-af3-exploration-moea-specification">
<eClassifiers xsi:type="ecore:EClass" name="InstanceOfElement" eSuperTypes="platform:/resource/org.fortiss.tooling.base/model/base.ecore#//element/IModelElementSpecification">
<eClassifiers xsi:type="ecore:EClass" name="IVolatileModelElementSpecification"
eSuperTypes="platform:/resource/org.fortiss.tooling.base/model/base.ecore#//element/IModelElementSpecification">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="{@link IModelElementSpecification} that must be removed during a transformation by the DSE solution converison service."/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="InstanceOfElement" eSuperTypes="#//specification/IVolatileModelElementSpecification">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the template or library element from which this {@link IModelElement} has been constructed."/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="templateElement" lowerBound="1"
eType="ecore:EClass platform:/resource/org.fortiss.tooling.base/model/base.ecore#//element/IModelElement"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ContainedByElement" eSuperTypes="platform:/resource/org.fortiss.tooling.base/model/base.ecore#//element/IModelElementSpecification">
<eClassifiers xsi:type="ecore:EClass" name="ContainedByElement" eSuperTypes="#//specification/IVolatileModelElementSpecification">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the {@link IHierarchicElement} to which the given element shall be added during the transformation."/>
</eAnnotations>
......
......@@ -218,6 +218,8 @@
<genClasses ecoreClass="exploration.ecore#//project/SolutionSelectionStep">
<genFeatures notify="false" createChild="false" propertySortChoices="true"
ecoreFeature="ecore:EReference exploration.ecore#//project/SolutionSelectionStep/selectedSolution"/>
<genOperations ecoreOperation="exploration.ecore#//project/SolutionSelectionStep/getSolutionSuperSetMap"
body="return SolutionSelectionStepStaticImpl.getSolutionSuperSetMap(this);"/>
</genClasses>
</nestedGenPackages>
<nestedGenPackages prefix="Dimension" basePackage="org.fortiss.af3.exploration.model"
......@@ -229,6 +231,7 @@
</nestedGenPackages>
<nestedGenPackages prefix="Specification" basePackage="org.fortiss.af3.exploration.model"
disposableProviderFactory="true" ecorePackage="exploration.ecore#//specification">
<genClasses ecoreClass="exploration.ecore#//specification/IVolatileModelElementSpecification"/>
<genClasses ecoreClass="exploration.ecore#//specification/InstanceOfElement">
<genFeatures notify="false" createChild="false" propertySortChoices="true"
ecoreFeature="ecore:EReference exploration.ecore#//specification/InstanceOfElement/templateElement"/>
......
......@@ -58,6 +58,12 @@
<modelElementCompositor compositor="org.fortiss.af3.exploration.compositor.DSEProjectCompositor">
<modelElementClass modelElementClass="org.fortiss.af3.project.model.FileProject"/>
</modelElementCompositor>
<modelElementCompositor
compositor="org.fortiss.af3.exploration.compositor.DSESolutionDataDictionaryCompositor">
<modelElementClass
modelElementClass="org.fortiss.af3.project.model.FileProject">
</modelElementClass>
</modelElementCompositor>
</extension>
<extension point="org.eclipse.emf.ecore.generated_package">
......
Exploration.java b0a5be69a42b39e9c6e6a8401f4340de3a87a93b GREEN
ExplorationActivator.java 93b17f9d1c69f51fe0b739a4ff5eab1072161062 GREEN
ExplorationActivator.java ac3a969f9999b629b83952926d67c2287c23d945 GREEN
......@@ -17,8 +17,6 @@ package org.fortiss.af3.exploration;
import org.eclipse.core.runtime.Plugin;
import org.fortiss.af3.exploration.service.IDSESolutionExporterService;
import org.fortiss.af3.exploration.solutionconverter.DataDictionaryConverter;
import org.fortiss.af3.exploration.solutionconverter.InputAllocationTableConverter;
import org.fortiss.af3.exploration.solutionconverter.RouteConverter;
import org.fortiss.af3.exploration.solutionconverter.ScheduleConverter;
import org.fortiss.af3.exploration.solutionconverter.SignalToRouteConverter;
......@@ -77,14 +75,13 @@ public class ExplorationActivator extends Plugin {
*/
private void registerDSESolutionConverters() {
IDSESolutionExporterService dseSES = IDSESolutionExporterService.getInstance();
dseSES.registerSolutionConverter(new DataDictionaryConverter());
// Platform
dseSES.registerSolutionConverter(new PlatformExecUnitInstantiationConverter());
dseSES.registerSolutionConverter(new PlatformConnectorInstanceConverter());
dseSES.registerSolutionConverter(new PlatformTransmissionConnectionConverter());
dseSES.registerSolutionConverter(new InputAllocationTableConverter());
// Task Mapping
dseSES.registerSolutionConverter(new RouteConverter());
dseSES.registerSolutionConverter(new TaskToExecUnitConverter());
dseSES.registerSolutionConverter(new SignalToRouteConverter());
......@@ -95,6 +92,7 @@ public class ExplorationActivator extends Plugin {
dseSES.registerSolutionConverter(new TaskToPartitionConverter());
dseSES.registerSolutionConverter(new PartitionChannelConverter());
// Schedules
dseSES.registerSolutionConverter(new ScheduleConverter());
}
}
DSEProjectCompositor.java b263ade5e469717e663dcbd74fcbe1858d9f5415 GREEN
DSESolutionDataDictionaryCompositor.java 08cf3039b509d886ab6c9e5cf27dc2d9429c173e GREEN
......@@ -13,72 +13,34 @@
| See the License for the specific language governing permissions and |
| limitations under the License. |
+--------------------------------------------------------------------------*/
package org.fortiss.af3.exploration.solutionconverter;
import static java.util.Arrays.asList;
import static org.fortiss.af3.exploration.util.DSESolutionConversionUtils.getRootElementSnapshot;
import static org.fortiss.tooling.kernel.utils.KernelModelElementUtils.getParentElement;
import static org.fortiss.tooling.kernel.utils.UniqueIDUtils.generateMissingIDs;
import static org.fortiss.tooling.kernel.utils.UniqueIDUtils.getLargestID;
import static org.fortiss.tooling.kernel.utils.UniqueIDUtils.prepareIDs;
import static org.fortiss.tooling.kernel.utils.UniqueIDUtils.removeDuplicateIds;
import java.util.Collection;
import java.util.Map;
package org.fortiss.af3.exploration.compositor;
import org.eclipse.emf.ecore.EObject;
import org.fortiss.af3.component.model.ComponentArchitecture;
import org.fortiss.af3.exploration.dseml.model.expression.SuperSet;
import org.fortiss.af3.exploration.model.SuperSetMap;
import org.fortiss.af3.exploration.model.project.DSE;
import org.fortiss.af3.exploration.model.project.SolutionSelectionStep;
import org.fortiss.af3.exploration.service.IDSESolutionExporterService;
import org.fortiss.af3.exploration.solutionconverter.DSESolutionConversionContext;
import org.fortiss.af3.expression.compositor.DataDictionaryFileProjectCompositor;
import org.fortiss.af3.expression.model.DataDictionary;
import org.fortiss.af3.project.model.FileProject;
import org.fortiss.af3.task.model.allocation.ComponentToTaskAllocationEntry;
import org.fortiss.tooling.kernel.model.INamedCommentedElement;
import org.fortiss.tooling.kernel.model.IProjectRootElement;
import org.fortiss.tooling.kernel.extension.IElementCompositor;
import org.fortiss.tooling.kernel.extension.data.IElementCompositionContext;