diff options
author | Sandro S. Andrade <sandroandrade@kde.org> | 2012-10-25 22:04:36 +0000 |
---|---|---|
committer | Sandro S. Andrade <sandroandrade@kde.org> | 2012-10-26 00:06:42 +0200 |
commit | 9f0b95a31ba17ff3ab998407ea8c8ab622ec005c (patch) | |
tree | 299d4263f476f2bc9e3ed88f4063a4fbd5162859 | |
parent | 084d1f45b37ff0a4dcd011489096654c4812293a (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.pro | 9 | ||||
-rw-r--r-- | examples/uml/profiles/main.cpp | 87 | ||||
-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 += . |