summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSandro S. Andrade <sandroandrade@kde.org>2012-10-25 22:04:36 +0000
committerSandro S. Andrade <sandroandrade@kde.org>2012-10-26 00:06:42 +0200
commit9f0b95a31ba17ff3ab998407ea8c8ab622ec005c (patch)
tree299d4263f476f2bc9e3ed88f4063a4fbd5162859
parent084d1f45b37ff0a4dcd011489096654c4812293a (diff)
Add initial example for profile and stereotypes handling
Change-Id: I4b72cb8f579fec5e35c80709c5e1153e80edbf80 Reviewed-by: Sandro S. Andrade <sandroandrade@kde.org>
-rw-r--r--examples/uml/nested-packages/main.cpp (renamed from examples/uml/main.cpp)0
-rw-r--r--examples/uml/nested-packages/nested-packages.pro9
-rw-r--r--examples/uml/profiles/main.cpp87
-rw-r--r--examples/uml/profiles/profiles.pro (renamed from examples/uml/uml.pro)2
4 files changed, 97 insertions, 1 deletions
diff --git a/examples/uml/main.cpp b/examples/uml/nested-packages/main.cpp
index 238935ed..238935ed 100644
--- a/examples/uml/main.cpp
+++ b/examples/uml/nested-packages/main.cpp
diff --git a/examples/uml/nested-packages/nested-packages.pro b/examples/uml/nested-packages/nested-packages.pro
new file mode 100644
index 00000000..558d1579
--- /dev/null
+++ b/examples/uml/nested-packages/nested-packages.pro
@@ -0,0 +1,9 @@
+TEMPLATE = app
+TARGET = nested-packages
+DEPENDPATH += .
+INCLUDEPATH += .
+
+QT += uml
+
+# Input
+SOURCES += main.cpp
diff --git a/examples/uml/profiles/main.cpp b/examples/uml/profiles/main.cpp
new file mode 100644
index 00000000..40b1e24f
--- /dev/null
+++ b/examples/uml/profiles/main.cpp
@@ -0,0 +1,87 @@
+#include <QtUml/QPrimitiveType>
+#include <QtUml/QProfile>
+#include <QtUml/QProperty>
+#include <QtUml/QStereotype>
+#include <QtUml/QModel>
+#include <QtUml/QClass>
+#include <QtUml/QExtension>
+#include <QtUml/QExtensionEnd>
+#include <QtUml/QElementImport>
+
+#include <QtCore/QDebug>
+
+typedef const QSet<QtUml::QStereotype *> QStereotypeList;
+typedef const QSet<QtUml::QPackageableElement *> QPackageableElementList;
+
+int main ()
+{
+ // Create a "dymmy" UML meta-model
+ QtUml::QModel *umlModel = new QtUml::QModel;
+ umlModel->setName("UML Meta-Model");
+ QtUml::QClass *class_ = new QtUml::QClass;
+ class_->setName("Class");
+ umlModel->addOwnedType(class_);
+
+ // Create a profile
+ QtUml::QProfile *profile = new QtUml::QProfile;
+ profile->setName("MyProfile");
+
+ // Add a stereotype to profile
+ QtUml::QStereotype *stereotype = new QtUml::QStereotype;
+ stereotype->setName("MyStereotype");
+ profile->addPackagedElement(stereotype);
+
+ // Show profile's owned stereotypes
+ QScopedPointer<QStereotypeList> ownedStereotypes (profile->ownedStereotypes());
+ qDebug() << "Owned stereotypes:";
+ foreach (QtUml::QStereotype *ownedStereotype, *ownedStereotypes)
+ qDebug() << " " << ownedStereotype->name();
+
+ // Adding attribute to stereotype
+ QtUml::QPrimitiveType *booleanPrimitiveType = new QtUml::QPrimitiveType;
+ booleanPrimitiveType->setName("boolean");
+ QtUml::QProperty *property = new QtUml::QProperty;
+ property->setName("isTransient");
+ property->setType(booleanPrimitiveType);
+ stereotype->addOwnedAttribute(property);
+
+ // Create UML meta-model element import
+ QtUml::QElementImport *elementImport = new QtUml::QElementImport;
+ elementImport->setImportedElement(umlModel->packagedElements()->toList().first());
+
+ // Add meta-class reference to profile
+ profile->addMetaclassReference(elementImport);
+
+ // Show profile's data
+ qDebug() << "Profile members:";
+ foreach (QtUml::QNamedElement *namedElement, *profile->members())
+ qDebug() << " " << namedElement->name();
+ qDebug() << "Profile owned members:";
+ foreach (QtUml::QNamedElement *namedElement, *profile->ownedMembers())
+ qDebug() << " " << namedElement->name();
+ QScopedPointer<QPackageableElementList> importedMembers (profile->importedMembers());
+ qDebug() << "Profile imported members:";
+ foreach (QtUml::QPackageableElement *importedMember, *importedMembers)
+ qDebug() << " " << importedMember->name();
+
+ // Create extension
+ QtUml::QExtension *extension = new QtUml::QExtension;
+ extension->setName("class_stereotype");
+
+ QtUml::QProperty *stereotypeProperty = new QtUml::QProperty;
+ stereotypeProperty->setName("base_class");
+ stereotypeProperty->setType(class_);
+
+ QtUml::QExtensionEnd *extensionEnd = new QtUml::QExtensionEnd;
+ extensionEnd->setName("extension_stereotype");
+ extensionEnd->setType(stereotype);
+
+ extension->addMemberEnd(stereotypeProperty);
+ extension->addMemberEnd(extensionEnd);
+ extension->setOwnedEnd(extensionEnd);
+
+ stereotype->addOwnedAttribute(stereotypeProperty);
+
+ delete profile; // That will delete all owned elements
+}
+
diff --git a/examples/uml/uml.pro b/examples/uml/profiles/profiles.pro
index 14686465..7db81ae6 100644
--- a/examples/uml/uml.pro
+++ b/examples/uml/profiles/profiles.pro
@@ -1,5 +1,5 @@
TEMPLATE = app
-TARGET = uml
+TARGET = profiles
DEPENDPATH += .
INCLUDEPATH += .