xmlschemawriter.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef XMLSCHEMAWRITER_H
00019 #define XMLSCHEMAWRITER_H
00020
00021 #include "../codegenerator.h"
00022 #include "../attribute.h"
00023 #include "../association.h"
00024 #include "../umlclassifierlist.h"
00025 #include "../umlattributelist.h"
00026 #include "../umlobjectlist.h"
00027 #include "../umlassociationlist.h"
00028 #include "simplecodegenerator.h"
00029
00043 class XMLSchemaWriter : public SimpleCodeGenerator
00044 {
00045 Q_OBJECT
00046 public:
00047
00051 XMLSchemaWriter();
00052
00056 virtual ~XMLSchemaWriter();
00057
00062 virtual void writeClass(UMLClassifier *c);
00063
00067 virtual Uml::Programming_Language getLanguage();
00068
00072 virtual const QStringList reservedKeywords() const;
00073
00074 private:
00075
00079 void writeClassifier(UMLClassifier *c, QTextStream &XMLSchema);
00080 void writeAbstractClassifier(UMLClassifier *c, QTextStream &XMLSchema);
00081 void writeConcreteClassifier(UMLClassifier *c, QTextStream &XMLSchema);
00082
00086 void writeComplexTypeClassifierDecl(UMLClassifier *c,
00087 UMLAssociationList associations,
00088 UMLAssociationList aggregations,
00089 UMLAssociationList compositions,
00090 UMLClassifierList superclassifiers,
00091 QTextStream &XMLSchema);
00092
00097 void writeGroupClassifierDecl(UMLClassifier *c,
00098 UMLClassifierList superclassifiers,
00099 QTextStream &XMLSchema);
00100
00104 bool determineIfHasChildNodes( UMLClassifier *c);
00105
00111 void writeAttributes(UMLClassifier *c, QTextStream &j);
00112
00116 void writeElementDecl( const QString &elementName, const QString &elementTypeName, QTextStream &XMLschema);
00117
00123 void writeAttributeDecls(UMLAttributeList &attribs, QTextStream &XMLschema );
00124
00128 void writeAttributeDecl(UMLAttribute *attrib, QTextStream &XMLschema );
00129
00133 UMLAttributeList findAttributes (UMLClassifier *c);
00134
00139 QStringList findAttributeGroups (UMLClassifier *c);
00140
00146 bool writeAssociationDecls(UMLAssociationList associations, bool noRoleOK, bool didOne,
00147 Uml::IDType id, QTextStream &XMLschema);
00148
00152 void writeAttributeGroupDecl(const QString &elementName, UMLAttributeList &attribs, QTextStream &XMLschema );
00153
00157 void writeAssociationRoleDecl(UMLClassifier *c, const QString &multi, QTextStream &XMLschema);
00158
00162 QString makeSchemaTag ( QString tagName );
00163
00167 QString makePackageTag ( QString tagName );
00168
00172 void writeComment(const QString &text, QTextStream &XMLschema);
00173
00178 UMLObjectList findChildObjsInAssociations (UMLClassifier *c, UMLAssociationList associations);
00179
00183 QString fixTypeName(const QString& string);
00184
00189 QString fixInitialStringDeclValue( QString value, const QString &type);
00190
00194 QString getElementName(UMLClassifier *c);
00195
00200 QString getElementTypeName(UMLClassifier *c);
00201
00205 QString getElementGroupTypeName(UMLClassifier *c);
00206
00211 void writeChildObjsInAssociation (UMLClassifier *c, UMLAssociationList assoc, QTextStream &s);
00212
00216 bool hasBeenWritten(UMLClassifier *c);
00217
00221 void markAsWritten(UMLClassifier *c);
00222
00226 QString schemaNamespaceTag;
00227
00231 QString packageNamespaceTag;
00232
00233
00234
00235
00236 QString schemaNamespaceURI;
00237
00241 QString packageNamespaceURI;
00242
00246 QString startline;
00247
00251 UMLClassifierList writtenClassifiers;
00252 };
00253
00254 #endif // XMLSCHEMAWRITER_H
This file is part of the documentation for umbrello Version 3.1.0.