pgadmin3/include/utils/pgconfig.h
lsv 2734a746a9 Migration to wxWidgets 3.1.5
Выполнен переход на новые библтотеки. Устранены проблемы совместимости.
Множество мелких правок.
2021-05-21 11:09:20 +05:00

243 lines
3.8 KiB
C++

//////////////////////////////////////////////////////////////////////////
//
// pgAdmin III - PostgreSQL Tools
//
// Copyright (C) 2002 - 2016, The pgAdmin Development Team
// This software is released under the PostgreSQL Licence
//
// pgconfig.h - backend configuration classes
//
//////////////////////////////////////////////////////////////////////////
#ifndef __PGCONFIG
#define __PGCONFIG
#include <wx/hashmap.h>
class pgSet;
class pgConn;
class pgSettingItem;
class pgConfigLine
{
public:
pgConfigLine()
{
item = 0;
isComment = false;
}
pgConfigLine(pgConfigLine *line);
bool Differs(pgConfigLine *line);
wxString GetNewText();
pgSettingItem *item;
wxString value;
wxString comment;
bool isComment;
};
class pgConfigOrgLine : public pgConfigLine
{
public:
pgConfigOrgLine(const wxString str) : pgConfigLine()
{
text = str;
}
pgConfigOrgLine(pgConfigLine *line);
wxString GetNewText();
wxString text;
wxString commentIndent;
};
class pgHbaConfigLine
{
public:
pgHbaConfigLine(const wxString &line = wxEmptyString);
wxString GetText();
const wxChar *GetConnectType();
const wxChar *GetMethod();
void Init(const wxString &line);
enum pgHbaConnectType
{
PGC_LOCAL = 0,
PGC_HOST,
PGC_HOSTSSL,
PGC_HOSTNOSSL,
PGC_INVALIDCONF
};
enum pgHbaMethod
{
PGC_TRUST = 0,
PGC_REJECT,
PGC_MD5,
PGC_CRYPT,
PGC_PASSWORD,
PGC_KRB4,
PGC_KRB5,
PGC_IDENT,
PGC_PAM,
PGC_LDAP,
PGC_GSS,
PGC_SSPI,
PGC_CERT,
PGC_PEER,
PGC_RADIUS,
PGC_SCRAM_SHA_256,
PGC_INVALIDMETHOD
};
wxString text;
wxString database, user, ipaddress, option;
pgHbaConnectType connectType;
pgHbaMethod method;
long item;
bool isValid;
bool isComment;
bool changed;
};
class pgPassConfigLine
{
public:
pgPassConfigLine(const wxString &line = wxEmptyString);
wxString GetText();
void Init(const wxString &line);
wxString text;
wxString hostname, port, database, username, password;
long item;
bool isComment;
};
class pgSettingItem
{
public:
enum pgConfigType
{
PGC_BOOL = 0,
PGC_INT,
PGC_REAL,
PGC_STRING
};
enum pgConfigContext
{
PGC_INTERNAL = 0,
PGC_POSTMASTER,
PGC_SIGHUP,
PGC_BACKEND,
PGC_SUSET,
PGC_USERLIMIT,
PGC_USERSET,
PGC_UNKNOWNCONTEXT
};
enum pgConfigSource
{
PGC_DEFAULT = 0,
PGC_ENVIRONMENT,
PGC_FILE,
PGC_ARGV,
PGC_UNPRIV,
PGC_DATABASE,
PGC_USER,
PGC_CLIENT,
PGC_OVERRIDE,
PGC_INTERACTIVE,
PGC_TEST,
PGC_SESSION,
PGC_UNKNOWNSOURCE
};
pgSettingItem()
{
orgLine = 0;
newLine = 0;
source = PGC_UNKNOWNSOURCE;
context = PGC_UNKNOWNCONTEXT;
}
~pgSettingItem()
{
if (newLine) delete newLine;
}
void SetType(const wxString &str);
void SetContext(const wxString &str);
void SetSource(const wxString &str);
wxString GetActiveValue();
wxString name;
wxString category;
wxString short_desc;
wxString extra_desc;
wxString value;
pgConfigType type;
pgConfigContext context;
pgConfigSource source;
wxString min_val, max_val;
pgConfigLine *newLine;
pgConfigOrgLine *orgLine;
};
WX_DECLARE_HASH_MAP(wxString, pgSettingItem *, wxStringHash, wxStringEqual, pgSettingItemHashmap);
WX_DECLARE_HASH_MAP(wxString, wxArrayString *, wxStringHash, wxStringEqual, pgCategoryHashmap);
class pgSettingReader
{
public:
virtual bool IsValid() = 0;
virtual pgSettingItem *GetNextItem() = 0;
virtual ~pgSettingReader() {}
};
class pgSettingFileReader : public pgSettingReader
{
wxString columnNames;
wxString buffer;
wxChar *bp;
public:
pgSettingFileReader(bool localized);
~pgSettingFileReader();
virtual bool IsValid()
{
return !buffer.IsEmpty();
}
virtual pgSettingItem *GetNextItem();
};
class pgSettingDbReader : public pgSettingReader
{
pgSet *set;
public:
pgSettingDbReader(pgConn *conn);
~pgSettingDbReader();
virtual bool IsValid()
{
return set != NULL;
}
virtual pgSettingItem *GetNextItem();
};
#endif