umbrello  26.08.1
Umbrello UML Modeller is a Unified Modelling Language (UML) diagram program based on KDE Technology
classifiercodedocument.h
Go to the documentation of this file.
1 /*
2  SPDX-License-Identifier: GPL-2.0-or-later
3 
4  SPDX-FileCopyrightText: 2003 Brian Thomas <thomas@mail630.gsfc.nasa.gov>
5  SPDX-FileCopyrightText: 2004-2021 Umbrello UML Modeller Authors <umbrello-devel@kde.org>
6 */
7 
8 #ifndef CLASSIFIERCODEDOCUMENT_H
9 #define CLASSIFIERCODEDOCUMENT_H
10 
11 #include "umlclassifier.h"
12 #include "codeaccessormethod.h"
13 #include "codedocument.h"
14 #include "codeoperation.h"
15 #include "codeclassfield.h"
16 #include "codeclassfieldlist.h"
17 #include "umlassociationlist.h"
18 
19 #include <QMap>
20 #include <QList>
21 #include <QString>
22 
23 
29 {
30  friend class HierarchicalCodeBlock;
31  Q_OBJECT
32 public:
33 
34  // Constructors/Destructors
35 
36  explicit ClassifierCodeDocument(UMLClassifier * parent);
37  virtual ~ClassifierCodeDocument();
38 
39  bool addCodeClassField(CodeClassField * add_object);
40 
41  bool removeCodeClassField(CodeClassField * remove_object);
42 
44 
45  // some Utility methods
46 
47  bool parentIsInterface() const;
48  bool parentIsClass() const;
49 
50  bool hasAssociationClassFields() const;
51  bool hasAttributeClassFields() const;
52  bool hasObjectVectorClassFields() const;
53  bool hasClassFields() const;
54 
55  QList<const CodeOperation*> getCodeOperations() const;
56 
59  bool isStatic) const;
63  bool isStatic, Uml::Visibility::Enum visibility) const;
64 
66 
68 
70 
71  virtual void initCodeClassFields();
72 
73  virtual void synchronize();
74 
78  virtual bool addCodeOperation(CodeOperation *opBlock) = 0;
79 
80  virtual void updateContent() = 0;
81 
82  virtual void saveToXMI(QXmlStreamWriter& writer);
83  virtual void loadFromXMI(QDomElement &root);
84 
85 protected:
86 
87  void loadClassFieldsFromXMI(QDomElement &childElem);
88 
89  virtual void setAttributesOnNode(QXmlStreamWriter& writer);
90  virtual void setAttributesFromNode(QDomElement &element);
91 
92  TextBlock * findCodeClassFieldTextBlockByTag(const QString &tag);
93 
95 
96  void syncClassFields();
97  void syncNamesToParent();
98 
99 private:
100 
103 
105  void updateOperations();
106 
111  QMap<UMLObject *, CodeClassField *> m_classFieldMap;
112 
113  void init(UMLClassifier *classifier);
114 
115 public Q_SLOTS:
116 
117  void addAttributeClassField(UMLClassifierListItem *at, bool syncToParentIfAdded = true);
118  void addAssociationClassField(UMLAssociation *assoc, bool syncToParentIfAdded = true);
123  void syncToParent();
124 
125 };
126 
127 #endif // CLASSIFIERCODEDOCUMENT_H
bool removeCodeClassField(CodeClassField *remove_object)
Definition: classifiercodedocument.cpp:228
void addAttributeClassField(UMLClassifierListItem *at, bool syncToParentIfAdded=true)
Definition: classifiercodedocument.cpp:203
virtual bool addCodeOperation(CodeOperation *opBlock)=0
bool parentIsClass() const
Definition: classifiercodedocument.cpp:414
Definition: codeclassfield.h:25
TextBlock * findCodeClassFieldTextBlockByTag(const QString &tag)
Definition: classifiercodedocument.cpp:763
Information for a non-graphical Concept/Class.
Definition: umlclassifier.h:34
virtual void initCodeClassFields()
Definition: classifiercodedocument.cpp:543
virtual void updateContent()=0
A base class for classifier list items (e.g. attributes)
Definition: umlclassifierlistitem.h:24
void init(UMLClassifier *classifier)
Definition: classifiercodedocument.cpp:431
QList< UMLAssociation * > UMLAssociationList
Definition: umlassociationlist.h:12
Definition: classifiercodedocument.h:28
Enum
Definition: basictypes.h:45
bool parentIsInterface() const
Definition: classifiercodedocument.cpp:422
ClassifierCodeDocument(UMLClassifier *parent)
Definition: classifiercodedocument.cpp:35
UMLClassifier * m_parentclassifier
Definition: classifiercodedocument.h:102
void removeOperation(UMLClassifierListItem *obj)
Definition: classifiercodedocument.cpp:335
virtual void setAttributesOnNode(QXmlStreamWriter &writer)
Definition: classifiercodedocument.cpp:741
bool addCodeClassField(CodeClassField *add_object)
Definition: classifiercodedocument.cpp:186
CodeClassFieldList * getCodeClassFieldList()
Definition: classifiercodedocument.cpp:270
void loadClassFieldsFromXMI(QDomElement &childElem)
Definition: classifiercodedocument.cpp:682
bool hasClassFields() const
Definition: classifiercodedocument.cpp:155
QMap< UMLObject *, CodeClassField * > m_classFieldMap
Definition: classifiercodedocument.h:111
void addOperation(UMLClassifierListItem *obj)
Definition: classifiercodedocument.cpp:306
void updateOperations()
Definition: classifiercodedocument.cpp:507
void syncToParent()
Definition: classifiercodedocument.cpp:534
void syncClassFields()
Definition: classifiercodedocument.cpp:496
virtual void setAttributesFromNode(QDomElement &element)
Definition: classifiercodedocument.cpp:623
QList< const CodeOperation * > getCodeOperations() const
Definition: classifiercodedocument.cpp:288
void removeAttributeClassField(UMLClassifierListItem *at)
Definition: classifiercodedocument.cpp:244
Sets up association information.
Definition: umlassociation.h:28
CodeClassFieldList getSpecificClassFields(CodeClassField::ClassFieldType cfType) const
Definition: classifiercodedocument.cpp:53
ClassFieldType
Definition: codeclassfield.h:30
Definition: codeoperation.h:19
UMLClassifier * getParentClassifier() const
Definition: classifiercodedocument.cpp:279
Definition: codedocument.h:29
bool hasAssociationClassFields() const
Definition: classifiercodedocument.cpp:165
CodeClassField * findCodeClassFieldFromParentID(Uml::ID::Type id, int role_id=-1)
Definition: classifiercodedocument.cpp:652
Definition: codegenobjectwithtextblocks.h:28
std::string Type
Definition: basictypes.h:371
virtual void loadFromXMI(QDomElement &root)
Definition: classifiercodedocument.cpp:728
CodeClassFieldList m_classfieldVector
Definition: classifiercodedocument.h:101
bool hasAttributeClassFields() const
Definition: classifiercodedocument.cpp:174
Definition: hierarchicalcodeblock.h:20
Definition: textblock.h:22
bool hasObjectVectorClassFields() const
Definition: classifiercodedocument.cpp:128
Definition: visibility.py:1
void syncNamesToParent()
Definition: classifiercodedocument.cpp:469
virtual void saveToXMI(QXmlStreamWriter &writer)
Definition: classifiercodedocument.cpp:716
void removeAssociationClassField(UMLAssociation *assoc)
Definition: classifiercodedocument.cpp:251
void declareClassFields(CodeClassFieldList &list, CodeGenObjectWithTextBlocks *parent)
Definition: classifiercodedocument.cpp:382
void addAssociationClassField(UMLAssociation *assoc, bool syncToParentIfAdded=true)
Definition: classifiercodedocument.cpp:578
void updateAssociationClassFields(UMLAssociationList &assocList)
Definition: classifiercodedocument.cpp:572
QList< CodeClassField * > CodeClassFieldList
Definition: codeclassfieldlist.h:12
void addCodeClassFieldMethods(CodeClassFieldList &list)
Definition: classifiercodedocument.cpp:357
virtual ~ClassifierCodeDocument()
Definition: classifiercodedocument.cpp:43
virtual void synchronize()
Definition: classifiercodedocument.cpp:483