umbrello  2.31.80
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-2020 Umbrello UML Modeller Authors <umbrello-devel@kde.org>
6 */
7 
8 #ifndef CLASSIFIERCODEDOCUMENT_H
9 #define CLASSIFIERCODEDOCUMENT_H
10 
11 #include "classifier.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();
48  bool parentIsClass();
49 
53  bool hasClassFields();
54 
55  QList<CodeOperation*> getCodeOperations();
56 
61 
63 
65 
67 
68  virtual void initCodeClassFields();
69 
70  virtual void synchronize();
71 
75  virtual bool addCodeOperation(CodeOperation *opBlock) = 0;
76 
77  virtual void updateContent() = 0;
78 
79  virtual void saveToXMI1(QXmlStreamWriter& writer);
80  virtual void loadFromXMI1(QDomElement &root);
81 
82 protected:
83 
84  void loadClassFieldsFromXMI(QDomElement &childElem);
85 
86  virtual void setAttributesOnNode(QXmlStreamWriter& writer);
87  virtual void setAttributesFromNode(QDomElement &element);
88 
89  TextBlock * findCodeClassFieldTextBlockByTag(const QString &tag);
90 
92 
93  void syncClassFields();
94  void syncNamesToParent();
95 
96 private:
97 
100 
102  void updateOperations();
103 
108  QMap<UMLObject *, CodeClassField *> m_classFieldMap;
109 
110  void init(UMLClassifier *classifier);
111 
112 public slots:
113 
114  void addAttributeClassField(UMLClassifierListItem *at, bool syncToParentIfAdded = true);
115  void addAssociationClassField(UMLAssociation *assoc, bool syncToParentIfAdded = true);
120  void syncToParent();
121 
122 };
123 
124 #endif // CLASSIFIERCODEDOCUMENT_H
Definition: classifiercodedocument.h:29
void removeAssociationClassField(UMLAssociation *assoc)
Definition: classifiercodedocument.cpp:244
virtual void loadFromXMI1(QDomElement &root)
Definition: classifiercodedocument.cpp:733
bool hasObjectVectorClassFields()
Definition: classifiercodedocument.cpp:121
void addAssociationClassField(UMLAssociation *assoc, bool syncToParentIfAdded=true)
Definition: classifiercodedocument.cpp:572
virtual void setAttributesOnNode(QXmlStreamWriter &writer)
Definition: classifiercodedocument.cpp:746
ClassifierCodeDocument(UMLClassifier *parent)
Definition: classifiercodedocument.cpp:34
UMLClassifier * getParentClassifier()
Definition: classifiercodedocument.cpp:272
void removeAttributeClassField(UMLClassifierListItem *at)
Definition: classifiercodedocument.cpp:237
void updateOperations()
Definition: classifiercodedocument.cpp:501
bool hasClassFields()
Definition: classifiercodedocument.cpp:148
virtual void setAttributesFromNode(QDomElement &element)
Definition: classifiercodedocument.cpp:617
UMLClassifier * m_parentclassifier
Definition: classifiercodedocument.h:99
virtual void updateContent()=0
void syncToParent()
Definition: classifiercodedocument.cpp:528
bool hasAssociationClassFields()
Definition: classifiercodedocument.cpp:158
bool parentIsInterface()
Definition: classifiercodedocument.cpp:415
void addAttributeClassField(UMLClassifierListItem *at, bool syncToParentIfAdded=true)
Definition: classifiercodedocument.cpp:196
TextBlock * findCodeClassFieldTextBlockByTag(const QString &tag)
Definition: classifiercodedocument.cpp:768
virtual bool addCodeOperation(CodeOperation *opBlock)=0
void loadClassFieldsFromXMI(QDomElement &childElem)
Definition: classifiercodedocument.cpp:676
virtual void synchronize()
Definition: classifiercodedocument.cpp:477
bool hasAttributeClassFields()
Definition: classifiercodedocument.cpp:167
virtual void saveToXMI1(QXmlStreamWriter &writer)
Definition: classifiercodedocument.cpp:710
void addCodeClassFieldMethods(CodeClassFieldList &list)
Definition: classifiercodedocument.cpp:350
void updateAssociationClassFields(UMLAssociationList &assocList)
Definition: classifiercodedocument.cpp:566
CodeClassField * findCodeClassFieldFromParentID(Uml::ID::Type id, int role_id=-1)
Definition: classifiercodedocument.cpp:646
void addOperation(UMLClassifierListItem *obj)
Definition: classifiercodedocument.cpp:299
QMap< UMLObject *, CodeClassField * > m_classFieldMap
Definition: classifiercodedocument.h:108
void syncNamesToParent()
Definition: classifiercodedocument.cpp:463
CodeClassFieldList m_classfieldVector
Definition: classifiercodedocument.h:98
CodeClassFieldList * getCodeClassFieldList()
Definition: classifiercodedocument.cpp:263
QList< CodeOperation * > getCodeOperations()
Definition: classifiercodedocument.cpp:281
void declareClassFields(CodeClassFieldList &list, CodeGenObjectWithTextBlocks *parent)
Definition: classifiercodedocument.cpp:375
virtual void initCodeClassFields()
Definition: classifiercodedocument.cpp:537
CodeClassFieldList getSpecificClassFields(CodeClassField::ClassFieldType cfType)
Definition: classifiercodedocument.cpp:51
bool addCodeClassField(CodeClassField *add_object)
Definition: classifiercodedocument.cpp:179
bool removeCodeClassField(CodeClassField *remove_object)
Definition: classifiercodedocument.cpp:221
bool parentIsClass()
Definition: classifiercodedocument.cpp:407
virtual ~ClassifierCodeDocument()
Definition: classifiercodedocument.cpp:42
void syncClassFields()
Definition: classifiercodedocument.cpp:490
void removeOperation(UMLClassifierListItem *obj)
Definition: classifiercodedocument.cpp:328
void init(UMLClassifier *classifier)
Definition: classifiercodedocument.cpp:425
Definition: codeclassfield.h:26
ClassFieldType
Definition: codeclassfield.h:30
Definition: codedocument.h:30
Definition: codegenobjectwithtextblocks.h:29
Definition: codeoperation.h:20
Definition: hierarchicalcodeblock.h:21
Definition: textblock.h:23
Sets up association information.
Definition: association.h:29
A base class for classifier list items (e.g. attributes)
Definition: classifierlistitem.h:25
Information for a non-graphical Concept/Class.
Definition: classifier.h:35
QList< CodeClassField * > CodeClassFieldList
Definition: codeclassfieldlist.h:12
std::string Type
Definition: basictypes.h:371
Enum
Definition: basictypes.h:45
Definition: visibility.py:1
QList< UMLAssociation * > UMLAssociationList
Definition: umlassociationlist.h:12