umbrello  2.32.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 "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() 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 saveToXMI1(QXmlStreamWriter& writer);
83  virtual void loadFromXMI1(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 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
UMLObject::id
virtual Uml::ID::Type id() const
Definition: umlobject.cpp:420
umlrole.h
codeclassfield.h
umlattributelist.h
ClassifierCodeDocument::getParentClassifier
UMLClassifier * getParentClassifier() const
Definition: classifiercodedocument.cpp:278
ClassifierCodeDocument::hasAssociationClassFields
bool hasAssociationClassFields() const
Definition: classifiercodedocument.cpp:164
codegenfactory.h
CodeClassFieldDeclarationBlock
Definition: codeclassfielddeclarationblock.h:25
UMLObject::asUMLOperation
UMLOperation * asUMLOperation()
Definition: umlobject.cpp:1404
UMLAttributeList
Definition: umlattributelist.h:20
ClassifierCodeDocument::findCodeClassFieldFromParentID
CodeClassField * findCodeClassFieldFromParentID(Uml::ID::Type id, int role_id=-1)
Definition: classifiercodedocument.cpp:652
CodeClassField::ClassFieldType
ClassFieldType
Definition: codeclassfield.h:30
umloperationlist.h
ClassifierCodeDocument::loadFromXMI1
virtual void loadFromXMI1(QDomElement &root)
Definition: classifiercodedocument.cpp:739
codeclassfieldlist.h
CodeGenerator::cleanName
static QString cleanName(const QString &name)
Definition: codegenerator.cpp:546
CodeGenObjectWithTextBlocks::removeTextBlock
virtual bool removeTextBlock(TextBlock *remove_object)
Definition: codegenobjectwithtextblocks.cpp:91
ClassifierCodeDocument::hasAttributeClassFields
bool hasAttributeClassFields() const
Definition: classifiercodedocument.cpp:173
UMLObject::ot_Class
@ ot_Class
Definition: umlobject.h:85
operation.h
ClassifierCodeDocument::hasObjectVectorClassFields
bool hasObjectVectorClassFields() const
Definition: classifiercodedocument.cpp:127
CodeDocument::setFileName
void setFileName(const QString &new_var)
Definition: codedocument.cpp:50
Uml::RoleType::A
@ A
Definition: basictypes.h:237
CodeMethodBlock::syncToParent
virtual void syncToParent()
Definition: codemethodblock.cpp:167
ClassifierCodeDocument::syncNamesToParent
void syncNamesToParent()
Definition: classifiercodedocument.cpp:469
UMLObject::ot_Interface
@ ot_Interface
Definition: umlobject.h:82
CodeGenObjectWithTextBlocks::addTextBlock
virtual bool addTextBlock(TextBlock *add_object)
Definition: codegenobjectwithtextblocks.cpp:56
ClassifierCodeDocument::m_classfieldVector
CodeClassFieldList m_classfieldVector
Definition: classifiercodedocument.h:101
Uml::ID::toString
QString toString(const ID::Type &id)
Definition: basictypes.cpp:1300
association.h
ClassifierCodeDocument::declareClassFields
void declareClassFields(CodeClassFieldList &list, CodeGenObjectWithTextBlocks *parent)
Definition: classifiercodedocument.cpp:381
CodeAccessorMethod
Definition: codeaccessormethod.h:17
UMLObject::umlPackage
UMLPackage * umlPackage() const
Definition: umlobject.cpp:649
CodeClassField::Attribute
@ Attribute
Definition: codeclassfield.h:30
Uml::ID::Type
std::string Type
Definition: basictypes.h:371
CodeClassField
Definition: codeclassfield.h:25
CodeDocument
Definition: codedocument.h:29
ClassifierCodeDocument::removeAssociationClassField
void removeAssociationClassField(UMLAssociation *assoc)
Definition: classifiercodedocument.cpp:250
UMLObject
The base class for UML objects.
Definition: umlobject.h:69
Uml::RoleType::fromInt
Enum fromInt(int item)
Definition: basictypes.cpp:797
ClassifierCodeDocument::addCodeClassFieldMethods
void addCodeClassFieldMethods(CodeClassFieldList &list)
Definition: classifiercodedocument.cpp:356
UMLRole
Definition: umlrole.h:19
ClassifierCodeDocument::addAssociationClassField
void addAssociationClassField(UMLAssociation *assoc, bool syncToParentIfAdded=true)
Definition: classifiercodedocument.cpp:578
Uml::AssociationType::Association_Self
@ Association_Self
Definition: basictypes.h:97
CodeGenObjectWithTextBlocks::getTextBlockList
TextBlockList * getTextBlockList() const
Definition: codegenobjectwithtextblocks.cpp:45
UMLObject::baseType
ObjectType baseType() const
Definition: umlobject.cpp:392
codeoperation.h
ClassifierCodeDocument
Definition: classifiercodedocument.h:28
ClassifierCodeDocument::~ClassifierCodeDocument
virtual ~ClassifierCodeDocument()
Definition: classifiercodedocument.cpp:42
UMLAssociation::getUMLRole
UMLRole * getUMLRole(Uml::RoleType::Enum role) const
Definition: association.cpp:580
ClassifierCodeDocument::updateAssociationClassFields
void updateAssociationClassFields(UMLAssociationList &assocList)
Definition: classifiercodedocument.cpp:572
Uml::ID::fromString
ID::Type fromString(const QString &id)
Definition: basictypes.cpp:1305
ClassifierCodeDocument::removeCodeClassField
bool removeCodeClassField(CodeClassField *remove_object)
Definition: classifiercodedocument.cpp:227
CodeClassField::loadFromXMI1
virtual void loadFromXMI1(QDomElement &root)
Definition: codeclassfield.cpp:226
ClassifierCodeDocument::addCodeOperation
virtual bool addCodeOperation(CodeOperation *opBlock)=0
classifierlistitem.h
ClassifierCodeDocument::addAttributeClassField
void addAttributeClassField(UMLClassifierListItem *at, bool syncToParentIfAdded=true)
Definition: classifiercodedocument.cpp:202
it
and that you know you can do these things To protect your we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights These restrictions translate to certain responsibilities for you if you distribute copies of the or if you modify it For if you distribute copies of such a whether gratis or for a you must give the recipients all the rights that you have You must make sure that receive or can get the source code And you must show them these terms so they know their rights We protect your rights with two distribute and or modify the software for each author s protection and we want to make certain that everyone understands that there is no warranty for this free software If the software is modified by someone else and passed we want its recipients to know that what they have is not the so that any problems introduced by others will not reflect on the original authors reputations any free program is threatened constantly by software patents We wish to avoid the danger that redistributors of a free program will individually obtain patent in effect making the program proprietary To prevent we have made it clear that any patent must be licensed for everyone s free use or not licensed at all The precise terms and conditions for distribution and modification follow TERMS AND CONDITIONS FOR DISTRIBUTION AND MODIFICATION This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License The refers to any such program or and a work based on the Program means either the Program or any derivative work under copyright a work containing the Program or a portion of it
Definition: GPL-2.0-only.txt:64
CodeGenObjectWithTextBlocks
Definition: codegenobjectwithtextblocks.h:28
ClassifierCodeDocument::findCodeClassFieldTextBlockByTag
TextBlock * findCodeClassFieldTextBlockByTag(const QString &tag)
Definition: classifiercodedocument.cpp:774
attribute.h
CodeDocument::setAttributesOnNode
virtual void setAttributesOnNode(QXmlStreamWriter &writer)
Definition: codedocument.cpp:354
a
QString a
Definition: petalnode.cpp:13
UMLObject::asUMLRole
UMLRole * asUMLRole()
Definition: umlobject.cpp:1407
CodeOperation::findTag
static QString findTag(UMLOperation *op)
Definition: codeoperation.cpp:90
ClassifierCodeDocument::init
void init(UMLClassifier *classifier)
Definition: classifiercodedocument.cpp:431
classifiercodedocument.h
Uml::AssociationType::Association
@ Association
Definition: basictypes.h:96
ClassifierCodeDocument::synchronize
virtual void synchronize()
Definition: classifiercodedocument.cpp:483
ClassifierCodeDocument::ClassifierCodeDocument
ClassifierCodeDocument(UMLClassifier *parent)
Definition: classifiercodedocument.cpp:34
CodeAccessorMethodList
QList< CodeAccessorMethod * > CodeAccessorMethodList
Definition: codeaccessormethodlist.h:12
ClassifierCodeDocument::parentIsInterface
bool parentIsInterface() const
Definition: classifiercodedocument.cpp:421
ClassifierCodeDocument::initCodeClassFields
virtual void initCodeClassFields()
Definition: classifiercodedocument.cpp:543
ClassifierCodeDocument::parentIsClass
bool parentIsClass() const
Definition: classifiercodedocument.cpp:413
Uml::RoleType::B
@ B
Definition: basictypes.h:238
ClassifierCodeDocument::setAttributesOnNode
virtual void setAttributesOnNode(QXmlStreamWriter &writer)
Definition: classifiercodedocument.cpp:752
MyProject\connect
connect()
Definition: namespaces-multiple.php:5
ClassifierCodeDocument::getCodeClassFieldList
CodeClassFieldList * getCodeClassFieldList()
Definition: classifiercodedocument.cpp:269
CodeDocument::setPackage
void setPackage(UMLPackage *new_var)
Definition: codedocument.cpp:88
c
type show c for details The hypothetical commands show w and show c should show the appropriate parts of the General Public License Of the commands you use may be called something other than show w and show c
Definition: GPL-2.0-only.txt:301
ClassifierCodeDocument::loadClassFieldsFromXMI
void loadClassFieldsFromXMI(QDomElement &childElem)
Definition: classifiercodedocument.cpp:682
ClassifierCodeDocument::m_classFieldMap
QMap< UMLObject *, CodeClassField * > m_classFieldMap
Definition: classifiercodedocument.h:111
ClassifierCodeDocument::updateContent
virtual void updateContent()=0
UMLApp::app
static UMLApp * app()
Definition: uml.cpp:275
visibility
Definition: visibility.py:1
UMLAttribute
Sets up attribute information.
Definition: attribute.h:22
ClassifierCodeDocument::removeOperation
void removeOperation(UMLClassifierListItem *obj)
Definition: classifiercodedocument.cpp:334
ClassifierCodeDocument::m_parentclassifier
UMLClassifier * m_parentclassifier
Definition: classifiercodedocument.h:102
CodeParameter::getVisibility
Uml::Visibility::Enum getVisibility() const
Definition: codeparameter.cpp:88
codedocument.h
CodeDocument::updateHeader
void updateHeader()
Definition: codedocument.cpp:276
Uml::Visibility::Enum
Enum
Definition: basictypes.h:45
ClassifierCodeDocument::addCodeClassField
bool addCodeClassField(CodeClassField *add_object)
Definition: classifiercodedocument.cpp:185
CodeParameter::getStatic
bool getStatic()
Definition: codeparameter.cpp:56
ClassifierCodeDocument::saveToXMI1
virtual void saveToXMI1(QXmlStreamWriter &writer)
Definition: classifiercodedocument.cpp:716
HierarchicalCodeBlock
Definition: hierarchicalcodeblock.h:20
ClassifierCodeDocument::hasClassFields
bool hasClassFields() const
Definition: classifiercodedocument.cpp:154
classifier.h
CodeParameter::ID
QString ID() const
Definition: codeparameter.cpp:147
uError
#define uError()
Definition: debug_utils.h:109
UMLOperation
Definition: operation.h:19
CodeOperation
Definition: codeoperation.h:19
ClassifierCodeDocument::syncToParent
void syncToParent()
Definition: classifiercodedocument.cpp:534
uml.h
CodeDocument::findTextBlockByTag
TextBlock * findTextBlockByTag(const QString &tag, bool descendIntoChildren=false) const
Definition: codedocument.cpp:500
ClassifierCodeDocument::removeAttributeClassField
void removeAttributeClassField(UMLClassifierListItem *at)
Definition: classifiercodedocument.cpp:243
UMLClassifier
Information for a non-graphical Concept/Class.
Definition: classifier.h:34
debug_utils.h
umlassociationlist.h
UMLAssociation
Sets up association information.
Definition: association.h:28
ClassifierCodeDocument::updateOperations
void updateOperations()
Definition: classifiercodedocument.cpp:507
ClassifierCodeDocument::addOperation
void addOperation(UMLClassifierListItem *obj)
Definition: classifiercodedocument.cpp:305
TextBlockList
QList< TextBlock * > TextBlockList
Definition: textblocklist.h:12
codeaccessormethod.h
ClassifierCodeDocument::setAttributesFromNode
virtual void setAttributesFromNode(QDomElement &element)
Definition: classifiercodedocument.cpp:623
CodeClassField::getMethodList
CodeAccessorMethodList getMethodList() const
Definition: codeclassfield.cpp:188
ClassifierCodeDocument::getSpecificClassFields
CodeClassFieldList getSpecificClassFields(CodeClassField::ClassFieldType cfType) const
Definition: classifiercodedocument.cpp:52
UMLRole::role
Uml::RoleType::Enum role() const
Definition: umlrole.cpp:164
ClassifierCodeDocument::getCodeOperations
QList< const CodeOperation * > getCodeOperations() const
Definition: classifiercodedocument.cpp:287
ClassifierCodeDocument::syncClassFields
void syncClassFields()
Definition: classifiercodedocument.cpp:496
CodeClassFieldList
QList< CodeClassField * > CodeClassFieldList
Definition: codeclassfieldlist.h:12
TextBlock
Definition: textblock.h:22
codegenerator.h
CodeClassField::getDeclarationCodeBlock
CodeClassFieldDeclarationBlock * getDeclarationCodeBlock()
Definition: codeclassfield.cpp:218
CodeGenFactory::newCodeClassField
CodeClassField * newCodeClassField(ClassifierCodeDocument *ccd, UMLAttribute *at)
Definition: codegenfactory.cpp:261
UMLOperationList
QList< UMLOperation * > UMLOperationList
Definition: umloperationlist.h:12
CodeClassField::getClassFieldType
ClassFieldType getClassFieldType() const
Definition: codeclassfield.cpp:133
UMLRole::multiplicity
QString multiplicity() const
Definition: umlrole.cpp:108
UMLClassifierListItem
A base class for classifier list items (e.g. attributes)
Definition: classifierlistitem.h:24
CodeGenFactory::newCodeOperation
CodeOperation * newCodeOperation(ClassifierCodeDocument *ccd, UMLOperation *op)
Definition: codegenfactory.cpp:218
UMLAssociationList
QList< UMLAssociation * > UMLAssociationList
Definition: umlassociationlist.h:12
CodeParameter::getParentObject
UMLObject * getParentObject()
Definition: codeparameter.cpp:140
TextBlock::getTag
QString getTag() const
Definition: textblock.cpp:106
umldoc.h
CodeDocument::setAttributesFromNode
virtual void setAttributesFromNode(QDomElement &element)
Definition: codedocument.cpp:385
Uml::RoleType::Enum
Enum
Definition: basictypes.h:236