umbrello  2.31.80
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 
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);
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; }
197  bool isUMLAssociation() { return baseType() == ot_Association; }
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; }
209  bool isUMLEnumLiteral() { return baseType() == ot_EnumLiteral; }
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 
225  UMLActor* asUMLActor();
240  UMLEnum* asUMLEnum();
246  UMLNode* asUMLNode();
250  UMLPort* asUMLPort();
251  UMLRole* asUMLRole();
256 
257 public slots:
258  void emitModified();
259 
260 signals:
261  void modified();
262 
263 protected:
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;
278  bool m_bAbstract;
279  bool m_bStatic;
280  bool m_bInPaste;
282  QPointer<UMLObject> m_pSecondary;
286  QString m_SecondaryId;
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
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
UMLClassifierSet * asUMLClassifierSet()
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()
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