Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00045 #ifdef _MSC_VER
00046 #pragma once
00047 #endif
00048
00049 #ifndef OGDF_DINO_UML_TO_GRAPH_CONVERTER_H
00050 #define OGDF_DINO_UML_TO_GRAPH_CONVERTER_H
00051
00052 #include <ogdf/fileformats/DinoXmlParser.h>
00053 #include <ogdf/fileformats/DinoUmlModelGraph.h>
00054 #include <ogdf/fileformats/DinoUmlDiagramGraph.h>
00055 #include <ogdf/basic/UMLGraph.h>
00056
00057 namespace ogdf {
00058
00059
00060
00061
00080 class OGDF_EXPORT DinoUmlToGraphConverter {
00081
00082 private:
00083
00085 DinoXmlParser *m_xmlParser;
00086
00088 DinoUmlModelGraph *m_modelGraph;
00089
00093 SList<DinoUmlDiagramGraph*> m_diagramGraphs;
00094
00099 SList<UMLGraph*> m_diagramGraphsInUMLGraphFormat;
00100
00102 enum PredefinedInfoIndex {
00103 xmi = 0,
00104 xmiContent,
00105 xmiId,
00106 umlModel,
00107 umlNamespaceOwnedElement,
00108 umlClass,
00109 name,
00110 umlGeneralization,
00111 child,
00112 parent,
00113 umlAssociation,
00114 umlAssociationConnection,
00115 umlAssociationEnd,
00116 type,
00117 umlDiagram,
00118 rootUmlDiagramElement,
00119 umlDiagramElement,
00120 geometry,
00121 subject,
00122 umlPackage,
00123 umlInterface,
00124 umlDependency,
00125 client,
00126 supplier,
00127 diagramType,
00128 classDiagram,
00129 moduleDiagram,
00130
00131 nextPredefinedInfoIndex
00132 };
00133
00144 Hashing<int,NodeElement*> m_idToNode;
00145
00149 Hashing<int,EdgeElement*> m_idToEdge;
00150
00157 ofstream *m_logFile;
00158
00159 public:
00160
00174 DinoUmlToGraphConverter(const char *fileName);
00175
00182 ~DinoUmlToGraphConverter();
00183
00187 const DinoUmlModelGraph &getModelGraph() const {
00188 return *m_modelGraph;
00189 }
00190
00194 const SList<DinoUmlDiagramGraph*> & getDiagramGraphs () const {
00195 return m_diagramGraphs;
00196 }
00197
00201 const SList<UMLGraph*> & getDiagramGraphsInUMLGraphFormat () const {
00202 return m_diagramGraphsInUMLGraphFormat;
00203 }
00204
00208 void printDiagramsInUMLGraphFormat(ofstream &os);
00209
00213 void printIdToNodeMappingTable(ofstream &os);
00214
00215 private:
00216
00221 void initializePredefinedInfoIndices();
00222
00230 bool createModelGraph(DinoUmlModelGraph &modelGraph);
00231
00244 bool traversePackagesAndInsertClassifierNodes(const XmlTagObject ¤tRootTag,
00245 String currentPackageName,
00246 DinoUmlModelGraph &modelGraph);
00247
00260 bool insertSpecificClassifierNodes(const XmlTagObject ¤tRootTag,
00261 String currentPackageName,
00262 int desiredClassifier,
00263 DinoUmlModelGraph &modelGraph);
00264
00277 bool traversePackagesAndInsertAssociationEdges(const XmlTagObject ¤tRootTag,
00278 DinoUmlModelGraph &modelGraph);
00279
00292 bool traversePackagesAndInsertGeneralizationEdges(const XmlTagObject ¤tRootTag,
00293 DinoUmlModelGraph &modelGraph);
00294
00295
00302 bool insertDependencyEdges(const XmlTagObject ¤tRootTag,
00303 DinoUmlModelGraph &modelGraph);
00304
00312 bool createDiagramGraphs();
00313
00320 bool createDiagramGraphsInUMLGraphFormat(SList<UMLGraph*> &diagramGraphsInUMLGraphFormat);
00321
00322
00323 };
00324
00325
00326 }
00327
00328 #endif