umbrello  2.31.70
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
bool removeCodeClassField(CodeClassField *remove_object)
Definition: classifiercodedocument.cpp:224
void addAttributeClassField(UMLClassifierListItem *at, bool syncToParentIfAdded=true)
Definition: classifiercodedocument.cpp:199
CodeClassFieldList getSpecificClassFields(CodeClassField::ClassFieldType cfType)
Definition: classifiercodedocument.cpp:54
virtual bool addCodeOperation(CodeOperation *opBlock)=0
Definition: codeclassfield.h:29
bool hasAttributeClassFields()
Definition: classifiercodedocument.cpp:170
TextBlock * findCodeClassFieldTextBlockByTag(const QString &tag)
Definition: classifiercodedocument.cpp:771
Information for a non-graphical Concept/Class.
Definition: classifier.h:39
virtual void initCodeClassFields()
Definition: classifiercodedocument.cpp:540
virtual void updateContent()=0
A base class for classifier list items (e.g. attributes)
Definition: classifierlistitem.h:29
void init(UMLClassifier *classifier)
Definition: classifiercodedocument.cpp:428
QList< UMLAssociation * > UMLAssociationList
Definition: umlassociationlist.h:18
Definition: classifiercodedocument.h:32
Enum
Definition: basictypes.h:59
ClassifierCodeDocument(UMLClassifier *parent)
Definition: classifiercodedocument.cpp:37
UMLClassifier * m_parentclassifier
Definition: classifiercodedocument.h:103
void removeOperation(UMLClassifierListItem *obj)
Definition: classifiercodedocument.cpp:331
bool addCodeClassField(CodeClassField *add_object)
Definition: classifiercodedocument.cpp:182
CodeClassFieldList * getCodeClassFieldList()
Definition: classifiercodedocument.cpp:266
virtual void setAttributesOnNode(QDomDocument &doc, QDomElement &blockElement)
Definition: classifiercodedocument.cpp:749
void loadClassFieldsFromXMI(QDomElement &childElem)
Definition: classifiercodedocument.cpp:679
QMap< UMLObject *, CodeClassField * > m_classFieldMap
Definition: classifiercodedocument.h:112
void addOperation(UMLClassifierListItem *obj)
Definition: classifiercodedocument.cpp:302
void updateOperations()
Definition: classifiercodedocument.cpp:504
UMLClassifier * getParentClassifier()
Definition: classifiercodedocument.cpp:275
void syncToParent()
Definition: classifiercodedocument.cpp:531
void syncClassFields()
Definition: classifiercodedocument.cpp:493
virtual void setAttributesFromNode(QDomElement &element)
Definition: classifiercodedocument.cpp:620
void removeAttributeClassField(UMLClassifierListItem *at)
Definition: classifiercodedocument.cpp:240
Sets up association information.
Definition: association.h:32
bool parentIsClass()
Definition: classifiercodedocument.cpp:410
ClassFieldType
Definition: codeclassfield.h:34
Definition: codeoperation.h:23
bool parentIsInterface()
Definition: classifiercodedocument.cpp:418
Definition: codedocument.h:32
virtual void loadFromXMI1(QDomElement &root)
Definition: classifiercodedocument.cpp:736
CodeClassField * findCodeClassFieldFromParentID(Uml::ID::Type id, int role_id=-1)
Definition: classifiercodedocument.cpp:649
Definition: codegenobjectwithtextblocks.h:31
virtual void saveToXMI1(QDomDocument &doc, QDomElement &root)
Definition: classifiercodedocument.cpp:713
std::string Type
Definition: basictypes.h:351
CodeClassFieldList m_classfieldVector
Definition: classifiercodedocument.h:102
QList< CodeOperation * > getCodeOperations()
Definition: classifiercodedocument.cpp:284
Definition: hierarchicalcodeblock.h:22
Definition: textblock.h:24
Definition: visibility.py:1
void syncNamesToParent()
Definition: classifiercodedocument.cpp:466
bool hasAssociationClassFields()
Definition: classifiercodedocument.cpp:161
void removeAssociationClassField(UMLAssociation *assoc)
Definition: classifiercodedocument.cpp:247
void declareClassFields(CodeClassFieldList &list, CodeGenObjectWithTextBlocks *parent)
Definition: classifiercodedocument.cpp:378
void addAssociationClassField(UMLAssociation *assoc, bool syncToParentIfAdded=true)
Definition: classifiercodedocument.cpp:575
bool hasObjectVectorClassFields()
Definition: classifiercodedocument.cpp:124
void updateAssociationClassFields(UMLAssociationList &assocList)
Definition: classifiercodedocument.cpp:569
QList< CodeClassField * > CodeClassFieldList
Definition: codeclassfieldlist.h:17
bool hasClassFields()
Definition: classifiercodedocument.cpp:151
void addCodeClassFieldMethods(CodeClassFieldList &list)
Definition: classifiercodedocument.cpp:353
virtual ~ClassifierCodeDocument()
Definition: classifiercodedocument.cpp:45
virtual void synchronize()
Definition: classifiercodedocument.cpp:480