pgadmin3/include/dd/ddmodel/ddDatabaseDesign.h
2020-07-07 22:19:12 +05:00

80 lines
2.5 KiB
C++

//////////////////////////////////////////////////////////////////////////
//
// pgAdmin III - PostgreSQL Tools
//
// Copyright (C) 2002 - 2016, The pgAdmin Development Team
// This software is released under the PostgreSQL Licence
//
// ddDatabaseDesign.h - Manages all design related info and contains all model(s) and tables.
//
//////////////////////////////////////////////////////////////////////////
#ifndef DDDATABASEDESIGN_H
#define DDDATABASEDESIGN_H
#include <libxml/xmlwriter.h>
#include <ctl/ctlAuiNotebook.h>
#include "dd/ddmodel/ddDrawingEditor.h"
#include "hotdraw/tools/hdITool.h"
#include "dd/dditems/figures/ddTableFigure.h"
class ddModelBrowser;
enum
{
DDGENCREATE = 6000,
DDGENALTER,
DDGENDROPCRE,
DDGENNOTHING
};
WX_DECLARE_STRING_HASH_MAP( wxString , tablesMappingHashMap );
class ddDatabaseDesign : public wxObject
{
public:
ddDatabaseDesign(wxWindow *parent, wxWindow *frmOwner);
~ddDatabaseDesign();
hdDrawingView *getView(int diagramIndex);
ddDrawingEditor *getEditor();
void addTableToModel(hdIFigure *figure);
void addTableToView(int diagramIndex, hdIFigure *figure);
void removeTable(int diagramIndex, hdIFigure *figure);
hdDrawing *createDiagram(wxWindow *owner, wxString name, bool fromXml);
void deleteDiagram(int diagramIndex, bool deleteView = true);
void refreshDraw(int diagramIndex);
void eraseDiagram(int diagramIndex);
void emptyModel();
wxArrayString getDiagramTables(int diagramIndex);
wxString generateDiagram(int diagramIndex, wxString schemaName);
wxArrayString getModelTables();
wxString generateModel(wxString schemaName);
wxString generateList(wxArrayString tables, wxArrayInt options, pgConn *connection = NULL, wxString schemaName = wxEmptyString);
bool validateModel(wxString &errors);
ddTableFigure *getSelectedTable(int diagramIndex);
ddTableFigure *getTable(wxString tableName);
bool writeXmlModel(wxString file);
bool readXmlModel(wxString file, ctlAuiNotebook *notebook);
wxString getTableId(wxString tableName);
void addTableToMapping(wxString IdKey, wxString tableName);
wxString getTableName(wxString Id);
void registerBrowser(ddModelBrowser *browser);
void refreshBrowser();
static wxString getVersionXML();
void markSchemaOn(wxArrayString tables);
void unMarkSchemaOnAll();
protected:
tablesMappingHashMap mappingNameToId;
tablesMappingHashMap mappingIdToName;
private:
ddModelBrowser *attachedBrowser;
int diagramCounter;
ddDrawingEditor *editor;
hdITool *tool;
xmlTextWriterPtr xmlWriter;
};
#endif