diff options
-rw-r--r-- | examples/uml/duse-mt/src/app/SADuse.xmi | 2 | ||||
-rw-r--r-- | examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.cpp | 2 | ||||
-rw-r--r-- | scripts/normative-xmi/Duse.xmi | 6 | ||||
-rw-r--r-- | src/duse/qdusedesignspace.cpp | 20 | ||||
-rw-r--r-- | src/duse/qdusedesignspace.h | 3 | ||||
-rw-r--r-- | src/duse/qobjects/qdusedesignspaceobject.cpp | 22 | ||||
-rw-r--r-- | src/duse/qobjects/qdusedesignspaceobject_p.h | 4 |
7 files changed, 57 insertions, 2 deletions
diff --git a/examples/uml/duse-mt/src/app/SADuse.xmi b/examples/uml/duse-mt/src/app/SADuse.xmi index de7d16fa..4291b18f 100644 --- a/examples/uml/duse-mt/src/app/SADuse.xmi +++ b/examples/uml/duse-mt/src/app/SADuse.xmi @@ -1,6 +1,6 @@ <?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" xmlns:uml="http://www.omg.org/spec/UML/20110701"> - <duse:DesignSpace name="SADuse" xmi:id="SADuse"> + <duse:DesignSpace name="SADuse" xmi:id="SADuse" requiredProfile="SADuseProfile"> <qualityMetric xmi:type="duse:QualityMetric" name="Control Robustness" xmi:id="SADuse-ControlRobustness"> <expression xmi:type="uml:OpaqueExpression" xmi:id="SADuse-ControlRobustness-Expression"> <language>JavaScript</language> diff --git a/examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.cpp b/examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.cpp index 994478e4..0fd3f317 100644 --- a/examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.cpp +++ b/examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.cpp @@ -162,7 +162,7 @@ void DesignSpaceExplorerPlugin::newDuseDesign() bool found = false; foreach (QObject *profileApplication, _core->projectController()->currentModelObjects().first()->property("profileApplications").value< QSet<QObject *> >()) { - if ((profileApplication->property("appliedProfile").value<QObject *>())->property("name").toString() == _duseInstance.first()->asQModelingObject()->objectName() + QStringLiteral("Profile")) + if ((profileApplication->property("appliedProfile").value<QObject *>())->property("name").toString() == _duseInstance.first()->asQModelingObject()->property("requiredProfile")) found = true; } diff --git a/scripts/normative-xmi/Duse.xmi b/scripts/normative-xmi/Duse.xmi index d3e3a99f..d47aacd3 100644 --- a/scripts/normative-xmi/Duse.xmi +++ b/scripts/normative-xmi/Duse.xmi @@ -63,6 +63,12 @@ </ownedComment> <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/> </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" name="requiredProfile" visibility="public" xmi:id="DesignSpace-requiredProfile"> + <ownedComment xmi:type="uml:Comment" xmi:id="DesignSpace-requiredProfile-_ownedComment.0" annotatedElement="DesignSpace-requiredProfile"> + <body>The profile required to be applied in models manipulated by the design space.</body> + </ownedComment> + <type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/> + </ownedAttribute> <ownedAttribute xmi:type="uml:Property" name="designDimension" visibility="public" type="DesignDimension" aggregation="composite" isOrdered="true" xmi:id="DesignSpace-designDimension"> <ownedComment xmi:type="uml:Comment" xmi:id="DesignSpace-designDimension-_ownedComment.0" annotatedElement="DesignSpace-designDimension"> <body>The design dimensions (degrees of freedom) of the design space.</body> diff --git a/src/duse/qdusedesignspace.cpp b/src/duse/qdusedesignspace.cpp index 923a5e09..39fe4c47 100644 --- a/src/duse/qdusedesignspace.cpp +++ b/src/duse/qdusedesignspace.cpp @@ -64,6 +64,7 @@ QModelingElement *QDuseDesignSpace::clone() const { QDuseDesignSpace *c = new QDuseDesignSpace; c->setName(name()); + c->setRequiredProfile(requiredProfile()); foreach (QDuseDesignDimension *element, designDimensions()) c->addDesignDimension(dynamic_cast<QDuseDesignDimension *>(element->clone())); foreach (QDuseQualityMetric *element, qualityMetrics()) @@ -93,6 +94,25 @@ void QDuseDesignSpace::setName(QString name) } /*! + The profile required to be applied in models manipulated by the design space. + */ +QString QDuseDesignSpace::requiredProfile() const +{ + // This is a read-write property + + return _requiredProfile; +} + +void QDuseDesignSpace::setRequiredProfile(QString requiredProfile) +{ + // This is a read-write property + + if (_requiredProfile != requiredProfile) { + _requiredProfile = requiredProfile; + } +} + +/*! The design dimensions (degrees of freedom) of the design space. */ const QList<QDuseDesignDimension *> QDuseDesignSpace::designDimensions() const diff --git a/src/duse/qdusedesignspace.h b/src/duse/qdusedesignspace.h index 72c26b0b..80ba4ed8 100644 --- a/src/duse/qdusedesignspace.h +++ b/src/duse/qdusedesignspace.h @@ -64,6 +64,8 @@ public: // Owned attributes QString name() const; void setName(QString name); + QString requiredProfile() const; + void setRequiredProfile(QString requiredProfile); const QList<QDuseDesignDimension *> designDimensions() const; void addDesignDimension(QDuseDesignDimension *designDimension); void removeDesignDimension(QDuseDesignDimension *designDimension); @@ -73,6 +75,7 @@ public: protected: QString _name; + QString _requiredProfile; QList<QDuseDesignDimension *> _designDimensions; QSet<QDuseQualityMetric *> _qualityMetrics; }; diff --git a/src/duse/qobjects/qdusedesignspaceobject.cpp b/src/duse/qobjects/qdusedesignspaceobject.cpp index 47990892..0eaa867c 100644 --- a/src/duse/qobjects/qdusedesignspaceobject.cpp +++ b/src/duse/qobjects/qdusedesignspaceobject.cpp @@ -61,6 +61,11 @@ QString QDuseDesignSpaceObject::name() const return qmodelingelementproperty_cast<QDuseDesignSpace *>(this)->name(); } +QString QDuseDesignSpaceObject::requiredProfile() const +{ + return qmodelingelementproperty_cast<QDuseDesignSpace *>(this)->requiredProfile(); +} + const QList<QObject *> QDuseDesignSpaceObject::designDimensions() const { QList<QObject *> list; @@ -85,6 +90,12 @@ void QDuseDesignSpaceObject::setName(QString name) emit nameChanged(this->name()); } +void QDuseDesignSpaceObject::setRequiredProfile(QString requiredProfile) +{ + qmodelingelementproperty_cast<QDuseDesignSpace *>(this)->setRequiredProfile(requiredProfile); + emit requiredProfileChanged(this->requiredProfile()); +} + void QDuseDesignSpaceObject::addDesignDimension(QObject *designDimension) { qmodelingelementproperty_cast<QDuseDesignSpace *>(this)->addDesignDimension(qmodelingelementproperty_cast<QDuseDesignDimension *>(designDimension)); @@ -120,6 +131,7 @@ void QDuseDesignSpaceObject::setGroupProperties() d->propertyGroups << QStringLiteral("QDuseDesignSpace"); d->groupProperties.insert(QStringLiteral("QDuseDesignSpace"), new QMetaProperty(metaObject->property(metaObject->indexOfProperty("name")))); + d->groupProperties.insert(QStringLiteral("QDuseDesignSpace"), new QMetaProperty(metaObject->property(metaObject->indexOfProperty("requiredProfile")))); d->groupProperties.insert(QStringLiteral("QDuseDesignSpace"), new QMetaProperty(metaObject->property(metaObject->indexOfProperty("designDimensions")))); d->groupProperties.insert(QStringLiteral("QDuseDesignSpace"), new QMetaProperty(metaObject->property(metaObject->indexOfProperty("qualityMetrics")))); } @@ -136,6 +148,16 @@ void QDuseDesignSpaceObject::setPropertyData() Q_DECLARE_METAPROPERTY_INFO(QDuseDesignSpace, name, SubsettedPropertiesRole, QStringLiteral("")); Q_DECLARE_METAPROPERTY_INFO(QDuseDesignSpace, name, OppositeEndRole, QStringLiteral("")); + Q_DECLARE_METAPROPERTY_INFO(QDuseDesignSpace, requiredProfile, AggregationRole, QStringLiteral("none")); + Q_DECLARE_METAPROPERTY_INFO(QDuseDesignSpace, requiredProfile, PropertyClassRole, QStringLiteral("QDuseDesignSpace")); + Q_DECLARE_METAPROPERTY_INFO(QDuseDesignSpace, requiredProfile, PropertyTypeRole, QStringLiteral("QString")); + Q_DECLARE_METAPROPERTY_INFO(QDuseDesignSpace, requiredProfile, IsDerivedRole, false); + Q_DECLARE_METAPROPERTY_INFO(QDuseDesignSpace, requiredProfile, IsDerivedUnionRole, false); + Q_DECLARE_METAPROPERTY_INFO(QDuseDesignSpace, requiredProfile, DocumentationRole, QStringLiteral("The profile required to be applied in models manipulated by the design space.")); + Q_DECLARE_METAPROPERTY_INFO(QDuseDesignSpace, requiredProfile, RedefinedPropertiesRole, QStringLiteral("")); + Q_DECLARE_METAPROPERTY_INFO(QDuseDesignSpace, requiredProfile, SubsettedPropertiesRole, QStringLiteral("")); + Q_DECLARE_METAPROPERTY_INFO(QDuseDesignSpace, requiredProfile, OppositeEndRole, QStringLiteral("")); + Q_DECLARE_METAPROPERTY_INFO(QDuseDesignSpace, designDimensions, AggregationRole, QStringLiteral("composite")); Q_DECLARE_METAPROPERTY_INFO(QDuseDesignSpace, designDimensions, PropertyClassRole, QStringLiteral("QDuseDesignSpace")); Q_DECLARE_METAPROPERTY_INFO(QDuseDesignSpace, designDimensions, PropertyTypeRole, QStringLiteral("QList<QDuseDesignDimension *>")); diff --git a/src/duse/qobjects/qdusedesignspaceobject_p.h b/src/duse/qobjects/qdusedesignspaceobject_p.h index d5ef86e3..ebafc52a 100644 --- a/src/duse/qobjects/qdusedesignspaceobject_p.h +++ b/src/duse/qobjects/qdusedesignspaceobject_p.h @@ -61,6 +61,7 @@ class Q_DUSE_EXPORT QDuseDesignSpaceObject : public QModelingObject // Properties [DesignSpace] Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + Q_PROPERTY(QString requiredProfile READ requiredProfile WRITE setRequiredProfile NOTIFY requiredProfileChanged) Q_PROPERTY(QList<QObject *> designDimensions READ designDimensions NOTIFY designDimensionsChanged) Q_PROPERTY(QSet<QObject *> qualityMetrics READ qualityMetrics NOTIFY qualityMetricsChanged) @@ -69,6 +70,7 @@ public: // Owned attributes [DesignSpace] Q_INVOKABLE QString name() const; + Q_INVOKABLE QString requiredProfile() const; Q_INVOKABLE const QList<QObject *> designDimensions() const; Q_INVOKABLE const QSet<QObject *> qualityMetrics() const; @@ -76,6 +78,7 @@ public Q_SLOTS: // Slots for owned attributes [DesignSpace] void setName(QString name); + void setRequiredProfile(QString requiredProfile); void addDesignDimension(QObject *designDimension); void removeDesignDimension(QObject *designDimension); void addQualityMetric(QObject *qualityMetric); @@ -85,6 +88,7 @@ Q_SIGNALS: // Signals for owned attributes [DesignSpace] void nameChanged(QString name); + void requiredProfileChanged(QString requiredProfile); void designDimensionsChanged(QList<QObject *> designDimensions); void qualityMetricsChanged(QSet<QObject *> qualityMetrics); |