umbrello  2.32.3
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 
25 class UMLActor;
26 class UMLArtifact;
27 class UMLAssociation;
28 class UMLAttribute;
29 class UMLCanvasObject;
30 class UMLCategory;
31 class UMLCheckConstraint;
32 class UMLClassifier;
34 class UMLClassifierSet;
35 class UMLComponent;
36 class UMLDatatype;
37 class UMLEntity;
38 class UMLEntityAttribute;
40 class UMLEnum;
41 class UMLEnumLiteral;
42 class UMLFolder;
44 class UMLInstance;
46 class UMLNode;
47 class UMLOperation;
48 class UMLPackage;
49 class UMLPort;
50 class UMLRole;
51 class UMLStereotype;
52 class UMLTemplate;
54 class UMLUseCase;
55 class UMLObjectPrivate;
56 
73 class UMLObject : public QObject
74 {
75  Q_OBJECT
76  Q_ENUMS(ObjectType)
77 
78 public:
80  {
81  ot_Unknown = -1,
82  ot_UMLObject = 100,
111  ot_SubSystem
112  };
113 
114  static QString toString(ObjectType ot);
115  static QString toI18nString(ObjectType t);
117 
118  explicit UMLObject(const UMLObject& other);
119  explicit UMLObject(UMLObject* parent, const QString& name, Uml::ID::Type id = Uml::ID::None);
120  explicit UMLObject(UMLObject* parent);
121  explicit UMLObject(const QString& name = QString(), Uml::ID::Type id = Uml::ID::None);
122  virtual ~UMLObject();
123 
124  bool operator==(const UMLObject & rhs) const;
125 
126  virtual void copyInto(UMLObject *lhs) const;
127 
128  virtual UMLObject* clone() const;
129 
130  virtual void setBaseType(ObjectType ot);
131  ObjectType baseType() const;
132  QLatin1String baseTypeStr() const;
133 
134  virtual void setID(Uml::ID::Type NewID);
135  virtual Uml::ID::Type id() const;
136 
137  QString doc() const;
138  bool hasDoc() const;
139  void setDoc(const QString &d);
140 
144 
145  void setStereotype(const QString &_name);
146  void setStereotypeCmd(const QString &_name);
147  QString stereotype(bool includeAdornments = false) const;
148 
149  void setUMLStereotype(UMLStereotype *stereo);
151 
152  QString package(const QString& separator = QString(),
153  bool includeRoot = false);
154 
155  UMLPackageList packages(bool includeRoot = false) const;
156 
157  bool setUMLPackage(UMLPackage* pPkg);
158  UMLPackage* umlPackage() const;
159 
160  void setUMLParent(UMLObject* parent);
161  UMLObject* umlParent() const;
162 
163  virtual void setName(const QString &strName);
164  virtual void setNameCmd(const QString &strName) ;
165  QString name() const;
166 
167  virtual QString fullyQualifiedName(const QString& separator = QString(),
168  bool includeRoot = false) const;
169 
170  void setAbstract(bool bAbstract);
171  bool isAbstract() const;
172 
173  virtual bool showPropertiesDialog(QWidget* parent = 0);
174 
175  virtual bool resolveRef();
176 
177  virtual void saveToXMI1(QDomDocument & qDoc, QDomElement & qElement);
178  virtual bool loadFromXMI1(QDomElement & element);
179 
180  bool loadStereotype(QDomElement & element);
181 
182  void setStatic(bool bStatic);
183  bool isStatic() const;
184 
185  virtual bool acceptAssociationType(Uml::AssociationType::Enum); //:TODO: check if this is really needed here
186 
187  void setSecondaryId(const QString& id);
188  QString secondaryId() const;
189 
190  void setSecondaryFallback(const QString& id);
191  QString secondaryFallback() const;
192 
193  QDomElement save1(const QString &tag, QDomDocument & qDoc);
194 
195  friend QDebug operator<< (QDebug out, const UMLObject& obj);
196 
197  bool isUMLActor() { return baseType() == ot_Actor; }
198  bool isUMLArtifact() { return baseType() == ot_Artifact; }
199  bool isUMLAssociation() { return baseType() == ot_Association; }
200  bool isUMLAttribute() { return baseType() == ot_Attribute; }
201  //bool isUMLCanvasObject() { return baseType() == ot_CanvasObject; }
202  bool isUMLCategory() { return baseType() == ot_Category; }
204  bool isUMLClassifier() { return baseType() == ot_Class; }
205  bool isUMLComponent() { return baseType() == ot_Component; }
206  bool isUMLDatatype() { return baseType() == ot_Datatype; }
207  bool isUMLEntity() { return baseType() == ot_Entity; }
210  bool isUMLEnum() { return baseType() == ot_Enum; }
211  bool isUMLEnumLiteral() { return baseType() == ot_EnumLiteral; }
212  bool isUMLFolder() { return baseType() == ot_Folder; }
214  bool isUMLInstance() { return baseType() == ot_Instance; }
216  bool isUMLNode() { return baseType() == ot_Node; }
217  bool isUMLObject() { return baseType() == ot_UMLObject; }
218  bool isUMLOperation() { return baseType() == ot_Operation; }
219  bool isUMLPackage() { return baseType() == ot_Package; }
220  bool isUMLPort() { return baseType() == ot_Port; }
221  bool isUMLRole() { return baseType() == ot_Role; }
222  bool isUMLStereotype() { return baseType() == ot_Stereotype; }
223  bool isUMLTemplate() { return baseType() == ot_Template; }
225  bool isUMLUseCase() { return baseType() == ot_UseCase; }
226 
227  UMLActor* asUMLActor();
242  UMLEnum* asUMLEnum();
248  UMLNode* asUMLNode();
252  UMLPort* asUMLPort();
253  UMLRole* asUMLRole();
258 
259 public slots:
260  void emitModified();
261 
262 signals:
263  void modified();
264 
265 protected:
266  void init();
267 
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;
296  friend class ObjectsModel;
297 };
298 
299 #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:33
Sets up attribute information.
Definition: attribute.h:28
Non-graphical information for a UMLCanvasObject.
Definition: umlcanvasobject.h:34
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:26
Non-graphical Information for an Instance.
Definition: instance.h:27
Non-graphical information for a Node.
Definition: node.h:27
Definition: umlobjectprivate.h:14
The base class for UML objects.
Definition: umlobject.h:74
Uml::ID::Type m_nId
object's id
Definition: umlobject.h:272
virtual bool acceptAssociationType(Uml::AssociationType::Enum)
Definition: umlobject.cpp:173
UMLInstance * asUMLInstance()
Definition: umlobject.cpp:1320
UMLCheckConstraint * asUMLCheckConstraint()
Definition: umlobject.cpp:1308
virtual bool showPropertiesDialog(QWidget *parent=0)
Definition: umlobject.cpp:145
ObjectType
Definition: umlobject.h:80
@ ot_Interface
Definition: umlobject.h:86
@ ot_Port
Definition: umlobject.h:109
@ ot_Category
Definition: umlobject.h:108
@ ot_Association
Definition: umlobject.h:91
@ ot_UMLObject
Definition: umlobject.h:82
@ ot_Stereotype
Definition: umlobject.h:99
@ ot_Attribute
Definition: umlobject.h:92
@ ot_Enum
Definition: umlobject.h:88
@ ot_Package
Definition: umlobject.h:85
@ ot_Unknown
Definition: umlobject.h:81
@ ot_ForeignKeyConstraint
Definition: umlobject.h:106
@ ot_EnumLiteral
Definition: umlobject.h:94
@ ot_Operation
Definition: umlobject.h:93
@ ot_Actor
Definition: umlobject.h:83
@ ot_Template
Definition: umlobject.h:95
@ ot_EntityConstraint
Definition: umlobject.h:104
@ ot_CheckConstraint
Definition: umlobject.h:107
@ ot_Node
Definition: umlobject.h:98
@ ot_Role
Definition: umlobject.h:100
@ ot_Class
Definition: umlobject.h:89
@ ot_Datatype
Definition: umlobject.h:87
@ ot_SubSystem
no real object type
Definition: umlobject.h:111
@ ot_Instance
Definition: umlobject.h:90
@ ot_Component
Definition: umlobject.h:96
@ ot_Folder
Definition: umlobject.h:103
@ ot_EntityAttribute
Definition: umlobject.h:102
@ ot_UseCase
Definition: umlobject.h:84
@ ot_InstanceAttribute
Definition: umlobject.h:110
@ ot_Artifact
Definition: umlobject.h:97
@ ot_UniqueConstraint
Definition: umlobject.h:105
@ ot_Entity
Definition: umlobject.h:101
bool isUMLUseCase()
Definition: umlobject.h:225
bool isUMLClassifier()
Definition: umlobject.h:204
UMLUseCase * asUMLUseCase()
Definition: umlobject.cpp:1331
UMLEnumLiteral * asUMLEnumLiteral()
Definition: umlobject.cpp:1317
UMLPackage * asUMLPackage()
Definition: umlobject.cpp:1325
virtual Uml::ID::Type id() const
Definition: umlobject.cpp:425
bool isUMLAttribute()
Definition: umlobject.h:200
UMLObject * umlParent() const
Definition: umlobject.cpp:671
QString m_SecondaryFallback
Definition: umlobject.h:289
UMLComponent * asUMLComponent()
Definition: umlobject.cpp:1311
virtual bool resolveRef()
Definition: umlobject.cpp:739
bool isUMLPort()
Definition: umlobject.h:220
bool isUMLUniqueConstraint()
Definition: umlobject.h:224
bool isUMLCategory()
Definition: umlobject.h:202
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
virtual void copyInto(UMLObject *lhs) const
Definition: umlobject.cpp:314
QDomElement save1(const QString &tag, QDomDocument &qDoc)
Definition: umlobject.cpp:845
UMLFolder * asUMLFolder()
Definition: umlobject.cpp:1318
void emitModified()
Definition: umlobject.cpp:385
static QString toI18nString(ObjectType t)
Definition: umlobject.cpp:1135
bool isUMLDatatype()
Definition: umlobject.h:206
bool operator==(const UMLObject &rhs) const
Definition: umlobject.cpp:255
bool m_bCreationWasSignalled
auxiliary to maybeSignalObjectCreated()
Definition: umlobject.h:281
bool isUMLFolder()
Definition: umlobject.h:212
friend QDebug operator<<(QDebug out, const UMLObject &obj)
Definition: umlobject.cpp:1268
UMLObjectPrivate * m_d
private data
Definition: umlobject.h:295
void setVisibilityCmd(Uml::Visibility::Enum visibility)
Definition: umlobject.cpp:486
UMLEntityAttribute * asUMLEntityAttribute()
Definition: umlobject.cpp:1314
bool m_bAbstract
state of whether the object is abstract or not
Definition: umlobject.h:278
virtual void saveToXMI1(QDomDocument &qDoc, QDomElement &qElement)
Definition: umlobject.cpp:834
UMLNode * asUMLNode()
Definition: umlobject.cpp:1322
UMLAssociation * asUMLAssociation()
Definition: umlobject.cpp:1304
UMLActor * asUMLActor()
Definition: umlobject.cpp:1302
bool isUMLPackage()
Definition: umlobject.h:219
UMLUniqueConstraint * asUMLUniqueConstraint()
Definition: umlobject.cpp:1330
virtual void setID(Uml::ID::Type NewID)
Definition: umlobject.cpp:183
bool loadStereotype(QDomElement &element)
Definition: umlobject.cpp:914
static Icon_Utils::IconType toIcon(ObjectType t)
Definition: umlobject.cpp:1202
QString m_Doc
object's documentation
Definition: umlobject.h:273
UMLClassifierSet * asUMLClassifierSet()
virtual bool loadFromXMI1(QDomElement &element)
Definition: umlobject.cpp:955
bool hasDoc() const
Definition: umlobject.cpp:445
void setSecondaryId(const QString &id)
Definition: umlobject.cpp:689
bool isUMLComponent()
Definition: umlobject.h:205
UMLOperation * asUMLOperation()
Definition: umlobject.cpp:1324
UMLPackage * umlPackage() const
Definition: umlobject.cpp:646
void setUMLStereotype(UMLStereotype *stereo)
Definition: umlobject.cpp:501
UMLEntity * asUMLEntity()
Definition: umlobject.cpp:1313
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:211
bool isUMLNode()
Definition: umlobject.h:216
void setStereotypeCmd(const QString &_name)
Definition: umlobject.cpp:535
bool isUMLEnum()
Definition: umlobject.h:210
bool isUMLAssociation()
Definition: umlobject.h:199
virtual ~UMLObject()
Definition: umlobject.cpp:110
UMLDatatype * asUMLDatatype()
Definition: umlobject.cpp:1312
bool isStatic() const
Definition: umlobject.cpp:366
void modified()
QString doc() const
Definition: umlobject.cpp:435
bool setUMLPackage(UMLPackage *pPkg)
Definition: umlobject.cpp:616
void setSecondaryFallback(const QString &id)
Definition: umlobject.cpp:707
QString secondaryId() const
Definition: umlobject.cpp:679
bool isUMLObject()
Definition: umlobject.h:217
void setDoc(const QString &d)
Definition: umlobject.cpp:455
void setStereotype(const QString &_name)
Definition: umlobject.cpp:528
UMLRole * asUMLRole()
Definition: umlobject.cpp:1327
virtual void setBaseType(ObjectType ot)
Definition: umlobject.cpp:415
UMLTemplate * asUMLTemplate()
Definition: umlobject.cpp:1329
void setAbstract(bool bAbstract)
Definition: umlobject.cpp:356
QPointer< UMLObject > m_pSecondary
Definition: umlobject.h:282
virtual void setName(const QString &strName)
Definition: umlobject.cpp:192
void init()
Definition: umlobject.cpp:126
UMLCategory * asUMLCategory()
Definition: umlobject.cpp:1307
bool m_bInPaste
caller sets this true when in paste operation
Definition: umlobject.h:280
Uml::Visibility::Enum visibility() const
Definition: umlobject.cpp:466
QPointer< UMLStereotype > m_pStereotype
stereotype of the object if applicable
Definition: umlobject.h:274
QString name() const
Definition: umlobject.cpp:211
UMLInstanceAttribute * asUMLInstanceAttribute()
Definition: umlobject.cpp:1321
ObjectType baseType() const
Definition: umlobject.cpp:397
UMLObject * asUMLObject()
Definition: umlobject.cpp:1323
QString m_SecondaryId
Definition: umlobject.h:286
bool isUMLRole()
Definition: umlobject.h:221
UMLStereotype * asUMLStereotype()
Definition: umlobject.cpp:1328
void maybeSignalObjectCreated()
Definition: umlobject.cpp:716
bool isUMLInstance()
Definition: umlobject.h:214
QLatin1String baseTypeStr() const
Definition: umlobject.cpp:405
UMLPort * asUMLPort()
Definition: umlobject.cpp:1326
QString package(const QString &separator=QString(), bool includeRoot=false)
Definition: umlobject.cpp:578
QString m_name
objects name
Definition: umlobject.h:275
UMLAttribute * asUMLAttribute()
Definition: umlobject.cpp:1305
UMLEntityConstraint * asUMLEntityConstraint()
Definition: umlobject.cpp:1315
bool isUMLEntityAttribute()
Definition: umlobject.h:208
bool isUMLTemplate()
Definition: umlobject.h:223
UMLCanvasObject * asUMLCanvasObject()
Definition: umlobject.cpp:1306
void setStatic(bool bStatic)
Definition: umlobject.cpp:374
void setUMLParent(UMLObject *parent)
Definition: umlobject.cpp:658
UMLClassifier * asUMLClassifier()
Definition: umlobject.cpp:1309
UMLEnum * asUMLEnum()
Definition: umlobject.cpp:1316
bool isUMLCheckConstraint()
Definition: umlobject.h:203
void setVisibility(Uml::Visibility::Enum visibility)
Definition: umlobject.cpp:476
UMLForeignKeyConstraint * asUMLForeignKeyConstraint()
Definition: umlobject.cpp:1319
bool isUMLInstanceAttribute()
Definition: umlobject.h:215
UMLPackageList packages(bool includeRoot=false) const
Definition: umlobject.cpp:598
bool isUMLEntity()
Definition: umlobject.h:207
Uml::Visibility::Enum m_visibility
objects visibility
Definition: umlobject.h:277
virtual bool load1(QDomElement &element)
Definition: umlobject.cpp:901
bool m_bStatic
flag for instance scope
Definition: umlobject.h:279
bool isUMLStereotype()
Definition: umlobject.h:222
static QString toString(ObjectType ot)
Definition: umlobject.cpp:1125
QString secondaryFallback() const
Definition: umlobject.cpp:698
UMLArtifact * asUMLArtifact()
Definition: umlobject.cpp:1303
ObjectType m_BaseType
objects type
Definition: umlobject.h:276
bool isUMLActor()
Definition: umlobject.h:197
bool isUMLForeignKeyConstraint()
Definition: umlobject.h:213
UMLClassifierListItem * asUMLClassifierListItem()
Definition: umlobject.cpp:1310
bool isUMLEntityConstraint()
Definition: umlobject.h:209
bool isUMLOperation()
Definition: umlobject.h:218
bool isUMLArtifact()
Definition: umlobject.h:198
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:353
std::string Type
Definition: basictypes.h:351
Enum
Definition: basictypes.h:59
Definition: visibility.py:1
QList< UMLPackage * > UMLPackageList
Definition: umlpackagelist.h:17