summaryrefslogtreecommitdiffstats
path: root/examples/uml/profile-definition
diff options
context:
space:
mode:
authorSandro S. Andrade <sandroandrade@kde.org>2013-11-01 17:29:26 -0300
committerSandro S. Andrade <sandroandrade@kde.org>2013-11-01 21:33:29 +0100
commit768419e7f612f76eec0e7c75ff240f13e7d76edc (patch)
treef4e21556fc99a377d0c3b7e0faf1fe770c32d37d /examples/uml/profile-definition
parente65e995d29de725db290fcd8502e38d79a8e9f36 (diff)
Rename 'profile' uml example to 'profile-definition'
Change-Id: Iab15412754dfc6bfcde1113fdf9c5472e80246fd Reviewed-by: Sandro S. Andrade <sandroandrade@kde.org>
Diffstat (limited to 'examples/uml/profile-definition')
-rw-r--r--examples/uml/profile-definition/main.cpp128
-rw-r--r--examples/uml/profile-definition/profile-definition.pro10
2 files changed, 138 insertions, 0 deletions
diff --git a/examples/uml/profile-definition/main.cpp b/examples/uml/profile-definition/main.cpp
new file mode 100644
index 00000000..3ef20ca6
--- /dev/null
+++ b/examples/uml/profile-definition/main.cpp
@@ -0,0 +1,128 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+#include <QtUml/QUmlPrimitiveType>
+#include <QtUml/QUmlProfile>
+#include <QtUml/QUmlProperty>
+#include <QtUml/QUmlStereotype>
+#include <QtUml/QUmlModel>
+#include <QtUml/QUmlClass>
+#include <QtUml/QUmlExtension>
+#include <QtUml/QUmlExtensionEnd>
+#include <QtUml/QUmlElementImport>
+
+#include <QtCore/QDebug>
+
+typedef const QSet<QUmlStereotype *> QUmlStereotypeList;
+typedef const QSet<QUmlPackageableElement *> QUmlPackageableElementList;
+
+int main ()
+{
+ // Create a "dymmy" UML meta-model
+ QUmlModel *umlModel = new QUmlModel;
+ umlModel->setName("UML Meta-Model");
+ QUmlClass *class_ = new QUmlClass;
+ class_->setName("Class");
+ umlModel->addOwnedType(class_);
+
+ // Create a profile
+ QUmlProfile *profile = new QUmlProfile;
+ profile->setName("MyProfile");
+
+ // Add a stereotype to profile
+ QUmlStereotype *stereotype = new QUmlStereotype;
+ stereotype->setName("MyStereotype");
+ profile->addPackagedElement(stereotype);
+
+ // Show profile's owned stereotypes
+ qDebug() << "Owned stereotypes:";
+ foreach (QUmlStereotype *ownedStereotype, profile->ownedStereotypes())
+ qDebug() << " " << ownedStereotype->name();
+
+ // Adding attribute to stereotype
+ QUmlPrimitiveType *booleanPrimitiveType = new QUmlPrimitiveType;
+ booleanPrimitiveType->setName("boolean");
+ QUmlProperty *property = new QUmlProperty;
+ property->setName("isTransient");
+ property->setType(booleanPrimitiveType);
+ stereotype->addOwnedAttribute(property);
+
+ // Create UML meta-model element import
+ QUmlElementImport *elementImport = new QUmlElementImport;
+ elementImport->setImportedElement(umlModel->packagedElements().toList().first());
+
+ // Add meta-class reference to profile
+ profile->addMetaclassReference(elementImport);
+ profile->addOwnedType(booleanPrimitiveType);
+
+ // Show profile's data
+ qDebug() << "Profile members:";
+ foreach (QUmlNamedElement *namedElement, profile->members())
+ qDebug() << " " << namedElement->name();
+ qDebug() << "Profile owned members:";
+ foreach (QUmlNamedElement *namedElement, profile->ownedMembers())
+ qDebug() << " " << namedElement->name();
+ qDebug() << "Profile imported members:";
+ foreach (QUmlPackageableElement *importedMember, profile->importedMembers())
+ qDebug() << " " << importedMember->name();
+
+ // Create extension
+ QUmlExtension *extension = new QUmlExtension;
+ extension->setName("class_stereotype");
+
+ QUmlProperty *stereotypeProperty = new QUmlProperty;
+ stereotypeProperty->setName("base_class");
+ stereotypeProperty->setType(class_);
+
+ QUmlExtensionEnd *extensionEnd = new QUmlExtensionEnd;
+ 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
+ delete umlModel; // That will delete all owned elements
+ delete extension; // That will delete all owned elements
+}
+
diff --git a/examples/uml/profile-definition/profile-definition.pro b/examples/uml/profile-definition/profile-definition.pro
new file mode 100644
index 00000000..e69ced6a
--- /dev/null
+++ b/examples/uml/profile-definition/profile-definition.pro
@@ -0,0 +1,10 @@
+TEMPLATE = app
+TARGET = profile-definition
+DEPENDPATH += .
+INCLUDEPATH += .
+
+QT += uml
+QT -= gui
+
+# Input
+SOURCES += main.cpp