umbrello  2.39.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-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 
21 class UMLActor;
22 class UMLArtifact;
23 class UMLAssociation;
24 class UMLAttribute;
25 class UMLCanvasObject;
26 class UMLCategory;
27 class UMLCheckConstraint;
28 class UMLClassifier;
30 class UMLClassifierSet;
31 class UMLComponent;
32 class UMLDatatype;
33 class UMLEntity;
34 class UMLEntityAttribute;
36 class UMLEnum;
37 class UMLEnumLiteral;
38 class UMLFolder;
40 class UMLInstance;
42 class UMLNode;
43 class UMLOperation;
44 class UMLPackage;
45 class UMLPort;
46 class UMLRole;
47 class UMLStereotype;
48 class UMLTemplate;
50 class UMLUseCase;
51 class UMLObjectPrivate;
52 
69 class UMLObject : public QObject
70 {
71  Q_OBJECT
72  Q_ENUMS(ObjectType)
73 
74 public:
76  {
77  ot_Unknown = -1,
78  ot_UMLObject = 100,
107  ot_SubSystem
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);
146  UMLStereotype *umlStereotype() const;
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 = 0);
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; }
201  bool isUMLCheckConstraint() const { return baseType() == ot_CheckConstraint; }
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; }
206  bool isUMLEntityAttribute() const { return baseType() == ot_EntityAttribute; }
207  bool isUMLEntityConstraint() const { return baseType() == ot_EntityConstraint; }
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; }
222  bool isUMLUniqueConstraint() const { return baseType() == ot_UniqueConstraint; }
223  bool isUMLUseCase() const { return baseType() == ot_UseCase; }
224 
225  UMLActor * asUMLActor();
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 
289 public slots:
290  void emitModified();
291 
292 signals:
293  void modified();
294 
295 protected:
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;
310  bool m_bAbstract;
311  bool m_bStatic;
313  QPointer<UMLObject> m_pSecondary;
317  QString m_SecondaryId;
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
virtual bool showPropertiesDialog(QWidget *parent=0)
Definition: umlobject.cpp:141
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
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
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
UMLClassifierSet * asUMLClassifierSet()
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
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()
Definition: moc_umlobject.cpp:217
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
const UMLClassifierSet * asUMLClassifierSet() const
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:11