summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/uml/duse-mt/src/app/SADuse.xmi2
-rw-r--r--examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.cpp2
-rw-r--r--scripts/normative-xmi/Duse.xmi6
-rw-r--r--src/duse/qdusedesignspace.cpp20
-rw-r--r--src/duse/qdusedesignspace.h3
-rw-r--r--src/duse/qobjects/qdusedesignspaceobject.cpp22
-rw-r--r--src/duse/qobjects/qdusedesignspaceobject_p.h4
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);