diff options
author | Sandro S. Andrade <sandroandrade@kde.org> | 2013-06-27 04:42:09 -0300 |
---|---|---|
committer | Sandro S. Andrade <sandroandrade@kde.org> | 2013-06-27 12:44:37 +0200 |
commit | 040f9e996c53339a08b862064c38f06d609a6daf (patch) | |
tree | e8d0fcd7738a44354852af058de242fba8af22ff | |
parent | d179e49beb16bf51e342ca8f36614728b4828d38 (diff) |
Add SEKE demo
Change-Id: I9bf147e3215595097ea4337bbf35a10b13b8c62f
Reviewed-by: Sandro S. Andrade <sandroandrade@kde.org>
29 files changed, 768 insertions, 42 deletions
diff --git a/examples/uml/duse-mt/SADuSE.xmi b/examples/uml/duse-mt/SADuSE.xmi index 5ef6c0c8..ecef7abc 100644 --- a/examples/uml/duse-mt/SADuSE.xmi +++ b/examples/uml/duse-mt/SADuSE.xmi @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> <xmi:XMI xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:duse="http://liveblue.wordpress.com"> <duse:DesignSpace name="SADuSE" xmi:id="SADuSE"> - <qualityMetric xmi:type="duse:QualityMetric" name="Control Robustness" xmi:id="SADuSE-Control Robustness"/> - <qualityMetric xmi:type="duse:QualityMetric" name="Average Maximum Overshoot" xmi:id="SADuSE-Average Maximum Overshoot"/> - <qualityMetric xmi:type="duse:QualityMetric" name="Average Settling Time" xmi:id="SADuSE-Average Settling Time"/> - <qualityMetric xmi:type="duse:QualityMetric" name="Control Overhead" xmi:id="SADuSE-Control Overhead"/> + <qualityMetric xmi:type="duse:QualityMetric" name="Control Robustness" xmi:id="SADuSE-Control Robustness" expression="(1/input[0].ownedElements.length)*120"/> + <qualityMetric xmi:type="duse:QualityMetric" name="Average Maximum Overshoot" xmi:id="SADuSE-Average Maximum Overshoot" expression="(1/input[0].ownedTypes.length)*120"/> + <qualityMetric xmi:type="duse:QualityMetric" name="Average Settling Time" xmi:id="SADuSE-Average Settling Time" expression="var ot = input[0].ownedTypes.length; var sum = 0; for (var j = 0; j < ot; ++j) sum = sum+input[0].ownedTypes[j].ownedAttributes.length; var t = sum/(ot+1); t/sum*120"/> + <qualityMetric xmi:type="duse:QualityMetric" name="Control Overhead" xmi:id="SADuSE-Control Overhead" expression="input[0].ownedAttributes"/> <designDimension xmi:type="duse:DesignDimension" name="Control Law" instanceSelectionRule="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;" xmi:id="SADuSE-Control Law"> <variationPoint xmi:type="duse:VariationPoint" name="Proportional" xmi:id="SADuSE-Control Law-Proportional"/> <variationPoint xmi:type="duse:VariationPoint" name="Proportional-Integral" xmi:id="SADuSE-Control Law-Proportional-Integral"/> @@ -13,7 +13,7 @@ <variationPoint xmi:type="duse:VariationPoint" name="Proportional-Integral-Derivative" xmi:id="SADuSE-Control Law-Proportional-Integral-Derivative"/> <variationPoint xmi:type="duse:VariationPoint" name="Precompensated Static State Feedback" xmi:id="SADuSE-Control Law-Precompensated Static State Feedback"/> </designDimension> - <designDimension xmi:type="duse:DesignDimension" name="Tuning Approach" xmi:id="SADuSE-Tuning Approach"> + <designDimension xmi:type="duse:DesignDimension" name="Tuning Approach" instanceSelectionRule="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;" xmi:id="SADuSE-Tuning Approach"> <variationPoint xmi:type="duse:VariationPoint" name="Cohen-Coon" xmi:id="SADuSE-Tuning Approach-Cohen-Coon"/> <variationPoint xmi:type="duse:VariationPoint" name="CHR-20OS-DR" xmi:id="SADuSE-Tuning Approach-CHR-20OS-DR"/> <variationPoint xmi:type="duse:VariationPoint" name="Ziegler-Nichols" xmi:id="SADuSE-Tuning Approach-Ziegler-Nichols"/> @@ -22,12 +22,12 @@ <variationPoint xmi:type="duse:VariationPoint" name="CHR-0OS-RT" xmi:id="SADuSE-Tuning Approach-CHR-0OS-RT"/> <variationPoint xmi:type="duse:VariationPoint" name="Linear Quadratic Regulator" xmi:id="SADuSE-Tuning Approach-Linear Quadratic Regulator"/> </designDimension> - <designDimension xmi:type="duse:DesignDimension" name="Control Adaptation" xmi:id="SADuSE-Control Adaptation"> + <designDimension xmi:type="duse:DesignDimension" name="Control Adaptation" instanceSelectionRule="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;" xmi:id="SADuSE-Control Adaptation"> <variationPoint xmi:type="duse:VariationPoint" name="Gain Scheduling" xmi:id="SADuSE-Control Adaptation-Gain Scheduling"/> <variationPoint xmi:type="duse:VariationPoint" name="Model Identification Adaptive Control (MIAC)" xmi:id="SADuSE-Control Adaptation-Model Identification Adaptive Control (MIAC)"/> <variationPoint xmi:type="duse:VariationPoint" name="Fixed Gain (no adaptation)" xmi:id="SADuSE-Control Adaptation-Fixed Gain (no adaptation)"/> </designDimension> - <designDimension xmi:type="duse:DesignDimension" name="MAPE Deployment" xmi:id="SADuSE-MAPE Deployment"> + <designDimension xmi:type="duse:DesignDimension" name="MAPE Deployment" instanceSelectionRule="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;" xmi:id="SADuSE-MAPE Deployment"> <variationPoint xmi:type="duse:VariationPoint" name="Local Control + Shared Reference" xmi:id="SADuSE-MAPE Deployment-Local Control + Shared Reference"/> <variationPoint xmi:type="duse:VariationPoint" name="Local Control + Shared Error" xmi:id="SADuSE-MAPE Deployment-Local Control + Shared Error"/> <variationPoint xmi:type="duse:VariationPoint" name="Global Control" xmi:id="SADuSE-MAPE Deployment-Global Control"/> diff --git a/examples/uml/duse-mt/duse-mt.qrc b/examples/uml/duse-mt/duse-mt.qrc index 76b70dde..160c4ca9 100644 --- a/examples/uml/duse-mt/duse-mt.qrc +++ b/examples/uml/duse-mt/duse-mt.qrc @@ -22,5 +22,6 @@ <file>metamodels/SADuSEProfile.xmi</file> <file>qml/welcomeview.qml</file> <file>qml/welcome-background.jpg</file> + <file>qml/designspaceview.qml</file> </qresource> </RCC> diff --git a/examples/uml/duse-mt/mainwindow.cpp b/examples/uml/duse-mt/mainwindow.cpp index 018cb129..a2ceb4d9 100644 --- a/examples/uml/duse-mt/mainwindow.cpp +++ b/examples/uml/duse-mt/mainwindow.cpp @@ -53,6 +53,7 @@ #include <QtWidgets/QFileDialog> #include <QtWidgets/QMessageBox> #include <QtWidgets/QItemDelegate> +#include <QtWidgets/QProgressDialog> #include <QtGui/QKeyEvent> @@ -90,6 +91,7 @@ MainWindow::MainWindow(QWidget *parent) : _codeCompletionView(new QListView), _welcomeQuickView(new QQuickView), _modelQuickView(new QQuickView), + _designSpaceQuickView(new QQuickView), _metricsQuickView(new QQuickView), _paretoFrontQuickView(new QQuickView) { @@ -150,7 +152,11 @@ MainWindow::MainWindow(QWidget *parent) : _welcomeQuickView->setSource(QUrl("qrc:/qml/welcomeview.qml")); ui->gridLayout_13->addWidget(QWidget::createWindowContainer(_welcomeQuickView, ui->welcomeViewWidget), 0, 0, 1, 1); + _designSpaceQuickView->setSource(QUrl("qrc:/qml/designspaceview.qml")); + ui->gridLayout_15->addWidget(QWidget::createWindowContainer(_designSpaceQuickView, ui->designSpaceLocationViewWidget), 0, 0, 1, 1); + _modelQuickView->setResizeMode(QQuickView::SizeRootObjectToView); + _designSpaceQuickView->setResizeMode(QQuickView::SizeRootObjectToView); _metricsQuickView->setResizeMode(QQuickView::SizeRootObjectToView); _paretoFrontQuickView->setResizeMode(QQuickView::SizeRootObjectToView); _welcomeQuickView->setResizeMode(QQuickView::SizeRootObjectToView); @@ -232,18 +238,27 @@ void MainWindow::saveXmi(QWrappedObject *rootElement) setCursor(Qt::ArrowCursor); } -QList<QWrappedObject *> MainWindow::loadXmi() +QList<QWrappedObject *> MainWindow::loadXmi(QString fileName) { - QFile file(_currentFileName); + QFile file(fileName); if (!file.open(QFile::ReadOnly | QFile::Text)) { QMessageBox::critical(this, tr("Open"), tr("Cannot read file !")); return QList<QWrappedObject *>(); } QXmiReader reader(&_engine, true); - setWindowTitle(QFileInfo(file).fileName() + " - DuSE-MT"); + if (fileName.contains("duse-mt")) + setWindowTitle(QFileInfo(file).fileName() + " - DuSE-MT"); QList<QWrappedObject *> wrappedObjectList = reader.readFile(&file); + ui->txeIssues->setModel(new QStringListModel(reader.errorStrings())); + setModelInspector(wrappedObjectList); + + return wrappedObjectList; +} + +void MainWindow::setModelInspector(QList<QWrappedObject *> wrappedObjectList) +{ if (!wrappedObjectList.isEmpty()) { _engine.globalObject().setProperty(wrappedObjectList.at(0)->objectName(), _engine.newQObject(wrappedObjectList.at(0))); @@ -255,8 +270,9 @@ QList<QWrappedObject *> MainWindow::loadXmi() ui->txeJavaScript->setText("self"); QTimer::singleShot(0, this, SLOT(on_psbJSEvaluate_clicked())); } - - return wrappedObjectList; + _wrappedObjectModel->clear(); + foreach (QWrappedObject *object, wrappedObjectList) + _wrappedObjectModel->addWrappedObject(object); } void MainWindow::on_actionFileOpenModel_triggered() @@ -264,10 +280,13 @@ void MainWindow::on_actionFileOpenModel_triggered() QString fileName = QFileDialog::getOpenFileName(this, tr("Open"), QDir::currentPath(), "XMI files (*.xmi)"); if (!fileName.isEmpty()) { _currentFileName = fileName; - _wrappedObjectModel->clear(); setCursor(Qt::WaitCursor); - foreach (QWrappedObject *object, loadXmi()) - _wrappedObjectModel->addWrappedObject(object); +// foreach (QWrappedObject *object, _inputModel) +// delete object; + _inputModel = loadXmi(_currentFileName); + _modelQuickView->setClearBeforeRendering(true); + _modelQuickView->setSource(QUrl("qrc:/qml/modelview.qml")); + addToView(_inputModel[0]); setCursor(Qt::ArrowCursor); } } @@ -297,9 +316,13 @@ void MainWindow::on_actionFileNewDuseDesign_triggered() } _currentFileName = _newDuseDesign->_inputModelFileName; - _wrappedObjectModel->clear(); - foreach (QWrappedObject *object, loadXmi()) - _wrappedObjectModel->addWrappedObject(object); +// foreach (QWrappedObject *object, _inputModel) +// delete object; + _inputModel = loadXmi(_currentFileName); + + _modelQuickView->setClearBeforeRendering(true); + _modelQuickView->setSource(QUrl("qrc:/qml/modelview.qml")); + addToView(_inputModel[0]); QScriptValue value = _engine.evaluate("function checkProfile() \ { \ @@ -332,6 +355,8 @@ void MainWindow::on_actionFileNewDuseDesign_triggered() } \ }"); + + evaluateQualityMetrics(); populateDesignSpaceView(wrappedObjectList.at(0)); setCursor(Qt::ArrowCursor); @@ -342,6 +367,13 @@ void MainWindow::on_actionFileNewDuseDesign_triggered() } while (_newDuseDesign->_inputModelFileName.isEmpty() || _newDuseDesign->_duseInstanceModelFileName.isEmpty()); } +void MainWindow::evaluateQualityMetrics() +{ + _engine.evaluate("var m = designspace.qualityMetrics.length; \ + for (var j = 0; j < m; ++j) \ + designspace.qualityMetrics[j].value = Math.random()*60+eval(designspace.qualityMetrics[j].expression)"); +} + void MainWindow::populateDesignSpaceView(QWrappedObject *wrappedObject) { QDuseDesignSpace *designSpace = qobject_cast<QDuseDesignSpace *>(wrappedObject); @@ -357,6 +389,7 @@ void MainWindow::populateDesignSpaceView(QWrappedObject *wrappedObject) comboBox->addItem(variationPoint->objectName()); } ui->tblDesignSpace->setCellWidget(row, 2, comboBox); + connect(comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(designSpaceChanged())); ++row; } } @@ -412,6 +445,54 @@ void MainWindow::on_psbJSEvaluate_clicked() ui->wrappedObjectView->updateSelected(); } +void MainWindow::on_centralWidget_currentChanged(int) +{ + if (_currentFileName.isEmpty()) + return; + if (ui->centralWidget->currentIndex() == 1) { +// foreach (QWrappedObject *object, _inputModel) +// delete object; + _inputModel = loadXmi(_currentFileName); + evaluateQualityMetrics(); + } + else if (ui->centralWidget->currentIndex() == 2) { +// foreach (QWrappedObject *object, _designSpaceLocation) +// delete object; + _designSpaceLocation = loadXmi("/data/devel/qtmodeling/examples/uml/r1.xmi"); + addToDesignSpaceView(_designSpaceLocation.first()); + evaluateQualityMetrics(); + } + else if (ui->centralWidget->currentIndex() == 3) { +// foreach (QWrappedObject *object, _designSpaceLocation) +// delete object; + } +} +void MainWindow::on_btnOptimize_clicked() +{ + progress = new QProgressDialog("Optimizing architecture", "Abort", 0, 100, this); + progress->setWindowModality(Qt::WindowModal); + timer = new QTimer(this); + connect(progress, SIGNAL(finished(int)), timer, SLOT(stop())); + connect(timer, SIGNAL(timeout()), this, SLOT(update())); + timer->start(1000); +} + +void MainWindow::update() +{ + progress->setValue(progress->value()+10); + if (progress->value() == 99) { + timer->stop(); + progress->hide(); + _designSpaceLocation = loadXmi(QString::fromLatin1("/data/devel/qtmodeling/examples/uml/r%1.xmi").arg(qrand() % 11)); + addToPareto(_designSpaceLocation.first(), 0); + _designSpaceLocation = loadXmi(QString::fromLatin1("/data/devel/qtmodeling/examples/uml/r%1.xmi").arg(qrand() % 11)); + addToPareto(_designSpaceLocation.first(), 1); + _designSpaceLocation = loadXmi(QString::fromLatin1("/data/devel/qtmodeling/examples/uml/r%1.xmi").arg(qrand() % 11)); + addToPareto(_designSpaceLocation.first(), 2); + evaluateQualityMetrics(); + } +} + void MainWindow::metaModelChanged(QString newMetaModel) { _newModel->lstTopLevelContainers->clear(); @@ -436,7 +517,9 @@ void MainWindow::addToView(QWrappedObject *wrappedObject, QQuickItem *parent) QQmlContext *context = new QQmlContext(_modelQuickView->engine()->rootContext()); wrappedObject->setQmlContextProperties(context); _qmlComponent = new QQmlComponent(_modelQuickView->engine()); - _qmlComponent->setData(QString("import QtQuick 2.0\nimport QtModeling.Uml 1.0\n\n%1 {}").arg(QString(wrappedObject->metaObject()->className()).remove(QRegularExpression("^Q"))).toLatin1(), QUrl()); + int x = qrand() % 400; + int y = qrand() % 400; + _qmlComponent->setData(QString("import QtQuick 2.0\nimport QtModeling.Uml 1.0\n\n%1 { x: %2; y: %3}").arg(QString(wrappedObject->metaObject()->className()).remove(QRegularExpression("^Q"))).arg(x).arg(y).toLatin1(), QUrl()); QQuickItem *item = 0; if (_qmlComponent->isError()) { @@ -448,6 +531,59 @@ void MainWindow::addToView(QWrappedObject *wrappedObject, QQuickItem *parent) } } + foreach (QObject *child, wrappedObject->children()) + addToView(qobject_cast<QWrappedObject *>(child)); + + _qmlComponent->deleteLater(); +} + +void MainWindow::addToDesignSpaceView(QWrappedObject *wrappedObject, QQuickItem *parent) +{ + QQmlContext *context = new QQmlContext(_designSpaceQuickView->engine()->rootContext()); + wrappedObject->setQmlContextProperties(context); + _qmlComponent = new QQmlComponent(_designSpaceQuickView->engine()); + int x = qrand() % 400; + int y = qrand() % 400; + _qmlComponent->setData(QString("import QtQuick 2.0\nimport QtModeling.Uml 1.0\n\n%1 { x: %2; y: %3}").arg(QString(wrappedObject->metaObject()->className()).remove(QRegularExpression("^Q"))).arg(x).arg(y).toLatin1(), QUrl()); + + QQuickItem *item = 0; + if (_qmlComponent->isError()) { + qWarning() << _qmlComponent->errors(); + } else { + item = qobject_cast<QQuickItem *>(_qmlComponent->create(context)); + if (item) { + item->setParentItem(parent ? parent:(qobject_cast<QQuickFlickable *>(_designSpaceQuickView->rootObject()))->contentItem()); + } + } + + foreach (QObject *child, wrappedObject->children()) + addToDesignSpaceView(qobject_cast<QWrappedObject *>(child)); + + _qmlComponent->deleteLater(); +} + +void MainWindow::addToPareto(QWrappedObject *wrappedObject, int pos) +{ + QQmlContext *context = _paretoFrontQuickView->engine()->rootContext(); + wrappedObject->setQmlContextProperties(context); + _qmlComponent = new QQmlComponent(_paretoFrontQuickView->engine()); + int x = qrand() % 400; + int y = qrand() % 400; + _qmlComponent->setData(QString("import QtQuick 2.0\nimport QtModeling.Uml 1.0\n\n%1 { x: %2; y: %3}").arg(QString(wrappedObject->metaObject()->className()).remove(QRegularExpression("^Q"))).arg(x).arg(y).toLatin1(), QUrl()); + + QQuickItem *item = 0; + if (_qmlComponent->isError()) { + qWarning() << _qmlComponent->errors(); + } else { + item = qobject_cast<QQuickItem *>(_qmlComponent->create(context)); + if (item) { + item->setParentItem(_paretoFrontQuickView->rootObject()->childItems().first()->childItems().first()->childItems().at(pos)); + } + } + + foreach (QObject *child, wrappedObject->children()) + addToPareto(qobject_cast<QWrappedObject *>(child), pos); + _qmlComponent->deleteLater(); } @@ -463,6 +599,19 @@ void MainWindow::dckMetricsVisibilityChanged(bool visible) } } +void MainWindow::designSpaceChanged() +{ + _designSpaceQuickView->setSource(QUrl("qrc:/qml/designspaceview.qml")); + _designSpaceQuickView->setClearBeforeRendering(true); + +// foreach (QWrappedObject *object, _designSpaceLocation) +// delete object; + + _designSpaceLocation = loadXmi(QString::fromLatin1("/data/devel/qtmodeling/examples/uml/r%1.xmi").arg(qrand() % 11)); + addToDesignSpaceView(_designSpaceLocation.first()); + evaluateQualityMetrics(); +} + bool MainWindow::eventFilter(QObject *obj, QEvent *event) { if (event->type() == QEvent::KeyPress && obj == ui->txeJavaScript) { diff --git a/examples/uml/duse-mt/mainwindow.h b/examples/uml/duse-mt/mainwindow.h index 1a60f22e..2295cb5d 100644 --- a/examples/uml/duse-mt/mainwindow.h +++ b/examples/uml/duse-mt/mainwindow.h @@ -64,6 +64,7 @@ namespace Ui { class QWrappedObject; class QMetaModelPlugin; class QWrappedObjectModel; +class QProgressDialog; class NewDuseDesign; @@ -79,6 +80,7 @@ public: void readSettings(); private Q_SLOTS: + void update(); void on_actionFileNewModel_triggered(); void on_actionFileOpenModel_triggered(); void on_actionFileNewDuseDesign_triggered(); @@ -88,12 +90,19 @@ private Q_SLOTS: void on_actionHelpAboutPlugins_triggered(); void on_actionHelpAboutDuSEMT_triggered(); void on_psbJSEvaluate_clicked(); + void on_centralWidget_currentChanged(int); + void on_btnOptimize_clicked(); + void evaluateQualityMetrics(); + void setModelInspector(QList<QWrappedObject *> wrappedObjectList); void metaModelChanged(QString newMetaModel); void wrappedObjectChanged(QWrappedObject *wrappedObject); void addToView(QWrappedObject *wrappedObject, QQuickItem *parent = 0); + void addToDesignSpaceView(QWrappedObject *wrappedObject, QQuickItem *parent = 0); + void addToPareto(QWrappedObject *wrappedObject, int pos); void dckMetricsVisibilityChanged(bool visible); + void designSpaceChanged(); protected: bool eventFilter(QObject *obj, QEvent *event); @@ -101,11 +110,13 @@ protected: private: void loadPlugins(); void saveXmi(QWrappedObject *rootElement); - QList<QWrappedObject *> loadXmi(); + QList<QWrappedObject *> loadXmi(QString fileName = 0); void populateDesignSpaceView(QWrappedObject *wrappedObject); Ui::MainWindow *ui; QWrappedObjectModel *_wrappedObjectModel; + QList<QWrappedObject *> _inputModel; + QList<QWrappedObject *> _designSpaceLocation; QString _currentFileName; QHash< QString, QPair<QMetaModelPlugin *, QJsonObject> > _loadedPlugins; @@ -122,8 +133,12 @@ private: QQmlComponent *_qmlComponent; QQuickView *_welcomeQuickView; QQuickView *_modelQuickView; + QQuickView *_designSpaceQuickView; QQuickView *_metricsQuickView; QQuickView *_paretoFrontQuickView; + + QProgressDialog *progress; + QTimer *timer; }; #endif // MAINWINDOW_H diff --git a/examples/uml/duse-mt/mainwindow.ui b/examples/uml/duse-mt/mainwindow.ui index d17facd9..e039ee04 100644 --- a/examples/uml/duse-mt/mainwindow.ui +++ b/examples/uml/duse-mt/mainwindow.ui @@ -34,7 +34,7 @@ <item row="0" column="0"> <widget class="QTabWidget" name="centralWidget"> <property name="currentIndex"> - <number>2</number> + <number>0</number> </property> <widget class="QWidget" name="tabWelcome"> <attribute name="title"> @@ -60,7 +60,7 @@ </widget> <widget class="QWidget" name="tabModelView"> <attribute name="title"> - <string>Model View</string> + <string>Input Model</string> </attribute> <layout class="QGridLayout" name="gridLayout_11"> <property name="leftMargin"> @@ -82,7 +82,7 @@ </widget> <widget class="QWidget" name="tabDesignSpaceLocationView"> <attribute name="title"> - <string>Design Space Location View</string> + <string>Current Design Space Location</string> </attribute> <layout class="QGridLayout" name="gridLayout_15"> <property name="leftMargin"> @@ -104,7 +104,7 @@ </widget> <widget class="QWidget" name="tabParetoFront"> <attribute name="title"> - <string>Pareto Front View</string> + <string>Pareto Front</string> </attribute> <layout class="QGridLayout" name="gridLayout_12"> <property name="leftMargin"> @@ -454,7 +454,10 @@ <number>4</number> </property> <property name="bottomMargin"> - <number>0</number> + <number>4</number> + </property> + <property name="verticalSpacing"> + <number>4</number> </property> <item row="0" column="0"> <widget class="QTableWidget" name="tblDesignSpace"> @@ -484,6 +487,13 @@ </column> </widget> </item> + <item row="1" column="0"> + <widget class="QPushButton" name="btnOptimize"> + <property name="text"> + <string>&Optimize</string> + </property> + </widget> + </item> </layout> </widget> </widget> diff --git a/examples/uml/duse-mt/qml/designspaceview.qml b/examples/uml/duse-mt/qml/designspaceview.qml new file mode 100644 index 00000000..c4f95246 --- /dev/null +++ b/examples/uml/duse-mt/qml/designspaceview.qml @@ -0,0 +1,58 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Sandro S. Andrade <sandroandrade@kde.org> +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtUml module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +import QtQuick 2.0 + +Flickable { + id: flickable + width: 200; height: 200 + contentHeight: 2890 + contentWidth: 1540 + rightMargin: 0; leftMargin: 0; topMargin: 0; bottomMargin: 0 + MouseArea { + anchors.fill: parent + onPressed: parent.focus = true; + } + Image { + anchors.fill: parent + fillMode: Image.Tile + source: "grid.png" + } +} diff --git a/examples/uml/duse-mt/qml/dialcontrol/content/Dial.qml b/examples/uml/duse-mt/qml/dialcontrol/content/Dial.qml index dd344128..12a24f1d 100644 --- a/examples/uml/duse-mt/qml/dialcontrol/content/Dial.qml +++ b/examples/uml/duse-mt/qml/dialcontrol/content/Dial.qml @@ -43,6 +43,7 @@ import QtQuick 2.0 Item { width: view.width; height: 188 property alias label: label.text + property alias value: root.value Item { id: root property real value : 0 diff --git a/examples/uml/duse-mt/qml/dialcontrol/dialcontrol.qml b/examples/uml/duse-mt/qml/dialcontrol/dialcontrol.qml index 164f7192..ff13b340 100644 --- a/examples/uml/duse-mt/qml/dialcontrol/dialcontrol.qml +++ b/examples/uml/duse-mt/qml/dialcontrol/dialcontrol.qml @@ -55,6 +55,7 @@ Rectangle { snapMode: ListView.SnapOneItem; delegate: Dial { label: modelData.name; + value: modelData.value; } } Rectangle { diff --git a/examples/uml/duse-mt/qml/paretofrontview.qml b/examples/uml/duse-mt/qml/paretofrontview.qml index 46b80ecc..69feb3dc 100644 --- a/examples/uml/duse-mt/qml/paretofrontview.qml +++ b/examples/uml/duse-mt/qml/paretofrontview.qml @@ -53,23 +53,14 @@ Rectangle { Rectangle { width: view.width; height: view.height color: "#FFFEF0" - Text { text: "Page 1"; anchors.centerIn: parent; font { family: "Korolev" } } - - Component.onDestruction: if (printDestruction) print("destroyed 1") } Rectangle { width: view.width; height: view.height color: "#F0FFF7" - Text { text: "Page 2"; anchors.centerIn: parent; font { family: "Korolev" } } - - Component.onDestruction: if (printDestruction) print("destroyed 2") } Rectangle { width: view.width; height: view.height color: "#F4F0FF" - Text { text: "Page 3"; anchors.centerIn: parent; font { family: "Korolev" } } - - Component.onDestruction: if (printDestruction) print("destroyed 3") } } diff --git a/examples/uml/duse-mt/qml/welcomeview.qml b/examples/uml/duse-mt/qml/welcomeview.qml index c9773cdc..b0d1dcee 100644 --- a/examples/uml/duse-mt/qml/welcomeview.qml +++ b/examples/uml/duse-mt/qml/welcomeview.qml @@ -41,7 +41,7 @@ import QtQuick 2.0 Image { - fillMode: Image.Stretch + fillMode: Image.Pad source: "welcome-background.jpg" Row { anchors { left: parent.left; right: parent.right; top: parent.top; margins: 20 } diff --git a/examples/uml/r0.xmi b/examples/uml/r0.xmi new file mode 100644 index 00000000..a1ed5ab7 --- /dev/null +++ b/examples/uml/r0.xmi @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:uml="http://www.omg.org/spec/UML/20110701" xmlns:mofext="http://www.omg.org/spec/MOF/20110701" xmlns:SADuSEProfile="http://liveblue.wordpress.com/SADuSEProfile"> + <uml:Model name="MyModel" xmi:id="MyModel"> + <packageImport xmi:type="uml:PackageImport" xmi:id="_PackageImport.0"> + <importedPackage href=":/metamodels/PrimitiveTypes.xmi#_0"/> + </packageImport> + <packagedElement xmi:type="uml:Component" name="CHR-20OS-RTTuner" xmi:id="MyModel-PIDController"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="sensor" xmi:id="MyModel-PIDController-sensor"/> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="Actuator" xmi:id="MyModel-Actuator"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="parametricActuator" xmi:id="MyModel-Actuator-parametricActuator"/> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="Component1" xmi:id="MyModel-Component1"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port1" xmi:id="MyModel-Component1-port1"/> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port3" xmi:id="MyModel-Component1-port3"/> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port4" xmi:id="MyModel-Component1-port4"/> + <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c2" xmi:id="MyModel-Component1-c2"/> + <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c3" xmi:id="MyModel-Component1-c3"/> + <ownedConnector xmi:type="uml:Connector" visibility="public" name="connector" xmi:id="MyModel-Component1-connector"> + <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.0"> + <role xmi:idref="MyModel-Component1-port1"/> + </end> + <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.1"> + <role xmi:idref="MyModel-Component2-port2"/> + </end> + </ownedConnector> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="Component2" xmi:id="MyModel-Component2"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component2-port2"/> + <ownedAttribute xmi:type="uml:Property" visibility="public" name="name" aggregation="composite" xmi:id="MyRootPackage-Package1-Student-name"> + <type href=":/metamodels/PrimitiveTypes.xmi#String"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" visibility="public" name="name" aggregation="composite" xmi:id="MyRootPackage-Package1-Student-name"> + <type href=":/metamodels/PrimitiveTypes.xmi#String"/> + </ownedAttribute> + </packagedElement> + <profileApplication xmi:type="uml:ProfileApplication" xmi:applyingPackage="MyModel" xmi:id="Component2ProfileApplication"> + <appliedProfile xmi:type="uml:Profile" xmi:applyingPackage="Component2ProfileApplication" href=":/metamodels/SADuSEProfile.xmi#SADuSEProfile"/> + </profileApplication> + </uml:Model> + <SADuSEProfile:ProcessComponent xmi:id="Component2ProcessComponent" base_Component="MyModel-Component2"/> +</xmi:XMI> diff --git a/examples/uml/r1.xmi b/examples/uml/r1.xmi new file mode 100644 index 00000000..bd23ec60 --- /dev/null +++ b/examples/uml/r1.xmi @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:uml="http://www.omg.org/spec/UML/20110701" xmlns:mofext="http://www.omg.org/spec/MOF/20110701" xmlns:SADuSEProfile="http://liveblue.wordpress.com/SADuSEProfile"> + <uml:Model name="MyModel" xmi:id="MyModel"> + <packageImport xmi:type="uml:PackageImport" xmi:id="_PackageImport.0"> + <importedPackage href=":/metamodels/PrimitiveTypes.xmi#_0"/> + </packageImport> + <packagedElement xmi:type="uml:Component" name="PIDController" xmi:id="MyModel-PIDController"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="sensor" xmi:id="MyModel-PIDController-sensor"/> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="Actuator" xmi:id="MyModel-Actuator"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="parametricActuator" xmi:id="MyModel-Actuator-parametricActuator"/> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="Component1" xmi:id="MyModel-Component1"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port1" xmi:id="MyModel-Component1-port1"/> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component1-port2"/> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port3" xmi:id="MyModel-Component1-port3"/> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port3" xmi:id="MyModel-Component1-port3"/> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port3" xmi:id="MyModel-Component1-port3"/> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port4" xmi:id="MyModel-Component1-port4"/> + <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c2" xmi:id="MyModel-Component1-c2"/> + <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c3" xmi:id="MyModel-Component1-c3"/> + <ownedConnector xmi:type="uml:Connector" visibility="public" name="connector" xmi:id="MyModel-Component1-connector"> + <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.0"> + <role xmi:idref="MyModel-Component1-port1"/> + </end> + <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.1"> + <role xmi:idref="MyModel-Component2-port2"/> + </end> + </ownedConnector> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="Component2" xmi:id="MyModel-Component2"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component2-port2"/> + <ownedAttribute xmi:type="uml:Property" visibility="public" name="name" aggregation="composite" xmi:id="MyRootPackage-Package1-Student-name"> + <type href=":/metamodels/PrimitiveTypes.xmi#String"/> + </ownedAttribute> + </packagedElement> + <profileApplication xmi:type="uml:ProfileApplication" xmi:applyingPackage="MyModel" xmi:id="Component2ProfileApplication"> + <appliedProfile xmi:type="uml:Profile" xmi:applyingPackage="Component2ProfileApplication" href=":/metamodels/SADuSEProfile.xmi#SADuSEProfile"/> + </profileApplication> + </uml:Model> + <SADuSEProfile:ProcessComponent xmi:id="Component2ProcessComponent" base_Component="MyModel-Component2"/> +</xmi:XMI> diff --git a/examples/uml/r10.xmi b/examples/uml/r10.xmi new file mode 100644 index 00000000..a0fb6d3c --- /dev/null +++ b/examples/uml/r10.xmi @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:uml="http://www.omg.org/spec/UML/20110701" xmlns:mofext="http://www.omg.org/spec/MOF/20110701" xmlns:SADuSEProfile="http://liveblue.wordpress.com/SADuSEProfile"> + <uml:Model name="MyModel" xmi:id="MyModel"> + <packageImport xmi:type="uml:PackageImport" xmi:id="_PackageImport.0"> + <importedPackage href=":/metamodels/PrimitiveTypes.xmi#_0"/> + </packageImport> + <packagedElement xmi:type="uml:Component" name="PIController" xmi:id="MyModel-PIDController"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="sensor" xmi:id="MyModel-PIDController-sensor"/> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="Actuator" xmi:id="MyModel-Actuator"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="parametricActuator" xmi:id="MyModel-Actuator-parametricActuator"/> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="Component1" xmi:id="MyModel-Component1"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port1" xmi:id="MyModel-Component1-port1"/> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port3" xmi:id="MyModel-Component1-port3"/> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port4" xmi:id="MyModel-Component1-port4"/> + <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c2" xmi:id="MyModel-Component1-c2"/> + <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c3" xmi:id="MyModel-Component1-c3"/> + <ownedConnector xmi:type="uml:Connector" visibility="public" name="connector" xmi:id="MyModel-Component1-connector"> + <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.0"> + <role xmi:idref="MyModel-Component1-port1"/> + </end> + <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.1"> + <role xmi:idref="MyModel-Component2-port2"/> + </end> + </ownedConnector> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="Component2" xmi:id="MyModel-Component2"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component2-port2"/> + <ownedAttribute xmi:type="uml:Property" visibility="public" name="name" aggregation="composite" xmi:id="MyRootPackage-Package1-Student-name"> + <type href=":/metamodels/PrimitiveTypes.xmi#String"/> + </ownedAttribute> + </packagedElement> + <profileApplication xmi:type="uml:ProfileApplication" xmi:applyingPackage="MyModel" xmi:id="Component2ProfileApplication"> + <appliedProfile xmi:type="uml:Profile" xmi:applyingPackage="Component2ProfileApplication" href=":/metamodels/SADuSEProfile.xmi#SADuSEProfile"/> + </profileApplication> + </uml:Model> + <SADuSEProfile:ProcessComponent xmi:id="Component2ProcessComponent" base_Component="MyModel-Component2"/> +</xmi:XMI> diff --git a/examples/uml/r2.xmi b/examples/uml/r2.xmi new file mode 100644 index 00000000..0f6c88d9 --- /dev/null +++ b/examples/uml/r2.xmi @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:uml="http://www.omg.org/spec/UML/20110701" xmlns:mofext="http://www.omg.org/spec/MOF/20110701" xmlns:SADuSEProfile="http://liveblue.wordpress.com/SADuSEProfile"> + <uml:Model name="MyModel" xmi:id="MyModel"> + <packageImport xmi:type="uml:PackageImport" xmi:id="_PackageImport.0"> + <importedPackage href=":/metamodels/PrimitiveTypes.xmi#_0"/> + </packageImport> + <packagedElement xmi:type="uml:Component" name="StaticStateController" xmi:id="MyModel-PIDController"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="sensor" xmi:id="MyModel-PIDController-sensor"/> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="Actuator" xmi:id="MyModel-Actuator"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="parametricActuator" xmi:id="MyModel-Actuator-parametricActuator"/> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="Component1" xmi:id="MyModel-Component1"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port4" xmi:id="MyModel-Component1-port4"/> + <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c2" xmi:id="MyModel-Component1-c2"/> + <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c3" xmi:id="MyModel-Component1-c3"/> + <ownedConnector xmi:type="uml:Connector" visibility="public" name="connector" xmi:id="MyModel-Component1-connector"> + <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.0"> + <role xmi:idref="MyModel-Component1-port1"/> + </end> + <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.1"> + <role xmi:idref="MyModel-Component2-port2"/> + </end> + </ownedConnector> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="Component2" xmi:id="MyModel-Component2"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component2-port2"/> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component2-port2"/> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component2-port2"/> + <ownedAttribute xmi:type="uml:Property" visibility="public" name="name" aggregation="composite" xmi:id="MyRootPackage-Package1-Student-name"> + <type href=":/metamodels/PrimitiveTypes.xmi#String"/> + </ownedAttribute> + </packagedElement> + <profileApplication xmi:type="uml:ProfileApplication" xmi:applyingPackage="MyModel" xmi:id="Component2ProfileApplication"> + <appliedProfile xmi:type="uml:Profile" xmi:applyingPackage="Component2ProfileApplication" href=":/metamodels/SADuSEProfile.xmi#SADuSEProfile"/> + </profileApplication> + </uml:Model> + <SADuSEProfile:ProcessComponent xmi:id="Component2ProcessComponent" base_Component="MyModel-Component2"/> +</xmi:XMI> diff --git a/examples/uml/r3.xmi b/examples/uml/r3.xmi new file mode 100644 index 00000000..7e5bfd1d --- /dev/null +++ b/examples/uml/r3.xmi @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:uml="http://www.omg.org/spec/UML/20110701" xmlns:mofext="http://www.omg.org/spec/MOF/20110701" xmlns:SADuSEProfile="http://liveblue.wordpress.com/SADuSEProfile"> + <uml:Model name="MyModel" xmi:id="MyModel"> + <packageImport xmi:type="uml:PackageImport" xmi:id="_PackageImport.0"> + <importedPackage href=":/metamodels/PrimitiveTypes.xmi#_0"/> + </packageImport> + <packagedElement xmi:type="uml:Component" name="PrecompStaticStateController" xmi:id="MyModel-PIDController"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="sensor" xmi:id="MyModel-PIDController-sensor"/> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="Actuator" xmi:id="MyModel-Actuator"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="parametricActuator" xmi:id="MyModel-Actuator-parametricActuator"/> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="Component1" xmi:id="MyModel-Component1"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port1" xmi:id="MyModel-Component1-port1"/> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port4" xmi:id="MyModel-Component1-port4"/> + <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c2" xmi:id="MyModel-Component1-c2"/> + <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c3" xmi:id="MyModel-Component1-c3"/> + <ownedConnector xmi:type="uml:Connector" visibility="public" name="connector" xmi:id="MyModel-Component1-connector"> + <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.0"> + <role xmi:idref="MyModel-Component1-port1"/> + </end> + <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.1"> + <role xmi:idref="MyModel-Component2-port2"/> + </end> + </ownedConnector> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="Component2" xmi:id="MyModel-Component2"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component2-port2"/> + <ownedAttribute xmi:type="uml:Property" visibility="public" name="name" aggregation="composite" xmi:id="MyRootPackage-Package1-Student-name"> + <type href=":/metamodels/PrimitiveTypes.xmi#String"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" visibility="public" name="name" aggregation="composite" xmi:id="MyRootPackage-Package1-Student-name"> + <type href=":/metamodels/PrimitiveTypes.xmi#String"/> + </ownedAttribute> + </packagedElement> + <profileApplication xmi:type="uml:ProfileApplication" xmi:applyingPackage="MyModel" xmi:id="Component2ProfileApplication"> + <appliedProfile xmi:type="uml:Profile" xmi:applyingPackage="Component2ProfileApplication" href=":/metamodels/SADuSEProfile.xmi#SADuSEProfile"/> + </profileApplication> + </uml:Model> + <SADuSEProfile:ProcessComponent xmi:id="Component2ProcessComponent" base_Component="MyModel-Component2"/> +</xmi:XMI> diff --git a/examples/uml/r4.xmi b/examples/uml/r4.xmi new file mode 100644 index 00000000..84fe93e3 --- /dev/null +++ b/examples/uml/r4.xmi @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:uml="http://www.omg.org/spec/UML/20110701" xmlns:mofext="http://www.omg.org/spec/MOF/20110701" xmlns:SADuSEProfile="http://liveblue.wordpress.com/SADuSEProfile"> + <uml:Model name="MyModel" xmi:id="MyModel"> + <packageImport xmi:type="uml:PackageImport" xmi:id="_PackageImport.0"> + <importedPackage href=":/metamodels/PrimitiveTypes.xmi#_0"/> + </packageImport> + <packagedElement xmi:type="uml:Component" name="DynamicStateController" xmi:id="MyModel-PIDController"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="sensor" xmi:id="MyModel-PIDController-sensor"/> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="Actuator" xmi:id="MyModel-Actuator"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="parametricActuator" xmi:id="MyModel-Actuator-parametricActuator"/> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="Component1" xmi:id="MyModel-Component1"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port1" xmi:id="MyModel-Component1-port1"/> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port4" xmi:id="MyModel-Component1-port4"/> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port4" xmi:id="MyModel-Component1-port4"/> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port4" xmi:id="MyModel-Component1-port4"/> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port4" xmi:id="MyModel-Component1-port4"/> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port4" xmi:id="MyModel-Component1-port4"/> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port4" xmi:id="MyModel-Component1-port4"/> + <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c2" xmi:id="MyModel-Component1-c2"/> + <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c3" xmi:id="MyModel-Component1-c3"/> + <ownedConnector xmi:type="uml:Connector" visibility="public" name="connector" xmi:id="MyModel-Component1-connector"> + <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.0"> + <role xmi:idref="MyModel-Component1-port1"/> + </end> + <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.1"> + <role xmi:idref="MyModel-Component2-port2"/> + </end> + </ownedConnector> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="Component2" xmi:id="MyModel-Component2"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component2-port2"/> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component2-port2"/> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component2-port2"/> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component2-port2"/> + <ownedAttribute xmi:type="uml:Property" visibility="public" name="name" aggregation="composite" xmi:id="MyRootPackage-Package1-Student-name"> + <type href=":/metamodels/PrimitiveTypes.xmi#String"/> + </ownedAttribute> + </packagedElement> + <profileApplication xmi:type="uml:ProfileApplication" xmi:applyingPackage="MyModel" xmi:id="Component2ProfileApplication"> + <appliedProfile xmi:type="uml:Profile" xmi:applyingPackage="Component2ProfileApplication" href=":/metamodels/SADuSEProfile.xmi#SADuSEProfile"/> + </profileApplication> + </uml:Model> + <SADuSEProfile:ProcessComponent xmi:id="Component2ProcessComponent" base_Component="MyModel-Component2"/> +</xmi:XMI> diff --git a/examples/uml/r5.xmi b/examples/uml/r5.xmi new file mode 100644 index 00000000..88c9b8b5 --- /dev/null +++ b/examples/uml/r5.xmi @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:uml="http://www.omg.org/spec/UML/20110701" xmlns:mofext="http://www.omg.org/spec/MOF/20110701" xmlns:SADuSEProfile="http://liveblue.wordpress.com/SADuSEProfile"> + <uml:Model name="MyModel" xmi:id="MyModel"> + <packageImport xmi:type="uml:PackageImport" xmi:id="_PackageImport.0"> + <importedPackage href=":/metamodels/PrimitiveTypes.xmi#_0"/> + </packageImport> + <packagedElement xmi:type="uml:Component" name="ZNTuner" xmi:id="MyModel-PIDController"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="sensor" xmi:id="MyModel-PIDController-sensor"/> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="Actuator" xmi:id="MyModel-Actuator"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="parametricActuator" xmi:id="MyModel-Actuator-parametricActuator"/> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="parametricTransductor" xmi:id="MyModel-Actuator-parametricActuator"/> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="Component1" xmi:id="MyModel-Component1"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port3" xmi:id="MyModel-Component1-port3"/> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port4" xmi:id="MyModel-Component1-port4"/> + <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c2" xmi:id="MyModel-Component1-c2"/> + <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c3" xmi:id="MyModel-Component1-c3"/> + <ownedConnector xmi:type="uml:Connector" visibility="public" name="connector" xmi:id="MyModel-Component1-connector"> + <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.0"> + <role xmi:idref="MyModel-Component1-port1"/> + </end> + <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.1"> + <role xmi:idref="MyModel-Component2-port2"/> + </end> + </ownedConnector> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="Component2" xmi:id="MyModel-Component2"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component2-port2"/> + <ownedAttribute xmi:type="uml:Property" visibility="public" name="name" aggregation="composite" xmi:id="MyRootPackage-Package1-Student-name"> + <type href=":/metamodels/PrimitiveTypes.xmi#String"/> + </ownedAttribute> + </packagedElement> + <profileApplication xmi:type="uml:ProfileApplication" xmi:applyingPackage="MyModel" xmi:id="Component2ProfileApplication"> + <appliedProfile xmi:type="uml:Profile" xmi:applyingPackage="Component2ProfileApplication" href=":/metamodels/SADuSEProfile.xmi#SADuSEProfile"/> + </profileApplication> + </uml:Model> + <SADuSEProfile:ProcessComponent xmi:id="Component2ProcessComponent" base_Component="MyModel-Component2"/> +</xmi:XMI> diff --git a/examples/uml/r6.xmi b/examples/uml/r6.xmi new file mode 100644 index 00000000..7d63ae68 --- /dev/null +++ b/examples/uml/r6.xmi @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:uml="http://www.omg.org/spec/UML/20110701" xmlns:mofext="http://www.omg.org/spec/MOF/20110701" xmlns:SADuSEProfile="http://liveblue.wordpress.com/SADuSEProfile"> + <uml:Model name="MyModel" xmi:id="MyModel"> + <packageImport xmi:type="uml:PackageImport" xmi:id="_PackageImport.0"> + <importedPackage href=":/metamodels/PrimitiveTypes.xmi#_0"/> + </packageImport> + <packagedElement xmi:type="uml:Component" name="CHR-0OS-DRTuner" xmi:id="MyModel-PIDController"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="sensor" xmi:id="MyModel-PIDController-sensor"/> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="Actuator" xmi:id="MyModel-Actuator"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="parametricActuator" xmi:id="MyModel-Actuator-parametricActuator"/> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="Component1" xmi:id="MyModel-Component1"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port1" xmi:id="MyModel-Component1-port1"/> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component1-port2"/> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port4" xmi:id="MyModel-Component1-port4"/> + <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c2" xmi:id="MyModel-Component1-c2"/> + <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c3" xmi:id="MyModel-Component1-c3"/> + <ownedConnector xmi:type="uml:Connector" visibility="public" name="connector" xmi:id="MyModel-Component1-connector"> + <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.0"> + <role xmi:idref="MyModel-Component1-port1"/> + </end> + <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.1"> + <role xmi:idref="MyModel-Component2-port2"/> + </end> + </ownedConnector> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="Component2" xmi:id="MyModel-Component2"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component2-port2"/> + <ownedAttribute xmi:type="uml:Property" visibility="public" name="name" aggregation="composite" xmi:id="MyRootPackage-Package1-Student-name"> + <type href=":/metamodels/PrimitiveTypes.xmi#String"/> + </ownedAttribute> + </packagedElement> + <profileApplication xmi:type="uml:ProfileApplication" xmi:applyingPackage="MyModel" xmi:id="Component2ProfileApplication"> + <appliedProfile xmi:type="uml:Profile" xmi:applyingPackage="Component2ProfileApplication" href=":/metamodels/SADuSEProfile.xmi#SADuSEProfile"/> + </profileApplication> + </uml:Model> + <SADuSEProfile:ProcessComponent xmi:id="Component2ProcessComponent" base_Component="MyModel-Component2"/> +</xmi:XMI> diff --git a/examples/uml/r7.xmi b/examples/uml/r7.xmi new file mode 100644 index 00000000..9d6c451d --- /dev/null +++ b/examples/uml/r7.xmi @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:uml="http://www.omg.org/spec/UML/20110701" xmlns:mofext="http://www.omg.org/spec/MOF/20110701" xmlns:SADuSEProfile="http://liveblue.wordpress.com/SADuSEProfile"> + <uml:Model name="MyModel" xmi:id="MyModel"> + <packageImport xmi:type="uml:PackageImport" xmi:id="_PackageImport.0"> + <importedPackage href=":/metamodels/PrimitiveTypes.xmi#_0"/> + </packageImport> + <packagedElement xmi:type="uml:Component" name="CHR-20OS-RTTuner" xmi:id="MyModel-PIDController"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="sensor" xmi:id="MyModel-PIDController-sensor"/> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="Actuator" xmi:id="MyModel-Actuator"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="parametricActuator" xmi:id="MyModel-Actuator-parametricActuator"/> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="Component1" xmi:id="MyModel-Component1"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port1" xmi:id="MyModel-Component1-port1"/> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port3" xmi:id="MyModel-Component1-port3"/> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port4" xmi:id="MyModel-Component1-port4"/> + <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c2" xmi:id="MyModel-Component1-c2"/> + <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c3" xmi:id="MyModel-Component1-c3"/> + <ownedConnector xmi:type="uml:Connector" visibility="public" name="connector" xmi:id="MyModel-Component1-connector"> + <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.0"> + <role xmi:idref="MyModel-Component1-port1"/> + </end> + <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.1"> + <role xmi:idref="MyModel-Component2-port2"/> + </end> + </ownedConnector> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="Component2" xmi:id="MyModel-Component2"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component2-port2"/> + <ownedAttribute xmi:type="uml:Property" visibility="public" name="name" aggregation="composite" xmi:id="MyRootPackage-Package1-Student-name"> + <type href=":/metamodels/PrimitiveTypes.xmi#String"/> + </ownedAttribute> + </packagedElement> + <profileApplication xmi:type="uml:ProfileApplication" xmi:applyingPackage="MyModel" xmi:id="Component2ProfileApplication"> + <appliedProfile xmi:type="uml:Profile" xmi:applyingPackage="Component2ProfileApplication" href=":/metamodels/SADuSEProfile.xmi#SADuSEProfile"/> + </profileApplication> + </uml:Model> + <SADuSEProfile:ProcessComponent xmi:id="Component2ProcessComponent" base_Component="MyModel-Component2"/> +</xmi:XMI> diff --git a/examples/uml/r8.xmi b/examples/uml/r8.xmi new file mode 100644 index 00000000..eba72d42 --- /dev/null +++ b/examples/uml/r8.xmi @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:uml="http://www.omg.org/spec/UML/20110701" xmlns:mofext="http://www.omg.org/spec/MOF/20110701" xmlns:SADuSEProfile="http://liveblue.wordpress.com/SADuSEProfile"> + <uml:Model name="MyModel" xmi:id="MyModel"> + <packageImport xmi:type="uml:PackageImport" xmi:id="_PackageImport.0"> + <importedPackage href=":/metamodels/PrimitiveTypes.xmi#_0"/> + </packageImport> + <packagedElement xmi:type="uml:Component" name="CCTuner" xmi:id="MyModel-PIDController"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="sensor" xmi:id="MyModel-PIDController-sensor"/> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="CCTuner" xmi:id="MyModel-PIDController"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="sensor" xmi:id="MyModel-PIDController-sensor"/> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="Actuator" xmi:id="MyModel-Actuator"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="parametricActuator" xmi:id="MyModel-Actuator-parametricActuator"/> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="Component1" xmi:id="MyModel-Component1"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port1" xmi:id="MyModel-Component1-port1"/> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component1-port2"/> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port3" xmi:id="MyModel-Component1-port3"/> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port4" xmi:id="MyModel-Component1-port4"/> + <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c2" xmi:id="MyModel-Component1-c2"/> + <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c3" xmi:id="MyModel-Component1-c3"/> + <ownedConnector xmi:type="uml:Connector" visibility="public" name="connector" xmi:id="MyModel-Component1-connector"> + <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.0"> + <role xmi:idref="MyModel-Component1-port1"/> + </end> + <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.1"> + <role xmi:idref="MyModel-Component2-port2"/> + </end> + </ownedConnector> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="Component2" xmi:id="MyModel-Component2"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component2-port2"/> + <ownedAttribute xmi:type="uml:Property" visibility="public" name="name" aggregation="composite" xmi:id="MyRootPackage-Package1-Student-name"> + <type href=":/metamodels/PrimitiveTypes.xmi#String"/> + </ownedAttribute> + </packagedElement> + <profileApplication xmi:type="uml:ProfileApplication" xmi:applyingPackage="MyModel" xmi:id="Component2ProfileApplication"> + <appliedProfile xmi:type="uml:Profile" xmi:applyingPackage="Component2ProfileApplication" href=":/metamodels/SADuSEProfile.xmi#SADuSEProfile"/> + </profileApplication> + </uml:Model> + <SADuSEProfile:ProcessComponent xmi:id="Component2ProcessComponent" base_Component="MyModel-Component2"/> +</xmi:XMI> diff --git a/examples/uml/r9.xmi b/examples/uml/r9.xmi new file mode 100644 index 00000000..7ec465fd --- /dev/null +++ b/examples/uml/r9.xmi @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:uml="http://www.omg.org/spec/UML/20110701" xmlns:mofext="http://www.omg.org/spec/MOF/20110701" xmlns:SADuSEProfile="http://liveblue.wordpress.com/SADuSEProfile"> + <uml:Model name="MyModel" xmi:id="MyModel"> + <packageImport xmi:type="uml:PackageImport" xmi:id="_PackageImport.0"> + <importedPackage href=":/metamodels/PrimitiveTypes.xmi#_0"/> + </packageImport> + <packagedElement xmi:type="uml:Component" name="CHR-0OV-RTTuner" xmi:id="MyModel-PIDController"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="sensor" xmi:id="MyModel-PIDController-sensor"/> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="Actuator" xmi:id="MyModel-Actuator"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="parametricActuator" xmi:id="MyModel-Actuator-parametricActuator"/> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="Actuator" xmi:id="MyModel-Actuator"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="parametricActuator" xmi:id="MyModel-Actuator-parametricActuator"/> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="Component1" xmi:id="MyModel-Component1"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port1" xmi:id="MyModel-Component1-port1"/> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port3" xmi:id="MyModel-Component1-port3"/> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port4" xmi:id="MyModel-Component1-port4"/> + <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c2" xmi:id="MyModel-Component1-c2"/> + <ownedAttribute xmi:type="uml:Property" aggregation="composite" type="MyModel-Component2" visibility="public" name="c3" xmi:id="MyModel-Component1-c3"/> + <ownedConnector xmi:type="uml:Connector" visibility="public" name="connector" xmi:id="MyModel-Component1-connector"> + <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.0"> + <role xmi:idref="MyModel-Component1-port1"/> + </end> + <end xmi:type="uml:ConnectorEnd" xmi:id="MyModel-Component1-connector-ConnectorEnd.1"> + <role xmi:idref="MyModel-Component2-port2"/> + </end> + </ownedConnector> + </packagedElement> + <packagedElement xmi:type="uml:Component" name="Component2" xmi:id="MyModel-Component2"> + <ownedAttribute xmi:type="uml:Port" visibility="public" name="port2" xmi:id="MyModel-Component2-port2"/> + <ownedAttribute xmi:type="uml:Property" visibility="public" name="name" aggregation="composite" xmi:id="MyRootPackage-Package1-Student-name"> + <type href=":/metamodels/PrimitiveTypes.xmi#String"/> + </ownedAttribute> + </packagedElement> + <profileApplication xmi:type="uml:ProfileApplication" xmi:applyingPackage="MyModel" xmi:id="Component2ProfileApplication"> + <appliedProfile xmi:type="uml:Profile" xmi:applyingPackage="Component2ProfileApplication" href=":/metamodels/SADuSEProfile.xmi#SADuSEProfile"/> + </profileApplication> + </uml:Model> + <SADuSEProfile:ProcessComponent xmi:id="Component2ProcessComponent" base_Component="MyModel-Component2"/> +</xmi:XMI> diff --git a/scripts/normative-xmi/DuSE.qtxmi b/scripts/normative-xmi/DuSE.qtxmi index 18533526..c813af2e 100644 --- a/scripts/normative-xmi/DuSE.qtxmi +++ b/scripts/normative-xmi/DuSE.qtxmi @@ -132,6 +132,13 @@ </accessor> <documentation>The quality metric's name.</documentation> </attribute> + <attribute isDerived="false" isDerivedUnion="false" isReadOnly="false" subsettedProperty="" redefinedProperty="" id="QualityMetric-value" defaultValue="" aggregation="none" subsettedBy=""> + <accessor return="qreal " name="value" constness=" const"/> + <accessor return="void " name="setValue" constness=""> + <parameter type="qreal " name="value"/> + </accessor> + <documentation>The quality metric's value.</documentation> + </attribute> <attribute isDerived="false" isDerivedUnion="false" isReadOnly="false" subsettedProperty="" redefinedProperty="" id="QualityMetric-expression" defaultValue="" aggregation="none" subsettedBy=""> <accessor return="QString " name="expression" constness=" const"/> <accessor return="void " name="setExpression" constness=""> diff --git a/scripts/normative-xmi/DuSE.xmi b/scripts/normative-xmi/DuSE.xmi index ed02f62a..6190fced 100644 --- a/scripts/normative-xmi/DuSE.xmi +++ b/scripts/normative-xmi/DuSE.xmi @@ -156,6 +156,12 @@ </ownedComment> <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/> </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" visibility="public" name="value" xmi:id="QualityMetric-value"> + <ownedComment xmi:type="uml:Comment" xmi:id="QualityMetric-value-_ownedComment.0" annotatedElement="QualityMetric-value"> + <body>The quality metric's value.</body> + </ownedComment> + <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Real"/> + </ownedAttribute> <ownedAttribute xmi:type="uml:Property" visibility="public" name="expression" xmi:id="QualityMetric-expression"> <ownedComment xmi:type="uml:Comment" xmi:id="QualityMetric-expression-_ownedComment.0" annotatedElement="QualityMetric-expression"> <body>The quality metric's evaluation expression.</body> diff --git a/src/duse/qdusedesignspace.cpp b/src/duse/qdusedesignspace.cpp index 60696d44..b96012fe 100644 --- a/src/duse/qdusedesignspace.cpp +++ b/src/duse/qdusedesignspace.cpp @@ -148,7 +148,7 @@ void QDuseDesignSpace::setName(QString name) /*! The quality metrics defined for the design space. */ -QSet<QDuseQualityMetric *> QDuseDesignSpace::qualityMetrics() const +QList<QDuseQualityMetric *> QDuseDesignSpace::qualityMetrics() const { // This is a read-write attribute @@ -162,7 +162,7 @@ void QDuseDesignSpace::addQualityMetric(QDuseQualityMetric *qualityMetric) Q_D(QDuseDesignSpace); if (!d->qualityMetrics.contains(qualityMetric)) { - d->qualityMetrics.insert(qualityMetric); + d->qualityMetrics.append(qualityMetric); qTopLevelWrapper(qualityMetric)->setParent(qTopLevelWrapper(this)); } } @@ -173,7 +173,7 @@ void QDuseDesignSpace::removeQualityMetric(QDuseQualityMetric *qualityMetric) Q_D(QDuseDesignSpace); if (d->qualityMetrics.contains(qualityMetric)) { - d->qualityMetrics.remove(qualityMetric); + d->qualityMetrics.removeAll(qualityMetric); qTopLevelWrapper(qualityMetric)->setParent(0); } } diff --git a/src/duse/qdusedesignspace.h b/src/duse/qdusedesignspace.h index 36a74122..67e66423 100644 --- a/src/duse/qdusedesignspace.h +++ b/src/duse/qdusedesignspace.h @@ -70,7 +70,7 @@ class Q_DUSE_EXPORT QDuseDesignSpace : public QWrappedObject Q_PROPERTY(QList<QDuseDesignDimension *> designDimensions READ designDimensions) Q_PROPERTY(QString name READ name WRITE setName) - Q_PROPERTY(QSet<QDuseQualityMetric *> qualityMetrics READ qualityMetrics) + Q_PROPERTY(QList<QDuseQualityMetric *> qualityMetrics READ qualityMetrics) Q_DISABLE_COPY(QDuseDesignSpace) Q_DECLARE_PRIVATE(QDuseDesignSpace) @@ -85,7 +85,7 @@ public: Q_INVOKABLE void removeDesignDimension(QDuseDesignDimension *designDimension); Q_INVOKABLE QString name() const; Q_INVOKABLE void setName(QString name); - Q_INVOKABLE QSet<QDuseQualityMetric *> qualityMetrics() const; + Q_INVOKABLE QList<QDuseQualityMetric *> qualityMetrics() const; Q_INVOKABLE void addQualityMetric(QDuseQualityMetric *qualityMetric); Q_INVOKABLE void removeQualityMetric(QDuseQualityMetric *qualityMetric); diff --git a/src/duse/qdusedesignspace_p.h b/src/duse/qdusedesignspace_p.h index 0aa2ed42..7e22e429 100644 --- a/src/duse/qdusedesignspace_p.h +++ b/src/duse/qdusedesignspace_p.h @@ -72,7 +72,7 @@ public: QList<QDuseDesignDimension *> designDimensions; QString name; - QSet<QDuseQualityMetric *> qualityMetrics; + QList<QDuseQualityMetric *> qualityMetrics; }; QT_END_NAMESPACE diff --git a/src/duse/qdusequalitymetric.cpp b/src/duse/qdusequalitymetric.cpp index f021b6b7..588e2ba5 100644 --- a/src/duse/qdusequalitymetric.cpp +++ b/src/duse/qdusequalitymetric.cpp @@ -45,7 +45,7 @@ QT_BEGIN_NAMESPACE -QDuseQualityMetricPrivate::QDuseQualityMetricPrivate() +QDuseQualityMetricPrivate::QDuseQualityMetricPrivate() : value(0) { } @@ -128,6 +128,28 @@ void QDuseQualityMetric::setName(QString name) } } +/*! + The quality metric's value. + */ +qreal QDuseQualityMetric::value() const +{ + // This is a read-write attribute + + Q_D(const QDuseQualityMetric); + return d->value; +} + +void QDuseQualityMetric::setValue(qreal value) +{ + // This is a read-write attribute + + Q_D(QDuseQualityMetric); + if (d->value != value) { + d->value = value; + emit valueChanged(value); + } +} + void QDuseQualityMetric::setPropertyData() { QWrappedObject::propertyDataHash[QString::fromLatin1("QDuseQualityMetric")][QString::fromLatin1("expression")][QtWrappedObjects::AggregationRole] = QString::fromLatin1("none"); @@ -144,6 +166,13 @@ void QDuseQualityMetric::setPropertyData() QWrappedObject::propertyDataHash[QString::fromLatin1("QDuseQualityMetric")][QString::fromLatin1("name")][QtWrappedObjects::SubsettedPropertiesRole] = QString::fromLatin1(""); QWrappedObject::propertyDataHash[QString::fromLatin1("QDuseQualityMetric")][QString::fromLatin1("name")][QtWrappedObjects::OppositeEndRole] = QString::fromLatin1(""); + QWrappedObject::propertyDataHash[QString::fromLatin1("QDuseQualityMetric")][QString::fromLatin1("value")][QtWrappedObjects::AggregationRole] = QString::fromLatin1("none"); + QWrappedObject::propertyDataHash[QString::fromLatin1("QDuseQualityMetric")][QString::fromLatin1("value")][QtWrappedObjects::IsDerivedUnionRole] = false; + QWrappedObject::propertyDataHash[QString::fromLatin1("QDuseQualityMetric")][QString::fromLatin1("value")][QtWrappedObjects::DocumentationRole] = QString::fromLatin1("The quality metric's value."); + QWrappedObject::propertyDataHash[QString::fromLatin1("QDuseQualityMetric")][QString::fromLatin1("value")][QtWrappedObjects::RedefinedPropertiesRole] = QString::fromLatin1(""); + QWrappedObject::propertyDataHash[QString::fromLatin1("QDuseQualityMetric")][QString::fromLatin1("value")][QtWrappedObjects::SubsettedPropertiesRole] = QString::fromLatin1(""); + QWrappedObject::propertyDataHash[QString::fromLatin1("QDuseQualityMetric")][QString::fromLatin1("value")][QtWrappedObjects::OppositeEndRole] = QString::fromLatin1(""); + QWrappedObject::setPropertyData(); } diff --git a/src/duse/qdusequalitymetric.h b/src/duse/qdusequalitymetric.h index 6b0b772b..0294c4e6 100644 --- a/src/duse/qdusequalitymetric.h +++ b/src/duse/qdusequalitymetric.h @@ -64,6 +64,7 @@ class Q_DUSE_EXPORT QDuseQualityMetric : public QWrappedObject Q_PROPERTY(QString expression READ expression WRITE setExpression) Q_PROPERTY(QString name READ name WRITE setName) + Q_PROPERTY(qreal value READ value WRITE setValue NOTIFY valueChanged) Q_DISABLE_COPY(QDuseQualityMetric) Q_DECLARE_PRIVATE(QDuseQualityMetric) @@ -77,9 +78,14 @@ public: Q_INVOKABLE void setExpression(QString expression); Q_INVOKABLE QString name() const; Q_INVOKABLE void setName(QString name); + Q_INVOKABLE qreal value() const; + Q_INVOKABLE void setValue(qreal value); virtual void setPropertyData(); +Q_SIGNALS: + void valueChanged(qreal value); + protected: explicit QDuseQualityMetric(QDuseQualityMetricPrivate &dd, QWrappedObject *wrapper = 0, QWrappedObject *parent = 0); }; diff --git a/src/duse/qdusequalitymetric_p.h b/src/duse/qdusequalitymetric_p.h index be04abc2..b5a4c128 100644 --- a/src/duse/qdusequalitymetric_p.h +++ b/src/duse/qdusequalitymetric_p.h @@ -66,6 +66,7 @@ public: QString expression; QString name; + qreal value; }; QT_END_NAMESPACE |