File: pgForeignServer.h

package info (click to toggle)
pgadmin3 1.20.0~beta2-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 73,704 kB
  • ctags: 18,591
  • sloc: cpp: 193,786; ansic: 18,736; sh: 5,154; pascal: 1,120; yacc: 927; makefile: 516; lex: 421; xml: 126; perl: 40
file content (145 lines) | stat: -rw-r--r-- 3,523 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
//////////////////////////////////////////////////////////////////////////
//
// pgAdmin III - PostgreSQL Tools
//
// Copyright (C) 2002 - 2014, The pgAdmin Development Team
// This software is released under the PostgreSQL Licence
//
// pgForeignServer.h PostgreSQL Foreign Server
//
//////////////////////////////////////////////////////////////////////////

#ifndef PGFOREIGNSERVER_H
#define PGFOREIGNSERVER_H

#include "pgForeignDataWrapper.h"

class pgCollection;
class pgForeignServerFactory : public pgForeignDataWrapperObjFactory
{
public:
	pgForeignServerFactory();
	virtual dlgProperty *CreateDialog(frmMain *frame, pgObject *node, pgObject *parent);
	virtual pgObject *CreateObjects(pgCollection *obj, ctlTree *browser, const wxString &restr = wxEmptyString);
};
extern pgForeignServerFactory foreignServerFactory;


class pgForeignServer : public pgForeignDataWrapperObject
{
public:
	pgForeignServer(pgForeignDataWrapper *newForeignDataWrapper, const wxString &newName = wxT(""));
	wxString GetTranslatedMessage(int kindOfMessage) const;

	void ShowTreeDetail(ctlTree *browser, frmMain *form = 0, ctlListView *properties = 0, ctlSQLBox *sqlPane = 0);
	wxMenu *GetNewMenu();
	bool CanDropCascaded()
	{
		return true;
	}
	bool CanCreate()
	{
		return true;
	}
	wxString GetType() const
	{
		return type;
	}
	void iSetType(const wxString &s)
	{
		type = s;
	}
	wxString GetVersion() const
	{
		return version;
	}
	void iSetVersion(const wxString &s)
	{
		version = s;
	}
	wxString GetOptions() const
	{
		return options;
	}
	wxString GetCreateOptions();
	void iSetOptions(const wxString &s)
	{
		options = s;
	}

	bool DropObject(wxFrame *frame, ctlTree *browser, bool cascaded);
	wxString GetSql(ctlTree *browser);
	pgObject *Refresh(ctlTree *browser, const wxTreeItemId item);

	bool HasStats()
	{
		return false;
	}
	bool HasDepends()
	{
		return true;
	}
	bool HasReferences()
	{
		return true;
	}

private:
	wxString type, version, options;
};


class pgForeignServerObjFactory : public pgForeignDataWrapperObjFactory
{
public:
	pgForeignServerObjFactory(const wxChar *tn, const wxChar *ns, const wxChar *nls, wxImage *img, wxImage *imgSm = 0)
		: pgForeignDataWrapperObjFactory(tn, ns, nls, img, imgSm) {}
	virtual pgCollection *CreateCollection(pgObject *obj);
};


// Object that lives in a foreign server
class pgForeignServerObject : public pgForeignDataWrapperObject
{
public:
	pgForeignServerObject(pgForeignServer *newForeignServer, pgaFactory &factory, const wxString &newName = wxEmptyString) : pgForeignDataWrapperObject(newForeignServer->GetForeignDataWrapper(), factory, newName)
	{
		SetForeignServer(newForeignServer);
	}
	pgForeignServerObject(pgForeignServer *newForeignServer, int newType, const wxString &newName = wxT("")) : pgForeignDataWrapperObject(newForeignServer->GetForeignDataWrapper(), newType, newName)
	{
		SetForeignServer(newForeignServer);
	}

	bool CanDrop();
	bool CanEdit()
	{
		return true;
	}
	bool CanCreate();

	void SetForeignServer(pgForeignServer *newForeignServer);
	virtual pgForeignServer *GetForeignServer() const
	{
		return srv;
	}
	pgSet *ExecuteSet(const wxString &sql);
	wxString ExecuteScalar(const wxString &sql);
	bool ExecuteVoid(const wxString &sql);


protected:
	virtual void SetContextInfo(frmMain *form);

	pgForeignServer *srv;
};


class pgForeignServerObjCollection : public pgCollection
{
public:
	pgForeignServerObjCollection(pgaFactory *factory, pgForeignServer *newsrv);
	wxString GetTranslatedMessage(int kindOfMessage) const;
};

#endif