umbrello  2.31.70
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,
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;
283  QString m_SecondaryId;
287  QString m_SecondaryFallback;
296  friend class ObjectsModel;
297 };
298 
299 #endif
no real object type
Definition: umlobject.h:111
QLatin1String baseTypeStr() const
Definition: umlobject.cpp:405
bool isUMLFolder()
Definition: umlobject.h:212
QString m_Doc
object&#39;s documentation
Definition: umlobject.h:273
Definition: umlobject.h:94
virtual bool load1(QDomElement &element)
Definition: umlobject.cpp:900
virtual void setName(const QString &strName)
Definition: umlobject.cpp:192
bool isAbstract() const
Definition: umlobject.cpp:348
Definition: objectsmodel.h:20
friend QDebug operator<<(QDebug out, const UMLObject &obj)
Definition: umlobject.cpp:1267
Non-graphical information for a Package.
Definition: package.h:32
UMLEntityAttribute * asUMLEntityAttribute()
Definition: umlobject.cpp:1313
Definition: umlobject.h:96
bool isUMLPort()
Definition: umlobject.h:220
bool m_bStatic
flag for instance scope
Definition: umlobject.h:279
UMLAssociation * asUMLAssociation()
Definition: umlobject.cpp:1303
bool isUMLEntity()
Definition: umlobject.h:207
Information for a non-graphical Concept/Class.
Definition: classifier.h:39
bool isUMLEnumLiteral()
Definition: umlobject.h:211
bool isUMLEntityConstraint()
Definition: umlobject.h:209
void setUMLStereotype(UMLStereotype *stereo)
Definition: umlobject.cpp:501
QString secondaryFallback() const
Definition: umlobject.cpp:697
A base class for classifier list items (e.g. attributes)
Definition: classifierlistitem.h:29
bool isUMLActor()
Definition: umlobject.h:197
Enum
Definition: basictypes.h:59
Definition: umlobject.h:100
bool isUMLCheckConstraint()
Definition: umlobject.h:203
UMLEnum * asUMLEnum()
Definition: umlobject.cpp:1315
bool isUMLDatatype()
Definition: umlobject.h:206
QString stereotype(bool includeAdornments=false) const
Definition: umlobject.cpp:558
Definition: umlobject.h:88
Non-graphical information for a Component.
Definition: component.h:27
void setVisibility(Uml::Visibility::Enum visibility)
Definition: umlobject.cpp:476
UMLCanvasObject * asUMLCanvasObject()
Definition: umlobject.cpp:1305
UMLStereotype * umlStereotype()
Definition: umlobject.cpp:550
Definition: umlobject.h:84
UMLFolder * asUMLFolder()
Definition: umlobject.cpp:1317
virtual void setNameCmd(const QString &strName)
Definition: umlobject.cpp:202
void setStereotypeCmd(const QString &_name)
Definition: umlobject.cpp:534
UMLForeignKeyConstraint * asUMLForeignKeyConstraint()
Definition: umlobject.cpp:1318
bool isUMLUniqueConstraint()
Definition: umlobject.h:224
void init()
Definition: umlobject.cpp:126
Sets up attribute information.
Definition: attribute.h:27
QPointer< UMLStereotype > m_pStereotype
stereotype of the object if applicable
Definition: umlobject.h:274
UMLInstanceAttribute * asUMLInstanceAttribute()
Definition: umlobject.cpp:1320
void setUMLParent(UMLObject *parent)
Definition: umlobject.cpp:657
Non-graphical information for a UMLCanvasObject.
Definition: umlcanvasobject.h:33
bool loadStereotype(QDomElement &element)
Definition: umlobject.cpp:913
Definition: umlobject.h:105
Sets up template information.
Definition: template.h:26
Definition: umlobject.h:90
Sets up stereotype information.
Definition: stereotype.h:40
Definition: umlobject.h:93
Definition: umlobject.h:95
UMLClassifier * asUMLClassifier()
Definition: umlobject.cpp:1308
bool isUMLArtifact()
Definition: umlobject.h:198
bool isUMLForeignKeyConstraint()
Definition: umlobject.h:213
bool isUMLPackage()
Definition: umlobject.h:219
bool isUMLTemplate()
Definition: umlobject.h:223
UMLClassifierSet * asUMLClassifierSet()
bool isUMLCategory()
Definition: umlobject.h:202
virtual void copyInto(UMLObject *lhs) const
Definition: umlobject.cpp:314
Sets up Check Constraint information for UMLEntities.
Definition: checkconstraint.h:25
QString doc() const
Definition: umlobject.cpp:435
UMLPort * asUMLPort()
Definition: umlobject.cpp:1325
Sets up Foreign Key entity constraint information.
Definition: foreignkeyconstraint.h:32
bool isUMLRole()
Definition: umlobject.h:221
The base class for UML objects.
Definition: umlobject.h:73
Sets up association information.
Definition: association.h:32
bool isUMLAttribute()
Definition: umlobject.h:200
bool isUMLInstance()
Definition: umlobject.h:214
Non-graphical information for a Node.
Definition: node.h:26
virtual ~UMLObject()
Definition: umlobject.cpp:110
bool m_bCreationWasSignalled
auxiliary to maybeSignalObjectCreated()
Definition: umlobject.h:281
UMLEnumLiteral * asUMLEnumLiteral()
Definition: umlobject.cpp:1316
Definition: umlobject.h:81
UMLUseCase * asUMLUseCase()
Definition: umlobject.cpp:1330
virtual bool acceptAssociationType(Uml::AssociationType::Enum)
Definition: umlobject.cpp:173
QString secondaryId() const
Definition: umlobject.cpp:678
static QString toString(ObjectType ot)
Definition: umlobject.cpp:1124
UMLComponent * asUMLComponent()
Definition: umlobject.cpp:1310
virtual bool resolveRef()
Definition: umlobject.cpp:738
UMLTemplate * asUMLTemplate()
Definition: umlobject.cpp:1328
QString name() const
Definition: umlobject.cpp:211
UMLInstance * asUMLInstance()
Definition: umlobject.cpp:1319
virtual bool showPropertiesDialog(QWidget *parent=0)
Definition: umlobject.cpp:145
UMLEntityConstraint * asUMLEntityConstraint()
Definition: umlobject.cpp:1314
bool setUMLPackage(UMLPackage *pPkg)
Definition: umlobject.cpp:615
Definition: umlobject.h:103
void setDoc(const QString &d)
Definition: umlobject.cpp:455
UMLObject * umlParent() const
Definition: umlobject.cpp:670
Non-graphical information for a Datatype.
Definition: datatype.h:25
UMLCategory * asUMLCategory()
Definition: umlobject.cpp:1306
UMLPackage * umlPackage() const
Definition: umlobject.cpp:645
UMLObjectPrivate * m_d
private data
Definition: umlobject.h:295
bool isStatic() const
Definition: umlobject.cpp:366
void setVisibilityCmd(Uml::Visibility::Enum visibility)
Definition: umlobject.cpp:486
Enum
Definition: basictypes.h:106
QString m_SecondaryFallback
Definition: umlobject.h:289
bool operator==(const UMLObject &rhs) const
Definition: umlobject.cpp:255
UMLUniqueConstraint * asUMLUniqueConstraint()
Definition: umlobject.cpp:1329
Definition: umlobject.h:107
UMLActor * asUMLActor()
Definition: umlobject.cpp:1301
bool isUMLComponent()
Definition: umlobject.h:205
void maybeSignalObjectCreated()
Definition: umlobject.cpp:715
Definition: umlobject.h:108
Definition: umlobject.h:101
Non-graphical management of objects and diagrams of a Folder.
Definition: folder.h:34
Definition: umlobjectprivate.h:14
QList< UMLPackage * > UMLPackageList
Definition: umlpackagelist.h:17
void emitModified()
Definition: umlobject.cpp:385
Sets up attribute information.
Definition: enumliteral.h:25
bool isUMLInstanceAttribute()
Definition: umlobject.h:215
UMLObject(const UMLObject &other)
Definition: umlobject.cpp:48
Definition: umlobject.h:106
UMLCheckConstraint * asUMLCheckConstraint()
Definition: umlobject.cpp:1307
Definition: umlobject.h:104
Sets up instanceattribute information.
Definition: instanceattribute.h:25
UMLPackage * asUMLPackage()
Definition: umlobject.cpp:1324
QPointer< UMLObject > m_pSecondary
Definition: umlobject.h:282
std::string Type
Definition: basictypes.h:351
UMLArtifact * asUMLArtifact()
Definition: umlobject.cpp:1302
Definition: umlobject.h:92
UMLEntity * asUMLEntity()
Definition: umlobject.cpp:1312
Definition: umlobject.h:109
Sets up entity constraint information.
Definition: entityconstraint.h:26
ObjectType m_BaseType
objects type
Definition: umlobject.h:276
Non-graphical Information for an Enum.
Definition: enum.h:28
Definition: umlobject.h:86
bool hasDoc() const
Definition: umlobject.cpp:445
Definition: umlobject.h:83
bool isUMLEntityAttribute()
Definition: umlobject.h:208
QString m_name
objects name
Definition: umlobject.h:275
Definition: umlobject.h:97
bool isUMLObject()
Definition: umlobject.h:217
Definition: umlobject.h:91
bool isUMLEnum()
Definition: umlobject.h:210
Non-graphical information for a Artifact.
Definition: artifact.h:27
bool isUMLStereotype()
Definition: umlobject.h:222
bool m_bInPaste
caller sets this true when in paste operation
Definition: umlobject.h:280
Definition: visibility.py:1
Definition: operation.h:24
ObjectType
Definition: umlobject.h:79
Sets up Unique entity constraint information.
Definition: uniqueconstraint.h:28
Sets up entityattribute information.
Definition: entityattribute.h:25
void setSecondaryFallback(const QString &id)
Definition: umlobject.cpp:706
Uml::Visibility::Enum visibility() const
Definition: umlobject.cpp:466
ObjectType baseType() const
Definition: umlobject.cpp:397
UMLDatatype * asUMLDatatype()
Definition: umlobject.cpp:1311
Definition: umlobject.h:89
virtual UMLObject * clone() const
Definition: umlobject.cpp:338
Definition: umlrole.h:24
Information for a non-graphical UML Category.
Definition: category.h:28
Definition: umlobject.h:110
virtual QString fullyQualifiedName(const QString &separator=QString(), bool includeRoot=false) const
Definition: umlobject.cpp:227
UMLClassifierListItem * asUMLClassifierListItem()
Definition: umlobject.cpp:1309
QString package(const QString &separator=QString(), bool includeRoot=false)
Definition: umlobject.cpp:577
Definition: umlobject.h:82
virtual void saveToXMI1(QDomDocument &qDoc, QDomElement &qElement)
Definition: umlobject.cpp:833
virtual Uml::ID::Type id() const
Definition: umlobject.cpp:425
bool isUMLOperation()
Definition: umlobject.h:218
UMLNode * asUMLNode()
Definition: umlobject.cpp:1321
Non-graphical Information for an Instance.
Definition: instance.h:26
UMLObject * asUMLObject()
Definition: umlobject.cpp:1322
Information for a non-graphical UML UseCase.
Definition: usecase.h:24
static Icon_Utils::IconType toIcon(ObjectType t)
Definition: umlobject.cpp:1201
UMLStereotype * asUMLStereotype()
Definition: umlobject.cpp:1327
bool m_bAbstract
state of whether the object is abstract or not
Definition: umlobject.h:278
static QString toI18nString(ObjectType t)
Definition: umlobject.cpp:1134
UMLAttribute * asUMLAttribute()
Definition: umlobject.cpp:1304
bool isUMLUseCase()
Definition: umlobject.h:225
void setSecondaryId(const QString &id)
Definition: umlobject.cpp:688
Information for a non-graphical UML Actor.
Definition: actor.h:27
Definition: umlobject.h:99
UMLOperation * asUMLOperation()
Definition: umlobject.cpp:1323
UMLRole * asUMLRole()
Definition: umlobject.cpp:1326
Definition: umlobject.h:85
QDomElement save1(const QString &tag, QDomDocument &qDoc)
Definition: umlobject.cpp:844
virtual void setID(Uml::ID::Type NewID)
Definition: umlobject.cpp:183
void setAbstract(bool bAbstract)
Definition: umlobject.cpp:356
Non-graphical information for a Port.
Definition: port.h:26
IconType
Definition: icon_utils.h:46
QString m_SecondaryId
Definition: umlobject.h:286
virtual void setBaseType(ObjectType ot)
Definition: umlobject.cpp:415
void setStatic(bool bStatic)
Definition: umlobject.cpp:374
UMLPackageList packages(bool includeRoot=false) const
Definition: umlobject.cpp:597
Uml::Visibility::Enum m_visibility
objects visibility
Definition: umlobject.h:277
const Type None
special value for uninitialized ID
Definition: basictypes.h:353
void modified()
Definition: moc_umlobject.cpp:217
void setStereotype(const QString &_name)
Definition: umlobject.cpp:527
Definition: umlobject.h:87
bool isUMLAssociation()
Definition: umlobject.h:199
Uml::ID::Type m_nId
object&#39;s id
Definition: umlobject.h:272
Definition: umlobject.h:102
holds set of classifiers for recursive loop detection
Definition: classifier.cpp:50
Non-graphical Information for an Entity.
Definition: entity.h:34
bool isUMLNode()
Definition: umlobject.h:216
Definition: umlobject.h:98
bool isUMLClassifier()
Definition: umlobject.h:204
virtual bool loadFromXMI1(QDomElement &element)
Definition: umlobject.cpp:954