mirror of
https://github.com/levinsv/pgadmin3.git
synced 2026-05-16 06:05:49 -06:00
360 lines
7.4 KiB
C++
360 lines
7.4 KiB
C++
//////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// pgAdmin III - PostgreSQL Tools
|
|
//
|
|
// Copyright (C) 2002 - 2016, The pgAdmin Development Team
|
|
// This software is released under the PostgreSQL Licence
|
|
//
|
|
// pgDatabase.h - PostgreSQL Database
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef PGDATABASE_H
|
|
#define PGDATABASE_H
|
|
|
|
#include "pgServer.h"
|
|
|
|
class pgDatabaseFactory : public pgServerObjFactory
|
|
{
|
|
public:
|
|
pgDatabaseFactory();
|
|
virtual dlgProperty *CreateDialog(frmMain *frame, pgObject *node, pgObject *parent);
|
|
virtual pgObject *CreateObjects(pgCollection *obj, ctlTree *browser, const wxString &restr = wxEmptyString);
|
|
virtual pgCollection *CreateCollection(pgObject *obj);
|
|
|
|
int GetClosedIconId()
|
|
{
|
|
return WantSmallIcon() ? smallClosedId : closedId;
|
|
}
|
|
protected:
|
|
int closedId, smallClosedId;
|
|
};
|
|
|
|
extern pgDatabaseFactory databaseFactory;
|
|
|
|
|
|
// Class declarations
|
|
class pgDatabase : public pgServerObject
|
|
{
|
|
public:
|
|
pgDatabase(const wxString &newName = wxT(""));
|
|
~pgDatabase();
|
|
wxString GetTranslatedMessage(int kindOfMessage) const;
|
|
int GetIconId();
|
|
|
|
static wxString GetDefaultPrivileges(const wxChar &cType, wxString strDefPrivs, const wxString &strSchema);
|
|
|
|
pgDatabase *GetDatabase() const
|
|
{
|
|
return (pgDatabase *)this;
|
|
}
|
|
bool BackendMinimumVersion(int major, int minor)
|
|
{
|
|
return connection()->BackendMinimumVersion(major, minor);
|
|
}
|
|
bool BackendMinimumVersion(int major, int minor, int patch)
|
|
{
|
|
return connection()->BackendMinimumVersion(major, minor, patch);
|
|
}
|
|
|
|
void ShowTreeDetail(ctlTree *browser, frmMain *form = 0, ctlListView *properties = 0, ctlSQLBox *sqlPane = 0);
|
|
void ShowHint(frmMain *form, bool force);
|
|
void ShowStatistics(frmMain *form, ctlListView *statistics);
|
|
|
|
pgSet *ExecuteSet(const wxString &sql);
|
|
wxString ExecuteScalar(const wxString &sql);
|
|
bool ExecuteVoid(const wxString &sql, bool reportError = true);
|
|
void UpdateDefaultSchema();
|
|
|
|
pgConn *CreateConn(const wxString &applicationname)
|
|
{
|
|
return server->CreateConn(GetName(), GetOid(), applicationname);
|
|
}
|
|
|
|
wxString GetPrettyOption() const
|
|
{
|
|
return prettyOption;
|
|
}
|
|
|
|
bool GetCreatePrivilege() const
|
|
{
|
|
return createPrivilege;
|
|
}
|
|
void iSetCreatePrivilege(const bool b)
|
|
{
|
|
createPrivilege = b;
|
|
}
|
|
|
|
// Default Privileges on ALL
|
|
wxString GetDefPrivsOnTables()
|
|
{
|
|
return m_defPrivsOnTables;
|
|
}
|
|
wxString GetDefPrivsOnSequences()
|
|
{
|
|
return m_defPrivsOnSeqs;
|
|
}
|
|
wxString GetDefPrivsOnFunctions()
|
|
{
|
|
return m_defPrivsOnFuncs;
|
|
}
|
|
wxString GetDefPrivsOnTypes()
|
|
{
|
|
return m_defPrivsOnTypes;
|
|
}
|
|
|
|
wxString GetPath() const
|
|
{
|
|
return path;
|
|
};
|
|
void iSetPath(const wxString &newVal)
|
|
{
|
|
path = newVal;
|
|
}
|
|
wxString GetTablespace() const
|
|
{
|
|
return tablespace;
|
|
};
|
|
void iSetTablespace(const wxString &newVal)
|
|
{
|
|
tablespace = newVal;
|
|
}
|
|
OID GetTablespaceOid() const
|
|
{
|
|
return tablespaceOid;
|
|
};
|
|
void iSetTablespaceOid(const OID newVal)
|
|
{
|
|
tablespaceOid = newVal;
|
|
}
|
|
wxString GetDefaultTablespace() const
|
|
{
|
|
return defaultTablespace;
|
|
};
|
|
void iSetDefaultTablespace(const wxString &newVal)
|
|
{
|
|
defaultTablespace = newVal;
|
|
}
|
|
wxString GetEncoding() const
|
|
{
|
|
return encoding;
|
|
}
|
|
void iSetEncoding(const wxString &newVal)
|
|
{
|
|
encoding = newVal;
|
|
}
|
|
wxString GetSchemaRestriction()
|
|
{
|
|
return schemaRestriction;
|
|
}
|
|
void iSetSchemaRestriction(const wxString &s)
|
|
{
|
|
schemaRestriction = s;
|
|
}
|
|
wxString GetCollate() const
|
|
{
|
|
return collate;
|
|
}
|
|
void iSetCollate( const wxString &newVal)
|
|
{
|
|
collate = newVal;
|
|
}
|
|
wxString GetCType() const
|
|
{
|
|
return ctype;
|
|
}
|
|
void iSetCType( const wxString &newVal)
|
|
{
|
|
ctype = newVal;
|
|
}
|
|
long GetConnectionLimit()
|
|
{
|
|
return connectionLimit;
|
|
}
|
|
void iSetConnectionLimit(long newVal)
|
|
{
|
|
connectionLimit = newVal;
|
|
}
|
|
|
|
wxArrayString &GetVariables()
|
|
{
|
|
return variables;
|
|
}
|
|
bool GetAllowConnections() const
|
|
{
|
|
return allowConnections;
|
|
}
|
|
void iSetAllowConnections(bool newVal)
|
|
{
|
|
allowConnections = newVal;
|
|
}
|
|
wxString GetSearchPath() const
|
|
{
|
|
return searchPath;
|
|
}
|
|
wxString GetSchemaPrefix(const wxString &schemaname) const;
|
|
wxString GetQuotedSchemaPrefix(const wxString &schemaname) const;
|
|
wxString GetDefaultSchema()
|
|
{
|
|
return defaultSchema;
|
|
};
|
|
bool GetConnected()
|
|
{
|
|
return connected;
|
|
}
|
|
bool GetSystemObject() const;
|
|
long GetMissingFKs() const
|
|
{
|
|
return missingFKs;
|
|
}
|
|
wxArrayString GetSlonyClusters(ctlTree *browser);
|
|
|
|
|
|
|
|
bool DropObject(wxFrame *frame, ctlTree *browser, bool cascaded);
|
|
bool CanCreate();
|
|
bool CanMaintenance()
|
|
{
|
|
return connected;
|
|
}
|
|
bool CanBackup()
|
|
{
|
|
return connected;
|
|
}
|
|
bool CanRestore()
|
|
{
|
|
return connected;
|
|
}
|
|
bool GetCanHint();
|
|
bool RequireDropConfirm()
|
|
{
|
|
return true;
|
|
}
|
|
pgConn *connection();
|
|
int Connect();
|
|
void Disconnect();
|
|
void CheckAlive();
|
|
void AppendSchemaChange(const wxString &sql);
|
|
wxString GetSchemaChanges()
|
|
{
|
|
return schemaChanges;
|
|
}
|
|
void ClearSchemaChanges()
|
|
{
|
|
schemaChanges = wxEmptyString;
|
|
}
|
|
|
|
wxMenu *GetNewMenu();
|
|
wxString GetSql(ctlTree *browser);
|
|
pgObject *Refresh(ctlTree *browser, const wxTreeItemId item);
|
|
|
|
bool HasStats()
|
|
{
|
|
return false;
|
|
}
|
|
bool HasDepends()
|
|
{
|
|
return true;
|
|
}
|
|
bool HasReferences()
|
|
{
|
|
return true;
|
|
}
|
|
|
|
bool CanDebugPlpgsql();
|
|
bool CanDebugEdbspl();
|
|
|
|
private:
|
|
pgConn *conn;
|
|
bool connected;
|
|
bool useServerConnection;
|
|
wxString searchPath, path, tablespace, defaultTablespace, encoding, collate, ctype;
|
|
wxString prettyOption, defaultSchema;
|
|
bool allowConnections, createPrivilege;
|
|
long missingFKs;
|
|
long connectionLimit;
|
|
wxArrayString variables;
|
|
|
|
wxString schemaChanges;
|
|
wxString schemaRestriction;
|
|
wxString m_defPrivsOnTables, m_defPrivsOnSeqs, m_defPrivsOnFuncs, m_defPrivsOnTypes;
|
|
|
|
int canDebugPlpgsql, canDebugEdbspl;
|
|
|
|
OID tablespaceOid;
|
|
};
|
|
|
|
class pgDatabaseCollection : public pgServerObjCollection
|
|
{
|
|
public:
|
|
pgDatabaseCollection(pgaFactory *factory, pgServer *sv);
|
|
wxString GetTranslatedMessage(int kindOfMessage) const;
|
|
void ShowStatistics(frmMain *form, ctlListView *statistics);
|
|
};
|
|
|
|
|
|
////////////////////////////////////////////////
|
|
|
|
class pgDatabaseObjFactory : public pgServerObjFactory
|
|
{
|
|
public:
|
|
pgDatabaseObjFactory(const wxChar *tn, const wxChar *ns, const wxChar *nls, wxImage *img, wxImage *imgSm = 0)
|
|
: pgServerObjFactory(tn, ns, nls, img, imgSm) {}
|
|
virtual pgCollection *CreateCollection(pgObject *obj);
|
|
};
|
|
|
|
class disconnectDatabaseFactory : public contextActionFactory
|
|
{
|
|
public:
|
|
disconnectDatabaseFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar);
|
|
wxWindow *StartDialog(frmMain *form, pgObject *obj);
|
|
bool CheckEnable(pgObject *obj);
|
|
};
|
|
|
|
|
|
// Object that lives in a database
|
|
class pgDatabaseObject : public pgObject
|
|
{
|
|
public:
|
|
pgDatabaseObject(pgaFactory &factory, const wxString &newName = wxEmptyString) : pgObject(factory, newName) {}
|
|
pgDatabaseObject(int newType, const wxString &newName) : pgObject(newType, newName) {}
|
|
|
|
void iSetDatabase(pgDatabase *newDatabase)
|
|
{
|
|
database = newDatabase;
|
|
}
|
|
pgDatabase *GetDatabase() const
|
|
{
|
|
return database;
|
|
}
|
|
pgServer *GetServer() const;
|
|
|
|
void DisplayStatistics(ctlListView *statistics, const wxString &query);
|
|
|
|
// compiles a prefix from the schema name with '.', if necessary
|
|
wxString GetSchemaPrefix(const wxString &schemaname) const;
|
|
wxString GetQuotedSchemaPrefix(const wxString &schemaname) const;
|
|
|
|
bool CanDrop();
|
|
bool CanEdit()
|
|
{
|
|
return true;
|
|
}
|
|
bool CanCreate();
|
|
|
|
protected:
|
|
pgDatabase *database;
|
|
};
|
|
|
|
|
|
// collection of pgDatabaseObject
|
|
class pgDatabaseObjCollection : public pgCollection
|
|
{
|
|
public:
|
|
pgDatabaseObjCollection(pgaFactory *factory, pgDatabase *db);
|
|
bool CanCreate();
|
|
};
|
|
|
|
|
|
|
|
#endif
|