mirror of
https://github.com/levinsv/pgadmin3.git
synced 2026-05-15 14:15:49 -06:00
226 lines
4.6 KiB
C++
226 lines
4.6 KiB
C++
//////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// pgAdmin III - PostgreSQL Tools
|
|
//
|
|
// Copyright (C) 2002 - 2016, The pgAdmin Development Team
|
|
// This software is released under the PostgreSQL Licence
|
|
//
|
|
// slCluster.h PostgreSQL Slony-I Cluster
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef SLCLUSTER_H
|
|
#define SLCLUSTER_H
|
|
|
|
#include "schema/pgDatabase.h"
|
|
|
|
class frmMain;
|
|
class RemoteConn;
|
|
class slNode;
|
|
|
|
|
|
WX_DECLARE_OBJARRAY(RemoteConn, RemoteConnArray);
|
|
|
|
|
|
class pgaSlClusterFactory : public pgDatabaseObjFactory
|
|
{
|
|
public:
|
|
pgaSlClusterFactory();
|
|
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);
|
|
};
|
|
extern pgaSlClusterFactory slClusterFactory;
|
|
|
|
|
|
class slCluster : public pgDatabaseObject
|
|
{
|
|
public:
|
|
slCluster(const wxString &newName = wxT(""));
|
|
|
|
void ShowTreeDetail(ctlTree *browser, frmMain *form = 0, ctlListView *properties = 0, ctlSQLBox *sqlPane = 0);
|
|
static pgObject *ReadObjects(pgCollection *coll, ctlTree *browser);
|
|
|
|
wxString GetTranslatedMessage(int kindOfMessage) const;
|
|
|
|
bool ClusterMinimumVersion(int major, int minor);
|
|
|
|
void iSetSchemaPrefix(const wxString &s)
|
|
{
|
|
schemaPrefix = s;
|
|
}
|
|
wxString GetSchemaPrefix() const
|
|
{
|
|
return schemaPrefix;
|
|
}
|
|
void iSetLocalNodeID(long l)
|
|
{
|
|
localNodeID = l;
|
|
}
|
|
long GetLocalNodeID()
|
|
{
|
|
return localNodeID;
|
|
}
|
|
void iSetLocalNodeName(const wxString &s)
|
|
{
|
|
localNodeName = s;
|
|
}
|
|
wxString GetLocalNodeName() const
|
|
{
|
|
return localNodeName;
|
|
}
|
|
void iSetAdminNodeID(long l)
|
|
{
|
|
adminNodeID = l;
|
|
}
|
|
long GetAdminNodeID()
|
|
{
|
|
return adminNodeID;
|
|
}
|
|
void iSetAdminNodeName(const wxString &s)
|
|
{
|
|
adminNodeName = s;
|
|
}
|
|
wxString GetAdminNodeName() const
|
|
{
|
|
return adminNodeName;
|
|
}
|
|
void iSetClusterVersion(const wxString &s)
|
|
{
|
|
clusterVersion = s;
|
|
}
|
|
wxString GetClusterVersion() const
|
|
{
|
|
return clusterVersion;
|
|
}
|
|
long GetSlonPid();
|
|
|
|
slNode *GetLocalNode(ctlTree *browser);
|
|
|
|
bool RequireDropConfirm()
|
|
{
|
|
return true;
|
|
}
|
|
bool WantDummyChild()
|
|
{
|
|
return true;
|
|
}
|
|
|
|
pgConn *GetNodeConn(frmMain *form, long nodeId, bool create = true);
|
|
|
|
bool DropObject(wxFrame *frame, ctlTree *browser, bool cascaded);
|
|
wxMenu *GetNewMenu();
|
|
wxString GetSql(ctlTree *browser);
|
|
pgObject *Refresh(ctlTree *browser, const wxTreeItemId item);
|
|
|
|
private:
|
|
wxString schemaPrefix;
|
|
wxString localNodeName, adminNodeName;
|
|
wxString clusterVersion;
|
|
long localNodeID, adminNodeID;
|
|
slNode *localNode;
|
|
|
|
RemoteConnArray remoteConns;
|
|
};
|
|
|
|
|
|
class slClusterCollection : public pgDatabaseObjCollection
|
|
{
|
|
public:
|
|
slClusterCollection(pgaFactory *factory, pgDatabase *db);
|
|
wxString GetTranslatedMessage(int kindOfMessage) const;
|
|
};
|
|
|
|
|
|
// Slony-I object
|
|
class slObject : public pgDatabaseObject
|
|
{
|
|
public:
|
|
slObject(slCluster *_slCluster, pgaFactory &factory, const wxString &newName = wxT(""));
|
|
slCluster *GetCluster()
|
|
{
|
|
return cluster;
|
|
}
|
|
|
|
void iSetSlId(long i)
|
|
{
|
|
slId = i;
|
|
}
|
|
long GetSlId() const
|
|
{
|
|
return slId;
|
|
}
|
|
|
|
private:
|
|
slCluster *cluster;
|
|
long slId;
|
|
};
|
|
|
|
|
|
// Collection of Slony-I objects
|
|
class slObjCollection : public pgDatabaseObjCollection
|
|
{
|
|
public:
|
|
slObjCollection(pgaFactory *factory, slCluster *_cluster);
|
|
|
|
slCluster *GetCluster()
|
|
{
|
|
return cluster;
|
|
}
|
|
long GetSlId() const
|
|
{
|
|
return slId;
|
|
}
|
|
void iSetSlId(long l)
|
|
{
|
|
slId = l;
|
|
}
|
|
|
|
private:
|
|
slCluster *cluster;
|
|
long slId;
|
|
};
|
|
|
|
class slObjFactory : public pgDatabaseObjFactory
|
|
{
|
|
public:
|
|
slObjFactory(const wxChar *tn, const wxChar *ns, const wxChar *nls, wxImage *img, wxImage *imgSm = 0) : pgDatabaseObjFactory(tn, ns, nls, img, imgSm) {}
|
|
virtual pgCollection *CreateCollection(pgObject *obj);
|
|
};
|
|
|
|
class clusterActionFactory : public contextActionFactory
|
|
{
|
|
public:
|
|
clusterActionFactory(menuFactoryList *list) : contextActionFactory(list) {}
|
|
bool CheckEnable(pgObject *obj);
|
|
};
|
|
|
|
|
|
class slonyRestartFactory : public clusterActionFactory
|
|
{
|
|
public:
|
|
slonyRestartFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar);
|
|
wxWindow *StartDialog(frmMain *form, pgObject *obj);
|
|
};
|
|
|
|
|
|
class slonyUpgradeFactory : public clusterActionFactory
|
|
{
|
|
public:
|
|
slonyUpgradeFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar);
|
|
wxWindow *StartDialog(frmMain *form, pgObject *obj);
|
|
};
|
|
|
|
|
|
class slonyFailoverFactory : public clusterActionFactory
|
|
{
|
|
public:
|
|
slonyFailoverFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar);
|
|
wxWindow *StartDialog(frmMain *form, pgObject *obj);
|
|
bool CheckEnable(pgObject *obj);
|
|
};
|
|
|
|
|
|
#endif
|
|
|
|
|