umbrello  2.32.3
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  * 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) 2003 Brian Thomas <thomas@mail630.gsfc.nasa.gov> *
8  * copyright (C) 2004-2020 *
9  * Umbrello UML Modeller Authors <umbrello-devel@kde.org> *
10  ***************************************************************************/
11 
12 #ifndef CLASSIFIERCODEDOCUMENT_H
13 #define CLASSIFIERCODEDOCUMENT_H
14 
15 #include "classifier.h"
16 #include "codeaccessormethod.h"
17 #include "codedocument.h"
18 #include "codeoperation.h"
19 #include "codeclassfield.h"
20 #include "codeclassfieldlist.h"
21 #include "umlassociationlist.h"
22 
23 #include <QMap>
24 #include <QList>
25 #include <QString>
26 
27 
33 {
34  friend class HierarchicalCodeBlock;
35  Q_OBJECT
36 public:
37 
38  // Constructors/Destructors
39 
40  explicit ClassifierCodeDocument(UMLClassifier * parent);
41  virtual ~ClassifierCodeDocument();
42 
43  bool addCodeClassField(CodeClassField * add_object);
44 
45  bool removeCodeClassField(CodeClassField * remove_object);
46 
48 
49  // some Utility methods
50 
51  bool parentIsInterface();
52  bool parentIsClass();
53 
57  bool hasClassFields();
58 
59  QList<CodeOperation*> getCodeOperations();
60 
65 
67 
69 
71 
72  virtual void initCodeClassFields();
73 
74  virtual void synchronize();
75 
79  virtual bool addCodeOperation(CodeOperation *opBlock) = 0;
80 
81  virtual void updateContent() = 0;
82 
83  virtual void saveToXMI1(QDomDocument &doc, QDomElement &root);
84  virtual void loadFromXMI1(QDomElement &root);
85 
86 protected:
87 
88  void loadClassFieldsFromXMI(QDomElement &childElem);
89 
90  virtual void setAttributesOnNode(QDomDocument &doc, QDomElement &blockElement);
91  virtual void setAttributesFromNode(QDomElement &element);
92 
93  TextBlock * findCodeClassFieldTextBlockByTag(const QString &tag);
94 
96 
97  void syncClassFields();
98  void syncNamesToParent();
99 
100 private:
101 
104 
106  void updateOperations();
107 
112  QMap<UMLObject *, CodeClassField *> m_classFieldMap;
113 
114  void init(UMLClassifier *classifier);
115 
116 public slots:
117 
118  void addAttributeClassField(UMLClassifierListItem *at, bool syncToParentIfAdded = true);
119  void addAssociationClassField(UMLAssociation *assoc, bool syncToParentIfAdded = true);
124  void syncToParent();
125 
126 };
127 
128 #endif // CLASSIFIERCODEDOCUMENT_H
Definition: classifiercodedocument.h:33
void removeAssociationClassField(UMLAssociation *assoc)
Definition: classifiercodedocument.cpp:247
virtual void loadFromXMI1(QDomElement &root)
Definition: classifiercodedocument.cpp:736
bool hasObjectVectorClassFields()
Definition: classifiercodedocument.cpp:124
void addAssociationClassField(UMLAssociation *assoc, bool syncToParentIfAdded=true)
Definition: classifiercodedocument.cpp:575
ClassifierCodeDocument(UMLClassifier *parent)
Definition: classifiercodedocument.cpp:37
UMLClassifier * getParentClassifier()
Definition: classifiercodedocument.cpp:275
void removeAttributeClassField(UMLClassifierListItem *at)
Definition: classifiercodedocument.cpp:240
void updateOperations()
Definition: classifiercodedocument.cpp:504
virtual void setAttributesOnNode(QDomDocument &doc, QDomElement &blockElement)
Definition: classifiercodedocument.cpp:749
bool hasClassFields()
Definition: classifiercodedocument.cpp:151
virtual void setAttributesFromNode(QDomElement &element)
Definition: classifiercodedocument.cpp:620
UMLClassifier * m_parentclassifier
Definition: classifiercodedocument.h:103
virtual void updateContent()=0
void syncToParent()
Definition: classifiercodedocument.cpp:531
bool hasAssociationClassFields()
Definition: classifiercodedocument.cpp:161
bool parentIsInterface()
Definition: classifiercodedocument.cpp:418
void addAttributeClassField(UMLClassifierListItem *at, bool syncToParentIfAdded=true)
Definition: classifiercodedocument.cpp:199
TextBlock * findCodeClassFieldTextBlockByTag(const QString &tag)
Definition: classifiercodedocument.cpp:771
virtual bool addCodeOperation(CodeOperation *opBlock)=0
void loadClassFieldsFromXMI(QDomElement &childElem)
Definition: classifiercodedocument.cpp:679
virtual void synchronize()
Definition: classifiercodedocument.cpp:480
bool hasAttributeClassFields()
Definition: classifiercodedocument.cpp:170
void addCodeClassFieldMethods(CodeClassFieldList &list)
Definition: classifiercodedocument.cpp:353
void updateAssociationClassFields(UMLAssociationList &assocList)
Definition: classifiercodedocument.cpp:569
CodeClassField * findCodeClassFieldFromParentID(Uml::ID::Type id, int role_id=-1)
Definition: classifiercodedocument.cpp:649
void addOperation(UMLClassifierListItem *obj)
Definition: classifiercodedocument.cpp:302
QMap< UMLObject *, CodeClassField * > m_classFieldMap
Definition: classifiercodedocument.h:112
void syncNamesToParent()
Definition: classifiercodedocument.cpp:466
CodeClassFieldList m_classfieldVector
Definition: classifiercodedocument.h:102
CodeClassFieldList * getCodeClassFieldList()
Definition: classifiercodedocument.cpp:266
QList< CodeOperation * > getCodeOperations()
Definition: classifiercodedocument.cpp:284
virtual void saveToXMI1(QDomDocument &doc, QDomElement &root)
Definition: classifiercodedocument.cpp:713
void declareClassFields(CodeClassFieldList &list, CodeGenObjectWithTextBlocks *parent)
Definition: classifiercodedocument.cpp:378
virtual void initCodeClassFields()
Definition: classifiercodedocument.cpp:540
CodeClassFieldList getSpecificClassFields(CodeClassField::ClassFieldType cfType)
Definition: classifiercodedocument.cpp:54
bool addCodeClassField(CodeClassField *add_object)
Definition: classifiercodedocument.cpp:182
bool removeCodeClassField(CodeClassField *remove_object)
Definition: classifiercodedocument.cpp:224
bool parentIsClass()
Definition: classifiercodedocument.cpp:410
virtual ~ClassifierCodeDocument()
Definition: classifiercodedocument.cpp:45
void syncClassFields()
Definition: classifiercodedocument.cpp:493
void removeOperation(UMLClassifierListItem *obj)
Definition: classifiercodedocument.cpp:331
void init(UMLClassifier *classifier)
Definition: classifiercodedocument.cpp:428
Definition: codeclassfield.h:30
ClassFieldType
Definition: codeclassfield.h:34
Definition: codedocument.h:33
Definition: codegenobjectwithtextblocks.h:32
Definition: codeoperation.h:24
Definition: hierarchicalcodeblock.h:23
Definition: textblock.h:25
Sets up association information.
Definition: association.h:33
A base class for classifier list items (e.g. attributes)
Definition: classifierlistitem.h:30
Information for a non-graphical Concept/Class.
Definition: classifier.h:40
QList< CodeClassField * > CodeClassFieldList
Definition: codeclassfieldlist.h:17
std::string Type
Definition: basictypes.h:351
Enum
Definition: basictypes.h:59
Definition: visibility.py:1
QList< UMLAssociation * > UMLAssociationList
Definition: umlassociationlist.h:18