summaryrefslogtreecommitdiffstats
path: root/examples/uml/nested-packages/main.cpp
blob: 293c37303de66201a942e0534beb7ec90cb31b3d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include <QtWrappedObjects>

#include <QtUml/QModel>
#include <QtUml/QPackage>
#include <QtUml/QPrimitiveType>
#include <QtUml/QEnumeration>
#include <QtUml/QEnumerationLiteral>
#include <QtUml/QClass>
#include <QtUml/QComponent>
#include <QtUml/QComponentRealization>

#include <QtCore/QDebug>
#include <QtCore/QScopedPointer>
#include <QtCore/QMetaProperty>

using namespace QtUml;
using namespace QtWrappedObjects;

void checkProperties(QObject *object)
{
    const QMetaObject *metaObject = object->metaObject();
    int propertyCount = metaObject->propertyCount();
    for (int i = 0; i < propertyCount; ++i) {
        qDebug() << "Property" << metaObject->property(i).name();
    }
}

int main ()
{
    QWrappedObjectPointer<QModel> model = new QModel;
    model->setName("MyModel");

    QWrappedObjectPointer<QPackage> package = new QPackage;
    package->setName("Package1");

    QWrappedObjectPointer<QPrimitiveType> primitiveType = new QPrimitiveType;
    primitiveType->setName("String");

    QWrappedObjectPointer<QEnumeration> enumeration = new QEnumeration;
    enumeration->setName("DirectionKind");
    QWrappedObjectPointer<QEnumerationLiteral> directionIn = new QEnumerationLiteral;
    directionIn->setName("DirectionIn");
    enumeration->addOwnedLiteral(directionIn);

    QWrappedObjectPointer<QClass> class_ = new QClass;
    class_->setName("Student");
    class_->setAbstract(false);

    package->addOwnedType(enumeration);
    package->addOwnedType(class_);

    //model->addNestedPackage(package);
    model->addPackagedElement(package);
    model->addOwnedType(primitiveType);

    qDebug() << "model->ownedElements().size():" << model->ownedElements().size();
    qDebug() << "model->members().size():" << model->members().size();
    qDebug() << "model->ownedMembers().size():" << model->ownedMembers().size();
    qDebug() << "model->ownedRules().size():" << model->ownedRules().size();
    qDebug() << "model->packagedElements().size():" << model->packagedElements().size();
    qDebug();
    qDebug() << "package->qualifiedName():" << package->qualifiedName();
    qDebug() << "package->nestingPackage() ?" << ((package->nestingPackage() == 0) ? "Nao":"Sim");
    qDebug() << "class_->qualifiedName():" << class_->qualifiedName();
    qDebug() << "enumeration->qualifiedName():" << enumeration->qualifiedName();
    qDebug() << "primitiveType->qualifiedName():" << primitiveType->qualifiedName();
    qDebug() << "directionIn->qualifiedName():" << directionIn->qualifiedName();

    //model->removeNestedPackage(package);
    model->removePackagedElement(package);
    //model->addNestedPackage(package);
    //model->addPackagedElement(package);
    qDebug() << "REMOVED";

    qDebug() << "model->ownedElements().size():" << model->ownedElements().size();
    qDebug() << "model->members().size():" << model->members().size();
    qDebug() << "model->ownedMembers().size():" << model->ownedMembers().size();
    qDebug() << "model->ownedRules().size():" << model->ownedRules().size();
    qDebug() << "model->packagedElements().size():" << model->packagedElements().size();
    qDebug();
    qDebug() << "package->qualifiedName():" << package->qualifiedName();
    qDebug() << "package->nestingPackage() ?" << ((package->nestingPackage() == 0) ? "Nao":"Sim");
    qDebug() << "class_->qualifiedName():" << class_->qualifiedName();
    qDebug() << "enumeration->qualifiedName():" << enumeration->qualifiedName();
    qDebug() << "primitiveType->qualifiedName():" << primitiveType->qualifiedName();
    qDebug() << "directionIn->qualifiedName():" << directionIn->qualifiedName();

    qDebug() << "model->nestedPackages().size():" << model->nestedPackages().size();

    qDebug() << "model->ownedStereotypes().size():" << model->ownedStereotypes().size();

    qDebug() << "model->ownedTypes().size():" << model->ownedTypes().size();

    checkProperties(model);

    QWrappedObjectPointer<QComponent> c1 = new QComponent;
    QWrappedObjectPointer<QComponent> c2 = new QComponent;
    QWrappedObjectPointer<QComponentRealization> cr = new QComponentRealization;
    cr->setAbstraction(c1);
    qDebug();
    qDebug() << "cr->suppliers().size():" << cr->suppliers().size();
    qDebug() << "c1->realizations().size():" << c1->realizations().size();
    qDebug() << "c2->realizations().size():" << c2->realizations().size();
    cr->setAbstraction(c2);
    qDebug();
    qDebug() << "cr->suppliers().size():" << cr->suppliers().size();
    qDebug() << "c1->realizations().size():" << c1->realizations().size();
    qDebug() << "c2->realizations().size():" << c2->realizations().size();
    cr->setAbstraction(0);
    qDebug();
    qDebug() << "cr->suppliers().size():" << cr->suppliers().size();
    qDebug() << "c1->realizations().size():" << c1->realizations().size();
    qDebug() << "c2->realizations().size():" << c2->realizations().size();
    cr->setAbstraction(c1);
    package->addOwnedType(c1);
    package->addOwnedType(c2);

    delete model.data();
    delete package.data();

    // All containers created by nestedPackages(), ownedStereotypes(), and ownedTypes()
    // are destroyed by QScopedPointer
}