diff options
-rw-r--r-- | BUGS | 2 | ||||
-rw-r--r-- | examples/uml/duse-mt/src/app/SADuse.xmi | 247 | ||||
-rw-r--r-- | src/plugins/metamodels/duse/qdusemetamodelplugin.cpp | 1 |
3 files changed, 230 insertions, 20 deletions
@@ -4,4 +4,4 @@ - Verify why QList<QObject *> cannot be directly passed to QML. Only QVariantList works by now - Investigate the use of qScriptRegisterSequenceMetaType also for QSets (see src/plugins/metamodels/duse/qdusemetamodel.cpp) - The property visibility, for attributes, when changing isn't presented in boldface in property editor - +- QModelingObjectView::handleAddMethod() needs refactoring to use new metamodel plugins instantiation mechanism diff --git a/examples/uml/duse-mt/src/app/SADuse.xmi b/examples/uml/duse-mt/src/app/SADuse.xmi index 57e99bc8..de7d16fa 100644 --- a/examples/uml/duse-mt/src/app/SADuse.xmi +++ b/examples/uml/duse-mt/src/app/SADuse.xmi @@ -30,43 +30,252 @@ <language>JavaScript</language> <body>var inputLength = input.length; var selected = new Array(); for (var i = 0; i < inputLength; ++i) { if (input[i] instanceof QSADuseProfileProcessComponent) selected.push(input[i].base_Component); } selected;</body> </instanceSelectionRule> - <variationPoint xmi:type="duse:VariationPoint" name="Proportional" xmi:id="SADuse-ControlLaw-Proportional"/> - <variationPoint xmi:type="duse:VariationPoint" name="Proportional-Integral" xmi:id="SADuse-ControlLaw-Proportional-Integral"/> - <variationPoint xmi:type="duse:VariationPoint" name="Dynamic State Feedback" xmi:id="SADuse-ControlLaw-Dynamic State Feedback"/> - <variationPoint xmi:type="duse:VariationPoint" name="Static State Feedback" xmi:id="SADuse-ControlLaw-Static State Feedback"/> - <variationPoint xmi:type="duse:VariationPoint" name="Proportional-Integral-Derivative" xmi:id="SADuse-ControlLaw-Proportional-Integral-Derivative"/> - <variationPoint xmi:type="duse:VariationPoint" name="Precompensated Static State Feedback" xmi:id="SADuse-ControlLaw-Precompensated Static State Feedback"/> + <variationPoint xmi:type="duse:VariationPoint" name="Proportional" xmi:id="SADuse-ControlLaw-Proportional"> + <modelChange xmi:type="duse:ModelChange" xmi:id="SADuse-ControlLaw-Proportional-ModelChange1"> + <targetSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-ControlLaw-Proportional-ModelChange1-TargetSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </targetSelectionRule> + <valueSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-ControlLaw-Proportional-ModelChange1-ValueSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </valueSelectionRule> + </modelChange> + </variationPoint> + <variationPoint xmi:type="duse:VariationPoint" name="Proportional-Integral" xmi:id="SADuse-ControlLaw-Proportional-Integral"> + <modelChange xmi:type="duse:ModelChange" xmi:id="SADuse-ControlLaw-Proportional-Integral-ModelChange1"> + <targetSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-ControlLaw-Proportional-Integral-ModelChange1-TargetSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </targetSelectionRule> + <valueSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-ControlLaw-Proportional-Integral-ModelChange1-ValueSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </valueSelectionRule> + </modelChange> + </variationPoint> + <variationPoint xmi:type="duse:VariationPoint" name="Dynamic State Feedback" xmi:id="SADuse-ControlLaw-DynamicStateFeedback"> + <modelChange xmi:type="duse:ModelChange" xmi:id="SADuse-ControlLaw-DynamicStateFeedback-ModelChange1"> + <targetSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-ControlLaw-DynamicStateFeedback-ModelChange1-TargetSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </targetSelectionRule> + <valueSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-ControlLaw-DynamicStateFeedback-ModelChange1-ValueSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </valueSelectionRule> + </modelChange> + </variationPoint> + <variationPoint xmi:type="duse:VariationPoint" name="Static State Feedback" xmi:id="SADuse-ControlLaw-StaticStateFeedback"> + <modelChange xmi:type="duse:ModelChange" xmi:id="SADuse-ControlLaw-StaticStateFeedback-ModelChange1"> + <targetSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-ControlLaw-StaticStateFeedback-ModelChange1-TargetSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </targetSelectionRule> + <valueSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-ControlLaw-StaticStateFeedback-ModelChange1-ValueSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </valueSelectionRule> + </modelChange> + </variationPoint> + <variationPoint xmi:type="duse:VariationPoint" name="Proportional-Integral-Derivative" xmi:id="SADuse-ControlLaw-Proportional-Integral-Derivative"> + <modelChange xmi:type="duse:ModelChange" xmi:id="SADuse-ControlLaw-Proportional-Integral-Derivative-ModelChange1"> + <targetSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-ControlLaw-Proportional-Integral-Derivative-ModelChange1-TargetSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </targetSelectionRule> + <valueSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-ControlLaw-Proportional-Integral-Derivative-ModelChange1-ValueSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </valueSelectionRule> + </modelChange> + </variationPoint> + <variationPoint xmi:type="duse:VariationPoint" name="Precompensated Static State Feedback" xmi:id="SADuse-ControlLaw-PrecompensatedStaticStateFeedback"> + <modelChange xmi:type="duse:ModelChange" xmi:id="SADuse-ControlLaw-PrecompensatedStaticStateFeedback-ModelChange1"> + <targetSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-ControlLaw-PrecompensatedStaticStateFeedback-ModelChange1-TargetSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </targetSelectionRule> + <valueSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-ControlLaw-PrecompensatedStaticStateFeedback-ModelChange1-ValueSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </valueSelectionRule> + </modelChange> + </variationPoint> </designDimension> <designDimension xmi:type="duse:DesignDimension" name="Tuning Approach" xmi:id="SADuse-TunningApproach"> <instanceSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-TunningApproach-InstanceSelectionRule"> <language>JavaScript</language> <body>var inputLength = input.length; var selected = new Array(); for (var i = 0; i < inputLength; ++i) { if (input[i] instanceof QSADuseProfileProcessComponent) selected.push(input[i].base_Component); } selected;</body> </instanceSelectionRule> - <variationPoint xmi:type="duse:VariationPoint" name="Cohen-Coon" xmi:id="SADuse-TunningApproach-Cohen-Coon"/> - <variationPoint xmi:type="duse:VariationPoint" name="CHR-20OS-DR" xmi:id="SADuse-TunningApproach-CHR-20OS-DR"/> - <variationPoint xmi:type="duse:VariationPoint" name="Ziegler-Nichols" xmi:id="SADuse-TunningApproach-Ziegler-Nichols"/> - <variationPoint xmi:type="duse:VariationPoint" name="CHR-20OS-RT" xmi:id="SADuse-TunningApproach-CHR-20OS-RT"/> - <variationPoint xmi:type="duse:VariationPoint" name="CHR-0OS-DR" xmi:id="SADuse-TunningApproach-CHR-0OS-DR"/> - <variationPoint xmi:type="duse:VariationPoint" name="CHR-0OS-RT" xmi:id="SADuse-TunningApproach-CHR-0OS-RT"/> - <variationPoint xmi:type="duse:VariationPoint" name="Linear Quadratic Regulator" xmi:id="SADuse-TunningApproach-Linear Quadratic Regulator"/> + <variationPoint xmi:type="duse:VariationPoint" name="Cohen-Coon" xmi:id="SADuse-TunningApproach-Cohen-Coon"> + <modelChange xmi:type="duse:ModelChange" xmi:id="SADuse-TunningApproach-Cohen-Coon-ModelChange1"> + <targetSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-TunningApproach-Cohen-Coon-ModelChange1-TargetSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </targetSelectionRule> + <valueSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-TunningApproach-Cohen-Coon-ModelChange1-ValueSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </valueSelectionRule> + </modelChange> + </variationPoint> + <variationPoint xmi:type="duse:VariationPoint" name="CHR-20OS-DR" xmi:id="SADuse-TunningApproach-CHR-20OS-DR"> + <modelChange xmi:type="duse:ModelChange" xmi:id="SADuse-TunningApproach-CHR-20OS-DR-ModelChange1"> + <targetSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-TunningApproach-CHR-20OS-DR-ModelChange1-TargetSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </targetSelectionRule> + <valueSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-TunningApproach-CHR-20OS-DR-ModelChange1-ValueSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </valueSelectionRule> + </modelChange> + </variationPoint> + <variationPoint xmi:type="duse:VariationPoint" name="Ziegler-Nichols" xmi:id="SADuse-TunningApproach-Ziegler-Nichols"> + <modelChange xmi:type="duse:ModelChange" xmi:id="SADuse-TunningApproach-Ziegler-Nichols-ModelChange1"> + <targetSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-ControlLaw-PrecompensatedStaticStateFeedback-ModelChange1-TargetSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </targetSelectionRule> + <valueSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-TunningApproach-Ziegler-Nichols-ModelChange1-ValueSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </valueSelectionRule> + </modelChange> + </variationPoint> + <variationPoint xmi:type="duse:VariationPoint" name="CHR-20OS-RT" xmi:id="SADuse-TunningApproach-CHR-20OS-RT"> + <modelChange xmi:type="duse:ModelChange" xmi:id="SADuse-TunningApproach-CHR-20OS-RT-ModelChange1"> + <targetSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-TunningApproach-CHR-20OS-RT-ModelChange1-TargetSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </targetSelectionRule> + <valueSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-TunningApproach-CHR-20OS-RT-ModelChange1-ValueSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </valueSelectionRule> + </modelChange> + </variationPoint> + <variationPoint xmi:type="duse:VariationPoint" name="CHR-0OS-DR" xmi:id="SADuse-TunningApproach-CHR-0OS-DR"> + <modelChange xmi:type="duse:ModelChange" xmi:id="SADuse-TunningApproach-CHR-0OS-DR-ModelChange1"> + <targetSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-TunningApproach-CHR-0OS-DR-ModelChange1-TargetSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </targetSelectionRule> + <valueSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-TunningApproach-CHR-0OS-DR-ModelChange1-ValueSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </valueSelectionRule> + </modelChange> + </variationPoint> + <variationPoint xmi:type="duse:VariationPoint" name="CHR-0OS-RT" xmi:id="SADuse-TunningApproach-CHR-0OS-RT"> + <modelChange xmi:type="duse:ModelChange" xmi:id="SADuse-TunningApproach-CHR-0OS-RT-ModelChange1"> + <targetSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-TunningApproach-CHR-0OS-RT-ModelChange1-TargetSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </targetSelectionRule> + <valueSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-TunningApproach-CHR-0OS-RT-ModelChange1-ValueSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </valueSelectionRule> + </modelChange> + </variationPoint> + <variationPoint xmi:type="duse:VariationPoint" name="Linear Quadratic Regulator" xmi:id="SADuse-TunningApproach-LinearQuadraticRegulator"> + <modelChange xmi:type="duse:ModelChange" xmi:id="SADuse-TunningApproach-LinearQuadraticRegulator-ModelChange1"> + <targetSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-TunningApproach-LinearQuadraticRegulator-ModelChange1-TargetSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </targetSelectionRule> + <valueSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-TunningApproach-LinearQuadraticRegulator-ModelChange1-ValueSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </valueSelectionRule> + </modelChange> + </variationPoint> </designDimension> <designDimension xmi:type="duse:DesignDimension" name="Control Adaptation" xmi:id="SADuse-ControlAdaptation"> <instanceSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-ControlAdaptation-InstanceSelectionRule"> <language>JavaScript</language> <body>var inputLength = input.length; var selected = new Array(); for (var i = 0; i < inputLength; ++i) { if (input[i] instanceof QSADuseProfileProcessComponent) selected.push(input[i].base_Component); } selected;</body> </instanceSelectionRule> - <variationPoint xmi:type="duse:VariationPoint" name="Gain Scheduling" xmi:id="SADuse-ControlAdaptation-Gain Scheduling"/> - <variationPoint xmi:type="duse:VariationPoint" name="Model Identification Adaptive Control (MIAC)" xmi:id="SADuse-ControlAdaptation-Model Identification Adaptive Control (MIAC)"/> - <variationPoint xmi:type="duse:VariationPoint" name="Fixed Gain (no adaptation)" xmi:id="SADuse-ControlAdaptation-Fixed Gain (no adaptation)"/> + <variationPoint xmi:type="duse:VariationPoint" name="Gain Scheduling" xmi:id="SADuse-ControlAdaptation-GainScheduling"> + <modelChange xmi:type="duse:ModelChange" xmi:id="SADuse-ControlAdaptation-GainScheduling-ModelChange1"> + <targetSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-ControlAdaptation-GainScheduling-ModelChange1-TargetSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </targetSelectionRule> + <valueSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-ControlAdaptation-GainScheduling-ModelChange1-ValueSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </valueSelectionRule> + </modelChange> + </variationPoint> + <variationPoint xmi:type="duse:VariationPoint" name="Model Identification Adaptive Control (MIAC)" xmi:id="SADuse-ControlAdaptation-ModelIdentificationAdaptiveControl"> + <modelChange xmi:type="duse:ModelChange" xmi:id="SADuse-ControlAdaptation-ModelIdentificationAdaptiveControl-ModelChange1"> + <targetSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-ControlAdaptation-ModelIdentificationAdaptiveControl-ModelChange1-TargetSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </targetSelectionRule> + <valueSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-ControlAdaptation-ModelIdentificationAdaptiveControl-ModelChange1-ValueSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </valueSelectionRule> + </modelChange> + </variationPoint> + <variationPoint xmi:type="duse:VariationPoint" name="Fixed Gain (no adaptation)" xmi:id="SADuse-ControlAdaptation-FixedGain"> + <modelChange xmi:type="duse:ModelChange" xmi:id="SADuse-ControlAdaptation-FixedGain-ModelChange1"> + <targetSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-ControlAdaptation-FixedGain-ModelChange1-TargetSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </targetSelectionRule> + <valueSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-ControlAdaptation-FixedGain-ModelChange1-ValueSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </valueSelectionRule> + </modelChange> + </variationPoint> </designDimension> <designDimension xmi:type="duse:DesignDimension" name="MAPE Deployment" xmi:id="SADuse-MAPEDeployment"> <instanceSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-MAPEDeployment-InstanceSelectionRule"> <language>JavaScript</language> <body>var inputLength = input.length; var selected = new Array(); for (var i = 0; i < inputLength; ++i) { if (input[i] instanceof QSADuseProfileProcessComponent) selected.push(input[i].base_Component); } selected;</body> </instanceSelectionRule> - <variationPoint xmi:type="duse:VariationPoint" name="Local Control + Shared Reference" xmi:id="SADuse-MAPEDeployment-Local Control + Shared Reference"/> - <variationPoint xmi:type="duse:VariationPoint" name="Local Control + Shared Error" xmi:id="SADuse-MAPEDeployment-Local Control + Shared Error"/> - <variationPoint xmi:type="duse:VariationPoint" name="Global Control" xmi:id="SADuse-MAPEDeployment-Global Control"/> + <variationPoint xmi:type="duse:VariationPoint" name="Local Control + Shared Reference" xmi:id="SADuse-MAPEDeployment-LocalControl+SharedReference"> + <modelChange xmi:type="duse:ModelChange" xmi:id="SADuse-MAPEDeployment-LocalControl+SharedReference-ModelChange1"> + <targetSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-MAPEDeployment-LocalControl+SharedReference-ModelChange1-TargetSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </targetSelectionRule> + <valueSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-MAPEDeployment-LocalControl+SharedReference-ModelChange1-ValueSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </valueSelectionRule> + </modelChange> + </variationPoint> + <variationPoint xmi:type="duse:VariationPoint" name="Local Control + Shared Error" xmi:id="SADuse-MAPEDeployment-LocalControl+SharedError"> + <modelChange xmi:type="duse:ModelChange" xmi:id="SADuse-MAPEDeployment-LocalControl+SharedError-ModelChange1"> + <targetSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-MAPEDeployment-LocalControl+SharedError-ModelChange1-TargetSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </targetSelectionRule> + <valueSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-MAPEDeployment-LocalControl+SharedError-ModelChange1-ValueSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </valueSelectionRule> + </modelChange> + </variationPoint> + <variationPoint xmi:type="duse:VariationPoint" name="Global Control" xmi:id="SADuse-MAPEDeployment-GlobalControl"> + <modelChange xmi:type="duse:ModelChange" xmi:id="SADuse-MAPEDeployment-GlobalControl-ModelChange1"> + <targetSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-MAPEDeployment-GlobalControl-ModelChange1-TargetSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </targetSelectionRule> + <valueSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-MAPEDeployment-GlobalControl-ModelChange1-ValueSelectionRule"> + <language>JavaScript</language> + <body>input</body> + </valueSelectionRule> + </modelChange> + </variationPoint> </designDimension> </duse:DesignSpace> </xmi:XMI> diff --git a/src/plugins/metamodels/duse/qdusemetamodelplugin.cpp b/src/plugins/metamodels/duse/qdusemetamodelplugin.cpp index 0bd8f854..6f87d5df 100644 --- a/src/plugins/metamodels/duse/qdusemetamodelplugin.cpp +++ b/src/plugins/metamodels/duse/qdusemetamodelplugin.cpp @@ -56,6 +56,7 @@ QModelingElement *QDuseMetaModelPlugin::createModelingElement(QString type) if (type == "QDuseDesignDimensionInstance") return new QDuseDesignDimensionInstance; if (type == "QDuseVariationPoint") return new QDuseVariationPoint; if (type == "QDuseQualityMetric") return new QDuseQualityMetric; + if (type == "QDuseModelChange") return new QDuseModelChange; Q_ASSERT_X(true, "QDuseMetaModelPlugin::createModelingElement", QStringLiteral("QDuseMetaModelPlugin does not know how to create instances of '%1' type !").arg(type).toLatin1()); |