umbrello  2.32.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  * This program is free software; you can redistribute it and/or modify *
3  * it under the terms of the GNU General Public License as published by *
4  * the Free Software Foundation; either version 2 of the License, or *
5  * (at your option) any later version. *
6  * *
7  * copyright (C) 2002-2020 *
8  * Umbrello UML Modeller Authors <umbrello-devel@kde.org> *
9  ***************************************************************************/
10 
11 #ifndef UMLOBJECT_H
12 #define UMLOBJECT_H
13 
14 #include "basictypes.h"
15 #include "icon_utils.h"
16 #include "umlpackagelist.h"
17 
18 //qt includes
19 #include <QDomDocument>
20 #include <QDomElement>
21 #include <QObject>
22 #include <QPointer>
23 #include <QString>
24 #include <QXmlStreamWriter>
25 
26 class UMLActor;
27 class UMLArtifact;
28 class UMLAssociation;
29 class UMLAttribute;
30 class UMLCanvasObject;
31 class UMLCategory;
32 class UMLCheckConstraint;
33 class UMLClassifier;
35 class UMLClassifierSet;
36 class UMLComponent;
37 class UMLDatatype;
38 class UMLEntity;
39 class UMLEntityAttribute;
41 class UMLEnum;
42 class UMLEnumLiteral;
43 class UMLFolder;
45 class UMLInstance;
47 class UMLNode;
48 class UMLOperation;
49 class UMLPackage;
50 class UMLPort;
51 class UMLRole;
52 class UMLStereotype;
53 class UMLTemplate;
55 class UMLUseCase;
56 class UMLObjectPrivate;
57 
74 class UMLObject : public QObject
75 {
76  Q_OBJECT
77  Q_ENUMS(ObjectType)
78 
79 public:
81  {
82  ot_Unknown = -1,
83  ot_UMLObject = 100,
112  ot_SubSystem
113  };
114 
115  static QString toString(ObjectType ot);
116  static QString toI18nString(ObjectType t);
118 
119  explicit UMLObject(const UMLObject& other);
120  explicit UMLObject(UMLObject* parent, const QString& name, Uml::ID::Type id = Uml::ID::None);
121  explicit UMLObject(UMLObject* parent);
122  explicit UMLObject(const QString& name = QString(), Uml::ID::Type id = Uml::ID::None);
123  virtual ~UMLObject();
124 
125  bool operator==(const UMLObject & rhs) const;
126 
127  virtual void copyInto(UMLObject *lhs) const;
128 
129  virtual UMLObject* clone() const;
130 
131  virtual void setBaseType(ObjectType ot);
132  ObjectType baseType() const;
133  QLatin1String baseTypeStr() const;
134 
135  virtual void setID(Uml::ID::Type NewID);
136  virtual Uml::ID::Type id() const;
137 
138  QString doc() const;
139  bool hasDoc() const;
140  void setDoc(const QString &d);
141 
145 
146  void setStereotype(const QString &_name);
147  void setStereotypeCmd(const QString &_name);
148  QString stereotype(bool includeAdornments = false) const;
149 
150  void setUMLStereotype(UMLStereotype *stereo);
152 
153  QStringList& tags();
154 
155  QString package(const QString& separator = QString(),
156  bool includeRoot = false);
157 
158  UMLPackageList packages(bool includeRoot = false) const;
159 
160  bool setUMLPackage(UMLPackage* pPkg);
161  UMLPackage* umlPackage() const;
162 
163  void setUMLParent(UMLObject* parent);
164  UMLObject* umlParent() const;
165 
166  virtual void setName(const QString &strName);
167  virtual void setNameCmd(const QString &strName) ;
168  QString name() const;
169 
170  virtual QString fullyQualifiedName(const QString& separator = QString(),
171  bool includeRoot = false) const;
172 
173  void setAbstract(bool bAbstract);
174  bool isAbstract() const;
175 
176  virtual bool showPropertiesDialog(QWidget* parent = 0);
177 
178  virtual bool resolveRef();
179 
180  virtual void saveToXMI1(QXmlStreamWriter& writer);
181  virtual bool loadFromXMI1(QDomElement & element);
182 
183  bool loadStereotype(QDomElement & element);
184 
185  void setStatic(bool bStatic);
186  bool isStatic() const;
187 
188  virtual bool acceptAssociationType(Uml::AssociationType::Enum); //:TODO: check if this is really needed here
189 
190  void setSecondaryId(const QString& id);
191  QString secondaryId() const;
192 
193  void setSecondaryFallback(const QString& id);
194  QString secondaryFallback() const;
195 
196  void save1(const QString& tag, QXmlStreamWriter& writer);
197 
198  friend QDebug operator<< (QDebug out, const UMLObject& obj);
199 
200  bool isUMLActor() { return baseType() == ot_Actor; }
201  bool isUMLArtifact() { return baseType() == ot_Artifact; }
202  bool isUMLAssociation() { return baseType() == ot_Association; }
203  bool isUMLAttribute() { return baseType() == ot_Attribute; }
204  //bool isUMLCanvasObject() { return baseType() == ot_CanvasObject; }
205  bool isUMLCategory() { return baseType() == ot_Category; }
207  bool isUMLClassifier() { return baseType() == ot_Class; }
208  bool isUMLComponent() { return baseType() == ot_Component; }
209  bool isUMLDatatype() { return baseType() == ot_Datatype; }
210  bool isUMLEntity() { return baseType() == ot_Entity; }
213  bool isUMLEnum() { return baseType() == ot_Enum; }
214  bool isUMLEnumLiteral() { return baseType() == ot_EnumLiteral; }
215  bool isUMLFolder() { return baseType() == ot_Folder; }
217  bool isUMLInstance() { return baseType() == ot_Instance; }
219  bool isUMLNode() { return baseType() == ot_Node; }
220  bool isUMLObject() { return baseType() == ot_UMLObject; }
221  bool isUMLOperation() { return baseType() == ot_Operation; }
222  bool isUMLPackage() { return baseType() == ot_Package; }
223  bool isUMLPort() { return baseType() == ot_Port; }
224  bool isUMLRole() { return baseType() == ot_Role; }
225  bool isUMLStereotype() { return baseType() == ot_Stereotype; }
226  bool isUMLTemplate() { return baseType() == ot_Template; }
228  bool isUMLUseCase() { return baseType() == ot_UseCase; }
229 
230  UMLActor* asUMLActor();
245  UMLEnum* asUMLEnum();
251  UMLNode* asUMLNode();
255  UMLPort* asUMLPort();
256  UMLRole* asUMLRole();
261 
262 public slots:
263  void emitModified();
264 
265 signals:
266  void modified();
267 
268 protected:
269  void init();
270 
272 
273  void save1end(QXmlStreamWriter& writer);
274 
275  virtual bool load1(QDomElement& element);
276 
278  QString m_Doc;
279  QPointer<UMLStereotype> m_pStereotype;
280  QString m_name;
283  bool m_bAbstract;
284  bool m_bStatic;
285  bool m_bInPaste;
287  QPointer<UMLObject> m_pSecondary;
291  QString m_SecondaryId;
300  QStringList m_TaggedValues;
306  friend class ObjectsModel;
307 };
308 
309 #endif
Definition: objectsmodel.h:21
Information for a non-graphical UML Actor.
Definition: actor.h:28
Non-graphical information for a Artifact.
Definition: artifact.h:28
Sets up association information.
Definition: association.h:34
Sets up attribute information.
Definition: attribute.h:28
Non-graphical information for a UMLCanvasObject.
Definition: umlcanvasobject.h:37
Information for a non-graphical UML Category.
Definition: category.h:28
Sets up Check Constraint information for UMLEntities.
Definition: checkconstraint.h:26
A base class for classifier list items (e.g. attributes)
Definition: classifierlistitem.h:30
holds set of classifiers for recursive loop detection
Definition: classifier.cpp:50
Information for a non-graphical Concept/Class.
Definition: classifier.h:40
Non-graphical information for a Component.
Definition: component.h:28
Non-graphical information for a Datatype.
Definition: datatype.h:26
Sets up entityattribute information.
Definition: entityattribute.h:26
Sets up entity constraint information.
Definition: entityconstraint.h:27
Non-graphical Information for an Entity.
Definition: entity.h:35
Sets up attribute information.
Definition: enumliteral.h:26
Non-graphical Information for an Enum.
Definition: enum.h:29
Non-graphical management of objects and diagrams of a Folder.
Definition: folder.h:35
Sets up Foreign Key entity constraint information.
Definition: foreignkeyconstraint.h:33
Sets up instanceattribute information.
Definition: instanceattribute.h:39
Non-graphical Information for an Instance.
Definition: instance.h:48
Non-graphical information for a Node.
Definition: node.h:27
Definition: umlobjectprivate.h:14
The base class for UML objects.
Definition: umlobject.h:75
Uml::ID::Type m_nId
object's id
Definition: umlobject.h:277
virtual bool acceptAssociationType(Uml::AssociationType::Enum)
Definition: umlobject.cpp:173
UMLInstance * asUMLInstance()
Definition: umlobject.cpp:1404
UMLCheckConstraint * asUMLCheckConstraint()
Definition: umlobject.cpp:1392
QStringList & tags()
Definition: umlobject.cpp:569
virtual bool showPropertiesDialog(QWidget *parent=0)
Definition: umlobject.cpp:145
ObjectType
Definition: umlobject.h:81
@ ot_Interface
Definition: umlobject.h:87
@ ot_Port
Definition: umlobject.h:110
@ ot_Category
Definition: umlobject.h:109
@ ot_Association
Definition: umlobject.h:92
@ ot_UMLObject
Definition: umlobject.h:83
@ ot_Stereotype
Definition: umlobject.h:100
@ ot_Attribute
Definition: umlobject.h:93
@ ot_Enum
Definition: umlobject.h:89
@ ot_Package
Definition: umlobject.h:86
@ ot_Unknown
Definition: umlobject.h:82
@ ot_ForeignKeyConstraint
Definition: umlobject.h:107
@ ot_EnumLiteral
Definition: umlobject.h:95
@ ot_Operation
Definition: umlobject.h:94
@ ot_Actor
Definition: umlobject.h:84
@ ot_Template
Definition: umlobject.h:96
@ ot_EntityConstraint
Definition: umlobject.h:105
@ ot_CheckConstraint
Definition: umlobject.h:108
@ ot_Node
Definition: umlobject.h:99
@ ot_Role
Definition: umlobject.h:101
@ ot_Class
Definition: umlobject.h:90
@ ot_Datatype
Definition: umlobject.h:88
@ ot_SubSystem
no real object type
Definition: umlobject.h:112
@ ot_Instance
Definition: umlobject.h:91
@ ot_Component
Definition: umlobject.h:97
@ ot_Folder
Definition: umlobject.h:104
@ ot_EntityAttribute
Definition: umlobject.h:103
@ ot_UseCase
Definition: umlobject.h:85
@ ot_InstanceAttribute
Definition: umlobject.h:111
@ ot_Artifact
Definition: umlobject.h:98
@ ot_UniqueConstraint
Definition: umlobject.h:106
@ ot_Entity
Definition: umlobject.h:102
bool isUMLUseCase()
Definition: umlobject.h:228
bool isUMLClassifier()
Definition: umlobject.h:207
UMLUseCase * asUMLUseCase()
Definition: umlobject.cpp:1415
UMLEnumLiteral * asUMLEnumLiteral()
Definition: umlobject.cpp:1401
UMLPackage * asUMLPackage()
Definition: umlobject.cpp:1409
virtual Uml::ID::Type id() const
Definition: umlobject.cpp:425
bool isUMLAttribute()
Definition: umlobject.h:203
UMLObject * umlParent() const
Definition: umlobject.cpp:678
QString m_SecondaryFallback
Definition: umlobject.h:294
UMLComponent * asUMLComponent()
Definition: umlobject.cpp:1395
virtual bool resolveRef()
Definition: umlobject.cpp:746
bool isUMLPort()
Definition: umlobject.h:223
bool isUMLUniqueConstraint()
Definition: umlobject.h:227
bool isUMLCategory()
Definition: umlobject.h:205
virtual void setNameCmd(const QString &strName)
Definition: umlobject.cpp:202
virtual UMLObject * clone() const
Definition: umlobject.cpp:338
UMLStereotype * umlStereotype()
Definition: umlobject.cpp:551
bool isAbstract() const
Definition: umlobject.cpp:348
void save1end(QXmlStreamWriter &writer)
Definition: umlobject.cpp:908
virtual void copyInto(UMLObject *lhs) const
Definition: umlobject.cpp:314
UMLFolder * asUMLFolder()
Definition: umlobject.cpp:1402
void emitModified()
Definition: umlobject.cpp:385
static QString toI18nString(ObjectType t)
Definition: umlobject.cpp:1194
bool isUMLDatatype()
Definition: umlobject.h:209
bool operator==(const UMLObject &rhs) const
Definition: umlobject.cpp:255
bool m_bCreationWasSignalled
auxiliary to maybeSignalObjectCreated()
Definition: umlobject.h:286
bool isUMLFolder()
Definition: umlobject.h:215
friend QDebug operator<<(QDebug out, const UMLObject &obj)
Definition: umlobject.cpp:1352
UMLObjectPrivate * m_d
private data
Definition: umlobject.h:305
void setVisibilityCmd(Uml::Visibility::Enum visibility)
Definition: umlobject.cpp:486
UMLEntityAttribute * asUMLEntityAttribute()
Definition: umlobject.cpp:1398
bool m_bAbstract
state of whether the object is abstract or not
Definition: umlobject.h:283
UMLNode * asUMLNode()
Definition: umlobject.cpp:1406
UMLAssociation * asUMLAssociation()
Definition: umlobject.cpp:1388
UMLActor * asUMLActor()
Definition: umlobject.cpp:1386
bool isUMLPackage()
Definition: umlobject.h:222
UMLUniqueConstraint * asUMLUniqueConstraint()
Definition: umlobject.cpp:1414
virtual void setID(Uml::ID::Type NewID)
Definition: umlobject.cpp:183
bool loadStereotype(QDomElement &element)
Definition: umlobject.cpp:956
static Icon_Utils::IconType toIcon(ObjectType t)
Definition: umlobject.cpp:1261
QString m_Doc
object's documentation
Definition: umlobject.h:278
UMLClassifierSet * asUMLClassifierSet()
virtual bool loadFromXMI1(QDomElement &element)
Definition: umlobject.cpp:997
bool hasDoc() const
Definition: umlobject.cpp:445
virtual void saveToXMI1(QXmlStreamWriter &writer)
Definition: umlobject.cpp:841
void setSecondaryId(const QString &id)
Definition: umlobject.cpp:696
bool isUMLComponent()
Definition: umlobject.h:208
UMLOperation * asUMLOperation()
Definition: umlobject.cpp:1408
UMLPackage * umlPackage() const
Definition: umlobject.cpp:653
void setUMLStereotype(UMLStereotype *stereo)
Definition: umlobject.cpp:501
UMLEntity * asUMLEntity()
Definition: umlobject.cpp:1397
virtual QString fullyQualifiedName(const QString &separator=QString(), bool includeRoot=false) const
Definition: umlobject.cpp:227
UMLObject(const UMLObject &other)
Definition: umlobject.cpp:48
QString stereotype(bool includeAdornments=false) const
Definition: umlobject.cpp:559
bool isUMLEnumLiteral()
Definition: umlobject.h:214
bool isUMLNode()
Definition: umlobject.h:219
void setStereotypeCmd(const QString &_name)
Definition: umlobject.cpp:535
bool isUMLEnum()
Definition: umlobject.h:213
bool isUMLAssociation()
Definition: umlobject.h:202
virtual ~UMLObject()
Definition: umlobject.cpp:110
UMLDatatype * asUMLDatatype()
Definition: umlobject.cpp:1396
bool isStatic() const
Definition: umlobject.cpp:366
void modified()
QString doc() const
Definition: umlobject.cpp:435
bool setUMLPackage(UMLPackage *pPkg)
Definition: umlobject.cpp:623
void setSecondaryFallback(const QString &id)
Definition: umlobject.cpp:714
QString secondaryId() const
Definition: umlobject.cpp:686
bool isUMLObject()
Definition: umlobject.h:220
void setDoc(const QString &d)
Definition: umlobject.cpp:455
void setStereotype(const QString &_name)
Definition: umlobject.cpp:528
UMLRole * asUMLRole()
Definition: umlobject.cpp:1411
virtual void setBaseType(ObjectType ot)
Definition: umlobject.cpp:415
UMLTemplate * asUMLTemplate()
Definition: umlobject.cpp:1413
void setAbstract(bool bAbstract)
Definition: umlobject.cpp:356
QPointer< UMLObject > m_pSecondary
Definition: umlobject.h:287
QStringList m_TaggedValues
Definition: umlobject.h:300
virtual void setName(const QString &strName)
Definition: umlobject.cpp:192
void init()
Definition: umlobject.cpp:126
UMLCategory * asUMLCategory()
Definition: umlobject.cpp:1391
bool m_bInPaste
caller sets this true when in paste operation
Definition: umlobject.h:285
Uml::Visibility::Enum visibility() const
Definition: umlobject.cpp:466
QPointer< UMLStereotype > m_pStereotype
stereotype of the object if applicable
Definition: umlobject.h:279
QString name() const
Definition: umlobject.cpp:211
UMLInstanceAttribute * asUMLInstanceAttribute()
Definition: umlobject.cpp:1405
ObjectType baseType() const
Definition: umlobject.cpp:397
UMLObject * asUMLObject()
Definition: umlobject.cpp:1407
QString m_SecondaryId
Definition: umlobject.h:291
bool isUMLRole()
Definition: umlobject.h:224
UMLStereotype * asUMLStereotype()
Definition: umlobject.cpp:1412
void maybeSignalObjectCreated()
Definition: umlobject.cpp:723
bool isUMLInstance()
Definition: umlobject.h:217
QLatin1String baseTypeStr() const
Definition: umlobject.cpp:405
UMLPort * asUMLPort()
Definition: umlobject.cpp:1410
QString package(const QString &separator=QString(), bool includeRoot=false)
Definition: umlobject.cpp:585
QString m_name
objects name
Definition: umlobject.h:280
UMLAttribute * asUMLAttribute()
Definition: umlobject.cpp:1389
UMLEntityConstraint * asUMLEntityConstraint()
Definition: umlobject.cpp:1399
bool isUMLEntityAttribute()
Definition: umlobject.h:211
bool isUMLTemplate()
Definition: umlobject.h:226
UMLCanvasObject * asUMLCanvasObject()
Definition: umlobject.cpp:1390
void setStatic(bool bStatic)
Definition: umlobject.cpp:374
void setUMLParent(UMLObject *parent)
Definition: umlobject.cpp:665
UMLClassifier * asUMLClassifier()
Definition: umlobject.cpp:1393
UMLEnum * asUMLEnum()
Definition: umlobject.cpp:1400
bool isUMLCheckConstraint()
Definition: umlobject.h:206
void setVisibility(Uml::Visibility::Enum visibility)
Definition: umlobject.cpp:476
UMLForeignKeyConstraint * asUMLForeignKeyConstraint()
Definition: umlobject.cpp:1403
bool isUMLInstanceAttribute()
Definition: umlobject.h:218
UMLPackageList packages(bool includeRoot=false) const
Definition: umlobject.cpp:605
bool isUMLEntity()
Definition: umlobject.h:210
Uml::Visibility::Enum m_visibility
objects visibility
Definition: umlobject.h:282
virtual bool load1(QDomElement &element)
Definition: umlobject.cpp:943
bool m_bStatic
flag for instance scope
Definition: umlobject.h:284
bool isUMLStereotype()
Definition: umlobject.h:225
static QString toString(ObjectType ot)
Definition: umlobject.cpp:1184
QString secondaryFallback() const
Definition: umlobject.cpp:705
UMLArtifact * asUMLArtifact()
Definition: umlobject.cpp:1387
ObjectType m_BaseType
objects type
Definition: umlobject.h:281
bool isUMLActor()
Definition: umlobject.h:200
bool isUMLForeignKeyConstraint()
Definition: umlobject.h:216
UMLClassifierListItem * asUMLClassifierListItem()
Definition: umlobject.cpp:1394
void save1(const QString &tag, QXmlStreamWriter &writer)
Definition: umlobject.cpp:854
bool isUMLEntityConstraint()
Definition: umlobject.h:212
bool isUMLOperation()
Definition: umlobject.h:221
bool isUMLArtifact()
Definition: umlobject.h:201
Definition: operation.h:25
Non-graphical information for a Package.
Definition: package.h:33
Non-graphical information for a Port.
Definition: port.h:27
Definition: umlrole.h:25
Sets up stereotype information.
Definition: stereotype.h:41
Sets up template information.
Definition: template.h:27
Sets up Unique entity constraint information.
Definition: uniqueconstraint.h:29
Information for a non-graphical UML UseCase.
Definition: usecase.h:25
IconType
Definition: icon_utils.h:47
Enum
Definition: basictypes.h:106
const Type None
special value for uninitialized ID
Definition: basictypes.h:387
std::string Type
Definition: basictypes.h:385
Enum
Definition: basictypes.h:59
Definition: visibility.py:1
QList< UMLPackage * > UMLPackageList
Definition: umlpackagelist.h:17