1 ////////////////////////////////////////////////////////////////////////// 2 // 3 // pgAdmin III - PostgreSQL Tools 4 // 5 // Copyright (C) 2002 - 2016, The pgAdmin Development Team 6 // This software is released under the PostgreSQL Licence 7 // 8 // ddDatabaseDesign.h - Manages all design related info and contains all model(s) and tables. 9 // 10 ////////////////////////////////////////////////////////////////////////// 11 12 #ifndef DDDATABASEDESIGN_H 13 #define DDDATABASEDESIGN_H 14 15 #include <libxml/xmlwriter.h> 16 #include <ctl/ctlAuiNotebook.h> 17 18 #include "dd/ddmodel/ddDrawingEditor.h" 19 #include "hotdraw/tools/hdITool.h" 20 #include "dd/dditems/figures/ddTableFigure.h" 21 22 class ddModelBrowser; 23 24 enum 25 { 26 DDGENCREATE = 6000, 27 DDGENALTER, 28 DDGENDROPCRE, 29 DDGENNOTHING 30 }; 31 32 WX_DECLARE_STRING_HASH_MAP( wxString , tablesMappingHashMap ); 33 34 class ddDatabaseDesign : public wxObject 35 { 36 public: 37 ddDatabaseDesign(wxWindow *parent, wxWindow *frmOwner); 38 ~ddDatabaseDesign(); 39 hdDrawingView *getView(int diagramIndex); 40 ddDrawingEditor *getEditor(); 41 void addTableToModel(hdIFigure *figure); 42 void addTableToView(int diagramIndex, hdIFigure *figure); 43 void removeTable(int diagramIndex, hdIFigure *figure); 44 hdDrawing *createDiagram(wxWindow *owner, wxString name, bool fromXml); 45 void deleteDiagram(int diagramIndex, bool deleteView = true); 46 void refreshDraw(int diagramIndex); 47 void eraseDiagram(int diagramIndex); 48 void emptyModel(); 49 wxArrayString getDiagramTables(int diagramIndex); 50 wxString generateDiagram(int diagramIndex, wxString schemaName); 51 wxArrayString getModelTables(); 52 wxString generateModel(wxString schemaName); 53 wxString generateList(wxArrayString tables, wxArrayInt options, pgConn *connection = NULL, wxString schemaName = wxEmptyString); 54 bool validateModel(wxString &errors); 55 ddTableFigure *getSelectedTable(int diagramIndex); 56 ddTableFigure *getTable(wxString tableName); 57 bool writeXmlModel(wxString file); 58 bool readXmlModel(wxString file, ctlAuiNotebook *notebook); 59 60 wxString getTableId(wxString tableName); 61 void addTableToMapping(wxString IdKey, wxString tableName); 62 wxString getTableName(wxString Id); 63 void registerBrowser(ddModelBrowser *browser); 64 void refreshBrowser(); 65 static wxString getVersionXML(); 66 void markSchemaOn(wxArrayString tables); 67 void unMarkSchemaOnAll(); 68 69 protected: 70 tablesMappingHashMap mappingNameToId; 71 tablesMappingHashMap mappingIdToName; 72 private: 73 ddModelBrowser *attachedBrowser; 74 int diagramCounter; 75 ddDrawingEditor *editor; 76 hdITool *tool; 77 xmlTextWriterPtr xmlWriter; 78 79 }; 80 #endif 81