umbrello API Documentation

xmlschemawriter.h

00001 /***************************************************************************
00002                           xmlschemawriter.h  -  description
00003                              -------------------
00004     copyright            : (C) 2003 Brian Thomas
00005  ***************************************************************************/
00006 
00007 /***************************************************************************
00008  *                                                                         *
00009  *   This program is free software; you can redistribute it and/or modify  *
00010  *   it under the terms of the GNU General Public License as published by  *
00011  *   the Free Software Foundation; either version 2 of the License, or     *
00012  *   (at your option) any later version.                                   *
00013  *                                                                         *
00014  *   copyright (C) 2004-2007                                               *
00015  *   Umbrello UML Modeller Authors <uml-devel@uml.sf.net>                  *
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      * The basic schemaNamespace URI
00235      */
00236     QString schemaNamespaceURI;
00237 
00241     QString packageNamespaceURI;
00242 
00246     QString startline;
00247 
00251     UMLClassifierList writtenClassifiers;
00252 };
00253 
00254 #endif // XMLSCHEMAWRITER_H
KDE Logo
This file is part of the documentation for umbrello Version 3.1.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Jun 26 08:08:03 2007 by doxygen 1.4.1 written by Dimitri van Heesch, © 1997-2003