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