umbrello 2.39.0
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-2022 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) const;
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 = nullptr);
172
173 virtual bool resolveRef();
174
175 virtual void saveToXMI(QXmlStreamWriter& writer);
176 virtual bool loadFromXMI(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) const; //: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(QXmlStreamWriter& writer, const QString& type, const QString& tag = QString());
192
193 friend QDebug operator<< (QDebug out, const UMLObject& obj);
194
195 bool isUMLActor() const { return baseType() == ot_Actor; }
196 bool isUMLArtifact() const { return baseType() == ot_Artifact; }
197 bool isUMLAssociation() const { return baseType() == ot_Association; }
198 bool isUMLAttribute() const { return baseType() == ot_Attribute; }
199 //bool isUMLCanvasObject() const { return baseType() == ot_CanvasObject; }
200 bool isUMLCategory() const { return baseType() == ot_Category; }
202 bool isUMLClassifier() const { return baseType() == ot_Class; }
203 bool isUMLComponent() const { return baseType() == ot_Component; }
204 bool isUMLDatatype() const { return baseType() == ot_Datatype; }
205 bool isUMLEntity() const { return baseType() == ot_Entity; }
208 bool isUMLEnum() const { return baseType() == ot_Enum; }
209 bool isUMLEnumLiteral() const { return baseType() == ot_EnumLiteral; }
210 bool isUMLFolder() const { return baseType() == ot_Folder; }
212 bool isUMLInstance() const { return baseType() == ot_Instance; }
214 bool isUMLNode() const { return baseType() == ot_Node; }
215 bool isUMLObject() const { return baseType() == ot_UMLObject; }
216 bool isUMLOperation() const { return baseType() == ot_Operation; }
217 bool isUMLPackage() const { return baseType() == ot_Package; }
218 bool isUMLPort() const { return baseType() == ot_Port; }
219 bool isUMLRole() const { return baseType() == ot_Role; }
220 bool isUMLStereotype() const { return baseType() == ot_Stereotype; }
221 bool isUMLTemplate() const { return baseType() == ot_Template; }
223 bool isUMLUseCase() const { return baseType() == ot_UseCase; }
224
240 UMLEnum * asUMLEnum();
246 UMLNode * asUMLNode();
250 UMLPort * asUMLPort();
251 UMLRole * asUMLRole();
256
257 const UMLActor * asUMLActor() const;
258 const UMLArtifact * asUMLArtifact() const;
259 const UMLAssociation * asUMLAssociation() const;
260 const UMLAttribute * asUMLAttribute() const;
261 const UMLCanvasObject * asUMLCanvasObject() const;
262 const UMLCategory * asUMLCategory() const;
264 const UMLClassifier * asUMLClassifier() const;
267 const UMLComponent * asUMLComponent() const;
268 const UMLDatatype * asUMLDatatype() const;
269 const UMLEntity * asUMLEntity() const;
272 const UMLEnum * asUMLEnum() const;
273 const UMLEnumLiteral * asUMLEnumLiteral() const;
274 const UMLFolder * asUMLFolder() const;
276 const UMLInstance * asUMLInstance() const;
278 const UMLNode * asUMLNode() const;
279 const UMLObject * asUMLObject() const;
280 const UMLOperation * asUMLOperation() const;
281 const UMLPackage * asUMLPackage() const;
282 const UMLPort * asUMLPort() const;
283 const UMLRole * asUMLRole() const;
284 const UMLStereotype * asUMLStereotype() const;
285 const UMLTemplate * asUMLTemplate() const;
287 const UMLUseCase * asUMLUseCase() const;
288
289public Q_SLOTS:
290 void emitModified();
291
292Q_SIGNALS:
293 void modified();
294
295protected:
296 void init();
297
299
300 void save1end(QXmlStreamWriter& writer);
301
302 virtual bool load1(QDomElement& element);
303
305 QString m_Doc;
306 QPointer<UMLStereotype> m_pStereotype;
307 QString m_name;
313 QPointer<UMLObject> m_pSecondary;
326 QStringList m_TaggedValues;
332 friend class ObjectsModel;
333};
334
335#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:48
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
bool isUMLEntityAttribute() const
Definition umlobject.h:206
Uml::ID::Type m_nId
object's id
Definition umlobject.h:304
UMLInstance * asUMLInstance()
Definition umlobject.cpp:1433
UMLCheckConstraint * asUMLCheckConstraint()
Definition umlobject.cpp:1421
QStringList & tags()
Definition umlobject.cpp:565
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
UMLUseCase * asUMLUseCase()
Definition umlobject.cpp:1444
UMLEnumLiteral * asUMLEnumLiteral()
Definition umlobject.cpp:1430
virtual bool showPropertiesDialog(QWidget *parent=nullptr)
Definition umlobject.cpp:141
UMLPackage * asUMLPackage()
Definition umlobject.cpp:1438
QString package(const QString &separator=QString(), bool includeRoot=false) const
Definition umlobject.cpp:582
virtual Uml::ID::Type id() const
Definition umlobject.cpp:421
bool isUMLNode() const
Definition umlobject.h:214
bool isUMLPackage() const
Definition umlobject.h:217
bool isUMLComponent() const
Definition umlobject.h:203
UMLObject * umlParent() const
Definition umlobject.cpp:676
UMLClassifierSet * asUMLClassifierSet()
QString m_SecondaryFallback
Definition umlobject.h:320
UMLComponent * asUMLComponent()
Definition umlobject.cpp:1424
virtual bool resolveRef()
Definition umlobject.cpp:744
bool isUMLUseCase() const
Definition umlobject.h:223
virtual bool acceptAssociationType(Uml::AssociationType::Enum) const
Definition umlobject.cpp:169
virtual void setNameCmd(const QString &strName)
Definition umlobject.cpp:198
virtual UMLObject * clone() const
Definition umlobject.cpp:334
bool isAbstract() const
Definition umlobject.cpp:344
void save1end(QXmlStreamWriter &writer)
Definition umlobject.cpp:937
virtual void copyInto(UMLObject *lhs) const
Definition umlobject.cpp:310
UMLFolder * asUMLFolder()
Definition umlobject.cpp:1431
void emitModified()
Definition umlobject.cpp:381
static QString toI18nString(ObjectType t)
Definition umlobject.cpp:1224
bool operator==(const UMLObject &rhs) const
Definition umlobject.cpp:251
bool m_bCreationWasSignalled
auxiliary to maybeSignalObjectCreated()
Definition umlobject.h:312
friend QDebug operator<<(QDebug out, const UMLObject &obj)
Definition umlobject.cpp:1382
UMLObjectPrivate * m_d
private data
Definition umlobject.h:331
bool isUMLEnumLiteral() const
Definition umlobject.h:209
void setVisibilityCmd(Uml::Visibility::Enum visibility)
Definition umlobject.cpp:482
UMLEntityAttribute * asUMLEntityAttribute()
Definition umlobject.cpp:1427
bool m_bAbstract
state of whether the object is abstract or not
Definition umlobject.h:310
UMLNode * asUMLNode()
Definition umlobject.cpp:1435
UMLAssociation * asUMLAssociation()
Definition umlobject.cpp:1417
UMLActor * asUMLActor()
Definition umlobject.cpp:1415
UMLUniqueConstraint * asUMLUniqueConstraint()
Definition umlobject.cpp:1443
virtual void setID(Uml::ID::Type NewID)
Definition umlobject.cpp:179
bool loadStereotype(QDomElement &element)
Definition umlobject.cpp:986
static Icon_Utils::IconType toIcon(ObjectType t)
Definition umlobject.cpp:1291
QString m_Doc
object's documentation
Definition umlobject.h:305
bool isUMLDatatype() const
Definition umlobject.h:204
bool hasDoc() const
Definition umlobject.cpp:441
UMLStereotype * umlStereotype() const
Definition umlobject.cpp:547
void setSecondaryId(const QString &id)
Definition umlobject.cpp:694
const UMLClassifierSet * asUMLClassifierSet() const
UMLOperation * asUMLOperation()
Definition umlobject.cpp:1437
UMLPackage * umlPackage() const
Definition umlobject.cpp:651
void setUMLStereotype(UMLStereotype *stereo)
Definition umlobject.cpp:497
UMLEntity * asUMLEntity()
Definition umlobject.cpp:1426
virtual QString fullyQualifiedName(const QString &separator=QString(), bool includeRoot=false) const
Definition umlobject.cpp:223
UMLObject(const UMLObject &other)
Definition umlobject.cpp:44
QString stereotype(bool includeAdornments=false) const
Definition umlobject.cpp:555
bool isUMLRole() const
Definition umlobject.h:219
void setStereotypeCmd(const QString &_name)
Definition umlobject.cpp:531
bool isUMLCategory() const
Definition umlobject.h:200
void save1(QXmlStreamWriter &writer, const QString &type, const QString &tag=QString())
Definition umlobject.cpp:861
bool isUMLStereotype() const
Definition umlobject.h:220
virtual ~UMLObject()
Definition umlobject.cpp:106
UMLDatatype * asUMLDatatype()
Definition umlobject.cpp:1425
bool isStatic() const
Definition umlobject.cpp:362
void modified()
bool isUMLActor() const
Definition umlobject.h:195
QString doc() const
Definition umlobject.cpp:431
bool setUMLPackage(UMLPackage *pPkg)
Definition umlobject.cpp:620
void setSecondaryFallback(const QString &id)
Definition umlobject.cpp:712
QString secondaryId() const
Definition umlobject.cpp:684
bool isUMLPort() const
Definition umlobject.h:218
void setDoc(const QString &d)
Definition umlobject.cpp:451
void setStereotype(const QString &_name)
Definition umlobject.cpp:524
UMLRole * asUMLRole()
Definition umlobject.cpp:1440
bool isUMLEntityConstraint() const
Definition umlobject.h:207
bool isUMLUniqueConstraint() const
Definition umlobject.h:222
virtual void setBaseType(ObjectType ot)
Definition umlobject.cpp:411
UMLTemplate * asUMLTemplate()
Definition umlobject.cpp:1442
void setAbstract(bool bAbstract)
Definition umlobject.cpp:352
bool isUMLFolder() const
Definition umlobject.h:210
QPointer< UMLObject > m_pSecondary
Definition umlobject.h:313
bool isUMLOperation() const
Definition umlobject.h:216
QStringList m_TaggedValues
Definition umlobject.h:326
virtual void setName(const QString &strName)
Definition umlobject.cpp:188
void init()
Definition umlobject.cpp:122
UMLCategory * asUMLCategory()
Definition umlobject.cpp:1420
Uml::Visibility::Enum visibility() const
Definition umlobject.cpp:462
bool isUMLInstanceAttribute() const
Definition umlobject.h:213
QPointer< UMLStereotype > m_pStereotype
stereotype of the object if applicable
Definition umlobject.h:306
QString name() const
Definition umlobject.cpp:207
UMLInstanceAttribute * asUMLInstanceAttribute()
Definition umlobject.cpp:1434
ObjectType baseType() const
Definition umlobject.cpp:393
UMLObject * asUMLObject()
Definition umlobject.cpp:1436
QString m_SecondaryId
Definition umlobject.h:317
UMLStereotype * asUMLStereotype()
Definition umlobject.cpp:1441
void maybeSignalObjectCreated()
Definition umlobject.cpp:721
bool isUMLTemplate() const
Definition umlobject.h:221
QLatin1String baseTypeStr() const
Definition umlobject.cpp:401
UMLPort * asUMLPort()
Definition umlobject.cpp:1439
QString m_name
objects name
Definition umlobject.h:307
UMLAttribute * asUMLAttribute()
Definition umlobject.cpp:1418
UMLEntityConstraint * asUMLEntityConstraint()
Definition umlobject.cpp:1428
UMLCanvasObject * asUMLCanvasObject()
Definition umlobject.cpp:1419
bool isUMLCheckConstraint() const
Definition umlobject.h:201
void setStatic(bool bStatic)
Definition umlobject.cpp:370
void setUMLParent(UMLObject *parent)
Definition umlobject.cpp:663
UMLClassifier * asUMLClassifier()
Definition umlobject.cpp:1422
UMLEnum * asUMLEnum()
Definition umlobject.cpp:1429
void setVisibility(Uml::Visibility::Enum visibility)
Definition umlobject.cpp:472
UMLForeignKeyConstraint * asUMLForeignKeyConstraint()
Definition umlobject.cpp:1432
virtual bool loadFromXMI(QDomElement &element)
Definition umlobject.cpp:1027
bool isUMLForeignKeyConstraint() const
Definition umlobject.h:211
UMLPackageList packages(bool includeRoot=false) const
Definition umlobject.cpp:602
virtual void saveToXMI(QXmlStreamWriter &writer)
Definition umlobject.cpp:840
bool isUMLArtifact() const
Definition umlobject.h:196
bool isUMLClassifier() const
Definition umlobject.h:202
bool isUMLInstance() const
Definition umlobject.h:212
Uml::Visibility::Enum m_visibility
objects visibility
Definition umlobject.h:309
virtual bool load1(QDomElement &element)
Definition umlobject.cpp:973
bool isUMLEnum() const
Definition umlobject.h:208
bool m_bStatic
flag for instance scope
Definition umlobject.h:311
bool isUMLAssociation() const
Definition umlobject.h:197
static QString toString(ObjectType ot)
Definition umlobject.cpp:1214
bool isUMLEntity() const
Definition umlobject.h:205
QString secondaryFallback() const
Definition umlobject.cpp:703
UMLArtifact * asUMLArtifact()
Definition umlobject.cpp:1416
bool isUMLObject() const
Definition umlobject.h:215
bool isUMLAttribute() const
Definition umlobject.h:198
ObjectType m_BaseType
objects type
Definition umlobject.h:308
UMLClassifierListItem * asUMLClassifierListItem()
Definition umlobject.cpp:1423
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:25
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:13