umbrello 2.32.2
Umbrello UML Modeller is a Unified Modelling Language (UML) diagram program based on KDE Technology
umlobject.h
Go to the documentation of this file.
1/*
2 SPDX-License-Identifier: GPL-2.0-or-later
3 SPDX-FileCopyrightText: 2002-2020 Umbrello UML Modeller Authors <umbrello-devel@kde.org>
4*/
5
6#ifndef UMLOBJECT_H
7#define UMLOBJECT_H
8
9#include "basictypes.h"
10#include "icon_utils.h"
11#include "umlpackagelist.h"
12
13//qt includes
14#include <QDomDocument>
15#include <QDomElement>
16#include <QObject>
17#include <QPointer>
18#include <QString>
19#include <QXmlStreamWriter>
20
21class UMLActor;
22class UMLArtifact;
23class UMLAssociation;
24class UMLAttribute;
25class UMLCanvasObject;
26class UMLCategory;
28class UMLClassifier;
31class UMLComponent;
32class UMLDatatype;
33class UMLEntity;
36class UMLEnum;
37class UMLEnumLiteral;
38class UMLFolder;
40class UMLInstance;
42class UMLNode;
43class UMLOperation;
44class UMLPackage;
45class UMLPort;
46class UMLRole;
47class UMLStereotype;
48class UMLTemplate;
50class UMLUseCase;
52
69class UMLObject : public QObject
70{
71 Q_OBJECT
72 Q_ENUMS(ObjectType)
73
74public:
76 {
108 };
109
110 static QString toString(ObjectType ot);
111 static QString toI18nString(ObjectType t);
113
114 explicit UMLObject(const UMLObject& other);
115 explicit UMLObject(UMLObject* parent, const QString& name, Uml::ID::Type id = Uml::ID::None);
116 explicit UMLObject(UMLObject* parent);
117 explicit UMLObject(const QString& name = QString(), Uml::ID::Type id = Uml::ID::None);
118 virtual ~UMLObject();
119
120 bool operator==(const UMLObject & rhs) const;
121
122 virtual void copyInto(UMLObject *lhs) const;
123
124 virtual UMLObject* clone() const;
125
126 virtual void setBaseType(ObjectType ot);
127 ObjectType baseType() const;
128 QLatin1String baseTypeStr() const;
129
130 virtual void setID(Uml::ID::Type NewID);
131 virtual Uml::ID::Type id() const;
132
133 QString doc() const;
134 bool hasDoc() const;
135 void setDoc(const QString &d);
136
140
141 void setStereotype(const QString &_name);
142 void setStereotypeCmd(const QString &_name);
143 QString stereotype(bool includeAdornments = false) const;
144
145 void setUMLStereotype(UMLStereotype *stereo);
147
148 QStringList& tags();
149
150 QString package(const QString& separator = QString(),
151 bool includeRoot = false);
152
153 UMLPackageList packages(bool includeRoot = false) const;
154
155 bool setUMLPackage(UMLPackage* pPkg);
156 UMLPackage* umlPackage() const;
157
158 void setUMLParent(UMLObject* parent);
159 UMLObject* umlParent() const;
160
161 virtual void setName(const QString &strName);
162 virtual void setNameCmd(const QString &strName) ;
163 QString name() const;
164
165 virtual QString fullyQualifiedName(const QString& separator = QString(),
166 bool includeRoot = false) const;
167
168 void setAbstract(bool bAbstract);
169 bool isAbstract() const;
170
171 virtual bool showPropertiesDialog(QWidget* parent = 0);
172
173 virtual bool resolveRef();
174
175 virtual void saveToXMI1(QXmlStreamWriter& writer);
176 virtual bool loadFromXMI1(QDomElement & element);
177
178 bool loadStereotype(QDomElement & element);
179
180 void setStatic(bool bStatic);
181 bool isStatic() const;
182
183 virtual bool acceptAssociationType(Uml::AssociationType::Enum); //:TODO: check if this is really needed here
184
185 void setSecondaryId(const QString& id);
186 QString secondaryId() const;
187
188 void setSecondaryFallback(const QString& id);
189 QString secondaryFallback() const;
190
191 void save1(const QString& tag, QXmlStreamWriter& writer);
192
193 friend QDebug operator<< (QDebug out, const UMLObject& obj);
194
195 bool isUMLActor() { return baseType() == ot_Actor; }
196 bool isUMLArtifact() { return baseType() == ot_Artifact; }
198 bool isUMLAttribute() { return baseType() == ot_Attribute; }
199 //bool isUMLCanvasObject() { return baseType() == ot_CanvasObject; }
200 bool isUMLCategory() { return baseType() == ot_Category; }
202 bool isUMLClassifier() { return baseType() == ot_Class; }
203 bool isUMLComponent() { return baseType() == ot_Component; }
204 bool isUMLDatatype() { return baseType() == ot_Datatype; }
205 bool isUMLEntity() { return baseType() == ot_Entity; }
208 bool isUMLEnum() { return baseType() == ot_Enum; }
210 bool isUMLFolder() { return baseType() == ot_Folder; }
212 bool isUMLInstance() { return baseType() == ot_Instance; }
214 bool isUMLNode() { return baseType() == ot_Node; }
215 bool isUMLObject() { return baseType() == ot_UMLObject; }
216 bool isUMLOperation() { return baseType() == ot_Operation; }
217 bool isUMLPackage() { return baseType() == ot_Package; }
218 bool isUMLPort() { return baseType() == ot_Port; }
219 bool isUMLRole() { return baseType() == ot_Role; }
220 bool isUMLStereotype() { return baseType() == ot_Stereotype; }
221 bool isUMLTemplate() { return baseType() == ot_Template; }
223 bool isUMLUseCase() { return baseType() == ot_UseCase; }
224
256
257public slots:
258 void emitModified();
259
260signals:
261 void modified();
262
263protected:
264 void init();
265
267
268 void save1end(QXmlStreamWriter& writer);
269
270 virtual bool load1(QDomElement& element);
271
273 QString m_Doc;
274 QPointer<UMLStereotype> m_pStereotype;
275 QString m_name;
282 QPointer<UMLObject> m_pSecondary;
295 QStringList m_TaggedValues;
301 friend class ObjectsModel;
302};
303
304#endif
Definition: objectsmodel.h:16
Information for a non-graphical UML Actor.
Definition: actor.h:23
Non-graphical information for a Artifact.
Definition: artifact.h:23
Sets up association information.
Definition: association.h:29
Sets up attribute information.
Definition: attribute.h:23
Non-graphical information for a UMLCanvasObject.
Definition: umlcanvasobject.h:32
Information for a non-graphical UML Category.
Definition: category.h:22
Sets up Check Constraint information for UMLEntities.
Definition: checkconstraint.h:21
A base class for classifier list items (e.g. attributes)
Definition: classifierlistitem.h:25
holds set of classifiers for recursive loop detection
Definition: classifier.cpp:45
Information for a non-graphical Concept/Class.
Definition: classifier.h:35
Non-graphical information for a Component.
Definition: component.h:23
Non-graphical information for a Datatype.
Definition: datatype.h:21
Sets up entityattribute information.
Definition: entityattribute.h:21
Sets up entity constraint information.
Definition: entityconstraint.h:22
Non-graphical Information for an Entity.
Definition: entity.h:30
Sets up attribute information.
Definition: enumliteral.h:21
Non-graphical Information for an Enum.
Definition: enum.h:24
Non-graphical management of objects and diagrams of a Folder.
Definition: folder.h:30
Sets up Foreign Key entity constraint information.
Definition: foreignkeyconstraint.h:28
Sets up instanceattribute information.
Definition: instanceattribute.h:34
Non-graphical Information for an Instance.
Definition: instance.h:43
Non-graphical information for a Node.
Definition: node.h:22
Definition: umlobjectprivate.h:10
The base class for UML objects.
Definition: umlobject.h:70
Uml::ID::Type m_nId
object's id
Definition: umlobject.h:272
virtual bool acceptAssociationType(Uml::AssociationType::Enum)
Definition: umlobject.cpp:168
UMLInstance * asUMLInstance()
Definition: umlobject.cpp:1399
UMLCheckConstraint * asUMLCheckConstraint()
Definition: umlobject.cpp:1387
QStringList & tags()
Definition: umlobject.cpp:564
virtual bool showPropertiesDialog(QWidget *parent=0)
Definition: umlobject.cpp:140
ObjectType
Definition: umlobject.h:76
@ ot_Interface
Definition: umlobject.h:82
@ ot_Port
Definition: umlobject.h:105
@ ot_Category
Definition: umlobject.h:104
@ ot_Association
Definition: umlobject.h:87
@ ot_UMLObject
Definition: umlobject.h:78
@ ot_Stereotype
Definition: umlobject.h:95
@ ot_Attribute
Definition: umlobject.h:88
@ ot_Enum
Definition: umlobject.h:84
@ ot_Package
Definition: umlobject.h:81
@ ot_Unknown
Definition: umlobject.h:77
@ ot_ForeignKeyConstraint
Definition: umlobject.h:102
@ ot_EnumLiteral
Definition: umlobject.h:90
@ ot_Operation
Definition: umlobject.h:89
@ ot_Actor
Definition: umlobject.h:79
@ ot_Template
Definition: umlobject.h:91
@ ot_EntityConstraint
Definition: umlobject.h:100
@ ot_CheckConstraint
Definition: umlobject.h:103
@ ot_Node
Definition: umlobject.h:94
@ ot_Role
Definition: umlobject.h:96
@ ot_Class
Definition: umlobject.h:85
@ ot_Datatype
Definition: umlobject.h:83
@ ot_SubSystem
no real object type
Definition: umlobject.h:107
@ ot_Instance
Definition: umlobject.h:86
@ ot_Component
Definition: umlobject.h:92
@ ot_Folder
Definition: umlobject.h:99
@ ot_EntityAttribute
Definition: umlobject.h:98
@ ot_UseCase
Definition: umlobject.h:80
@ ot_InstanceAttribute
Definition: umlobject.h:106
@ ot_Artifact
Definition: umlobject.h:93
@ ot_UniqueConstraint
Definition: umlobject.h:101
@ ot_Entity
Definition: umlobject.h:97
bool isUMLUseCase()
Definition: umlobject.h:223
bool isUMLClassifier()
Definition: umlobject.h:202
UMLUseCase * asUMLUseCase()
Definition: umlobject.cpp:1410
UMLEnumLiteral * asUMLEnumLiteral()
Definition: umlobject.cpp:1396
UMLPackage * asUMLPackage()
Definition: umlobject.cpp:1404
virtual Uml::ID::Type id() const
Definition: umlobject.cpp:420
bool isUMLAttribute()
Definition: umlobject.h:198
UMLObject * umlParent() const
Definition: umlobject.cpp:673
UMLClassifierSet * asUMLClassifierSet()
QString m_SecondaryFallback
Definition: umlobject.h:289
UMLComponent * asUMLComponent()
Definition: umlobject.cpp:1390
virtual bool resolveRef()
Definition: umlobject.cpp:741
bool isUMLPort()
Definition: umlobject.h:218
bool isUMLUniqueConstraint()
Definition: umlobject.h:222
bool isUMLCategory()
Definition: umlobject.h:200
virtual void setNameCmd(const QString &strName)
Definition: umlobject.cpp:197
virtual UMLObject * clone() const
Definition: umlobject.cpp:333
UMLStereotype * umlStereotype()
Definition: umlobject.cpp:546
bool isAbstract() const
Definition: umlobject.cpp:343
void save1end(QXmlStreamWriter &writer)
Definition: umlobject.cpp:903
virtual void copyInto(UMLObject *lhs) const
Definition: umlobject.cpp:309
UMLFolder * asUMLFolder()
Definition: umlobject.cpp:1397
void emitModified()
Definition: umlobject.cpp:380
static QString toI18nString(ObjectType t)
Definition: umlobject.cpp:1189
bool isUMLDatatype()
Definition: umlobject.h:204
bool operator==(const UMLObject &rhs) const
Definition: umlobject.cpp:250
bool m_bCreationWasSignalled
auxiliary to maybeSignalObjectCreated()
Definition: umlobject.h:281
bool isUMLFolder()
Definition: umlobject.h:210
friend QDebug operator<<(QDebug out, const UMLObject &obj)
Definition: umlobject.cpp:1347
UMLObjectPrivate * m_d
private data
Definition: umlobject.h:300
void setVisibilityCmd(Uml::Visibility::Enum visibility)
Definition: umlobject.cpp:481
UMLEntityAttribute * asUMLEntityAttribute()
Definition: umlobject.cpp:1393
bool m_bAbstract
state of whether the object is abstract or not
Definition: umlobject.h:278
UMLNode * asUMLNode()
Definition: umlobject.cpp:1401
UMLAssociation * asUMLAssociation()
Definition: umlobject.cpp:1383
UMLActor * asUMLActor()
Definition: umlobject.cpp:1381
bool isUMLPackage()
Definition: umlobject.h:217
UMLUniqueConstraint * asUMLUniqueConstraint()
Definition: umlobject.cpp:1409
virtual void setID(Uml::ID::Type NewID)
Definition: umlobject.cpp:178
bool loadStereotype(QDomElement &element)
Definition: umlobject.cpp:951
static Icon_Utils::IconType toIcon(ObjectType t)
Definition: umlobject.cpp:1256
QString m_Doc
object's documentation
Definition: umlobject.h:273
virtual bool loadFromXMI1(QDomElement &element)
Definition: umlobject.cpp:992
bool hasDoc() const
Definition: umlobject.cpp:440
virtual void saveToXMI1(QXmlStreamWriter &writer)
Definition: umlobject.cpp:836
void setSecondaryId(const QString &id)
Definition: umlobject.cpp:691
bool isUMLComponent()
Definition: umlobject.h:203
UMLOperation * asUMLOperation()
Definition: umlobject.cpp:1403
UMLPackage * umlPackage() const
Definition: umlobject.cpp:648
void setUMLStereotype(UMLStereotype *stereo)
Definition: umlobject.cpp:496
UMLEntity * asUMLEntity()
Definition: umlobject.cpp:1392
virtual QString fullyQualifiedName(const QString &separator=QString(), bool includeRoot=false) const
Definition: umlobject.cpp:222
UMLObject(const UMLObject &other)
Definition: umlobject.cpp:43
QString stereotype(bool includeAdornments=false) const
Definition: umlobject.cpp:554
bool isUMLEnumLiteral()
Definition: umlobject.h:209
bool isUMLNode()
Definition: umlobject.h:214
void setStereotypeCmd(const QString &_name)
Definition: umlobject.cpp:530
bool isUMLEnum()
Definition: umlobject.h:208
bool isUMLAssociation()
Definition: umlobject.h:197
virtual ~UMLObject()
Definition: umlobject.cpp:105
UMLDatatype * asUMLDatatype()
Definition: umlobject.cpp:1391
bool isStatic() const
Definition: umlobject.cpp:361
void modified()
Definition: moc_umlobject.cpp:217
QString doc() const
Definition: umlobject.cpp:430
bool setUMLPackage(UMLPackage *pPkg)
Definition: umlobject.cpp:618
void setSecondaryFallback(const QString &id)
Definition: umlobject.cpp:709
QString secondaryId() const
Definition: umlobject.cpp:681
bool isUMLObject()
Definition: umlobject.h:215
void setDoc(const QString &d)
Definition: umlobject.cpp:450
void setStereotype(const QString &_name)
Definition: umlobject.cpp:523
UMLRole * asUMLRole()
Definition: umlobject.cpp:1406
virtual void setBaseType(ObjectType ot)
Definition: umlobject.cpp:410
UMLTemplate * asUMLTemplate()
Definition: umlobject.cpp:1408
void setAbstract(bool bAbstract)
Definition: umlobject.cpp:351
QPointer< UMLObject > m_pSecondary
Definition: umlobject.h:282
QStringList m_TaggedValues
Definition: umlobject.h:295
virtual void setName(const QString &strName)
Definition: umlobject.cpp:187
void init()
Definition: umlobject.cpp:121
UMLCategory * asUMLCategory()
Definition: umlobject.cpp:1386
bool m_bInPaste
caller sets this true when in paste operation
Definition: umlobject.h:280
Uml::Visibility::Enum visibility() const
Definition: umlobject.cpp:461
QPointer< UMLStereotype > m_pStereotype
stereotype of the object if applicable
Definition: umlobject.h:274
QString name() const
Definition: umlobject.cpp:206
UMLInstanceAttribute * asUMLInstanceAttribute()
Definition: umlobject.cpp:1400
ObjectType baseType() const
Definition: umlobject.cpp:392
UMLObject * asUMLObject()
Definition: umlobject.cpp:1402
QString m_SecondaryId
Definition: umlobject.h:286
bool isUMLRole()
Definition: umlobject.h:219
UMLStereotype * asUMLStereotype()
Definition: umlobject.cpp:1407
void maybeSignalObjectCreated()
Definition: umlobject.cpp:718
bool isUMLInstance()
Definition: umlobject.h:212
QLatin1String baseTypeStr() const
Definition: umlobject.cpp:400
UMLPort * asUMLPort()
Definition: umlobject.cpp:1405
QString package(const QString &separator=QString(), bool includeRoot=false)
Definition: umlobject.cpp:580
QString m_name
objects name
Definition: umlobject.h:275
UMLAttribute * asUMLAttribute()
Definition: umlobject.cpp:1384
UMLEntityConstraint * asUMLEntityConstraint()
Definition: umlobject.cpp:1394
bool isUMLEntityAttribute()
Definition: umlobject.h:206
bool isUMLTemplate()
Definition: umlobject.h:221
UMLCanvasObject * asUMLCanvasObject()
Definition: umlobject.cpp:1385
void setStatic(bool bStatic)
Definition: umlobject.cpp:369
void setUMLParent(UMLObject *parent)
Definition: umlobject.cpp:660
UMLClassifier * asUMLClassifier()
Definition: umlobject.cpp:1388
UMLEnum * asUMLEnum()
Definition: umlobject.cpp:1395
bool isUMLCheckConstraint()
Definition: umlobject.h:201
void setVisibility(Uml::Visibility::Enum visibility)
Definition: umlobject.cpp:471
UMLForeignKeyConstraint * asUMLForeignKeyConstraint()
Definition: umlobject.cpp:1398
bool isUMLInstanceAttribute()
Definition: umlobject.h:213
UMLPackageList packages(bool includeRoot=false) const
Definition: umlobject.cpp:600
bool isUMLEntity()
Definition: umlobject.h:205
Uml::Visibility::Enum m_visibility
objects visibility
Definition: umlobject.h:277
virtual bool load1(QDomElement &element)
Definition: umlobject.cpp:938
bool m_bStatic
flag for instance scope
Definition: umlobject.h:279
bool isUMLStereotype()
Definition: umlobject.h:220
static QString toString(ObjectType ot)
Definition: umlobject.cpp:1179
QString secondaryFallback() const
Definition: umlobject.cpp:700
UMLArtifact * asUMLArtifact()
Definition: umlobject.cpp:1382
ObjectType m_BaseType
objects type
Definition: umlobject.h:276
bool isUMLActor()
Definition: umlobject.h:195
bool isUMLForeignKeyConstraint()
Definition: umlobject.h:211
UMLClassifierListItem * asUMLClassifierListItem()
Definition: umlobject.cpp:1389
void save1(const QString &tag, QXmlStreamWriter &writer)
Definition: umlobject.cpp:849
bool isUMLEntityConstraint()
Definition: umlobject.h:207
bool isUMLOperation()
Definition: umlobject.h:216
bool isUMLArtifact()
Definition: umlobject.h:196
Definition: operation.h:20
Non-graphical information for a Package.
Definition: package.h:28
Non-graphical information for a Port.
Definition: port.h:22
Definition: umlrole.h:20
Sets up stereotype information.
Definition: stereotype.h:36
Sets up template information.
Definition: template.h:22
Sets up Unique entity constraint information.
Definition: uniqueconstraint.h:24
Information for a non-graphical UML UseCase.
Definition: usecase.h:20
IconType
Definition: icon_utils.h:33
Enum
Definition: basictypes.h:92
const Type None
special value for uninitialized ID
Definition: basictypes.h:373
std::string Type
Definition: basictypes.h:371
Enum
Definition: basictypes.h:45
Definition: visibility.py:1
QList< UMLPackage * > UMLPackageList
Definition: umlpackagelist.h:11