////////////////////////////////////////////////////////////////////////// // // pgAdmin III - PostgreSQL Tools // // Copyright (C) 2002 - 2016, The pgAdmin Development Team // This software is released under the PostgreSQL Licence // // pgColumn.h PostgreSQL Column // ////////////////////////////////////////////////////////////////////////// #ifndef PGCOLUMN_H #define PGCOLUMN_H // App headers #include "pgTable.h" WX_DECLARE_STRING_HASH_MAP(wxString, inheritHashMap); class pgCollection; class pgColumnFactory : public pgTableObjFactory { public: pgColumnFactory(); 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 pgColumnFactory columnFactory; class pgColumn : public pgTableObject { public: pgColumn(pgTable *newTable, const wxString &newName = wxT("")); ~pgColumn(); wxString GetTranslatedMessage(int kindOfMessage) const; void ShowTreeDetail(ctlTree *browser, frmMain *form = 0, ctlListView *properties = 0, ctlSQLBox *sqlPane = 0); void ShowStatistics(frmMain *form, ctlListView *statistics); void ShowDependencies(frmMain *form, ctlListView *Dependencies, const wxString &where = wxEmptyString); void ShowDependents(frmMain *form, ctlListView *referencedBy, const wxString &where = wxEmptyString); wxString GetDefinition(); bool IsReferenced(); wxString GetRawTypename() const { return rawTypename; } void iSetRawTypename(const wxString &s) { rawTypename = s; } wxString GetVarTypename() const { return varTypename; } void iSetVarTypename(const wxString &s) { varTypename = s; } wxString GetQuotedTypename() const { return quotedTypename; } void iSetQuotedTypename(const wxString &s) { quotedTypename = s; } wxString GetDefault() const { return defaultVal; } void iSetDefault(const wxString &s) { defaultVal = s; } long GetColNumber() const { return colNumber; } void iSetColNumber(const long l) { colNumber = l; } long GetLength() const { return length; } void iSetLength(const long l) { length = l; } long GetPrecision() const { return precision; } void iSetPrecision(const long l) { precision = l; } long GetStatistics() const { return statistics; } void iSetStatistics(const long l) { statistics = l; } bool GetIsPK() const { return isPK; } bool GetIsFK() const { return isFK; } bool GetNotNull() const { return notNull; } void iSetNotNull(const bool b) { notNull = b; } bool GetIsArray() const { return isArray; } void iSetIsArray(const bool b) { isArray = b; } long GetTyplen() const { return typlen; } void iSetTyplen(const long l) { typlen = l; } long GetTypmod() const { return typmod; } void iSetTypmod(const long l) { typmod = l; } wxString GetTableName() const { return tableName; } void iSetTableName(const wxString &s) { tableName = s; } wxString GetQuotedFullTable() const { return quotedFullTable; } void iSetQuotedFullTable(const wxString &s) { quotedFullTable = s; } wxString GetDefaultStorage() const { return defaultStorage; } void iSetDefaultStorage(const wxString &s) { defaultStorage = s; } wxString GetStorage() const { return storage; } void iSetStorage(const wxString &s) { storage = s; } long GetInheritedCount() const { return inheritedCount; } void iSetInheritedCount(const long l) { inheritedCount = l; } wxString GetInheritedTableName() const { return inheritedTableName; } void iSetInheritedTableName(const wxString &s) { inheritedTableName = s; } bool GetIsLocal() const { return isLocal; } void iSetIsLocal(const bool b) { isLocal = b; } OID GetAttTypId() const { return attTypId; } void iSetAttTypId(const OID o) { attTypId = o; } long GetAttstattarget() const { return attstattarget; } void iSetAttstattarget(const long l) { attstattarget = l; } wxString GetSerialSequence() const { return serialSequence; } void iSetSerialSequence(const wxString &s) { serialSequence = s; } wxString GetSerialSchema() const { return serialSchema; } void iSetSerialSchema(const wxString &s) { serialSchema = s; } wxString GetGenerated() const { return generated; } void iSetGenerated(const wxString &s) { generated = s; } void iSetCompression(const wxString& s) { compression = s; } wxString GetCompression() const { return compression == "p" ? "pglz" : (compression == "l" ? "lz4" : ""); } wxString GetIdentity() const { return identity; } void iSetIdentity(const wxString &s) { identity = s; } void iSetPkCols(const wxString &s) { pkCols = s; } void iSetIsFK(const bool b) { isFK = b; } wxArrayString &GetVariables() { return variables; } wxString GetCollation() const { return collation; } void iSetCollation(const wxString &s) { collation = s; } bool DropObject(wxFrame *frame, ctlTree *browser, bool cascaded); bool GetSystemObject() const { return colNumber < 0; } wxString GetSql(ctlTree *browser); wxString GetCommentSql(); wxString GetStorageSql(); wxString GetAttstattargetSql(); wxString GetVariablesSql(); wxString GetPrivileges(); wxString GetHelpPage(bool forCreate) const { return wxT("pg/sql-altertable"); } virtual bool CanDrop() { return inheritedCount == 0 && pgSchemaObject::CanDrop() && GetSchema()->GetMetaType() != PGM_CATALOG && GetTable()->GetMetaType() != PGM_VIEW && GetTable()->GetMetaType() != GP_EXTTABLE; } virtual bool CanCreate() { return GetTable()->GetMetaType() != PGM_VIEW && GetTable()->GetMetaType() != GP_EXTTABLE && GetSchema()->GetMetaType() != PGM_CATALOG; } pgObject *Refresh(ctlTree *browser, const wxTreeItemId item); bool HasStats() { return true; } bool HasDepends() { return true; } bool HasReferences() { return true; } private: wxString varTypename, quotedTypename, defaultVal, tableName, quotedFullTable, defaultStorage, storage, rawTypename; wxString serialSequence, serialSchema, pkCols, inheritedTableName, collation, generated, identity, compression; long colNumber, length, precision, statistics, attstattarget; long typlen, typmod, inheritedCount; bool isPK, isFK, notNull, isArray, isLocal; OID attTypId; int isReferenced; wxArrayString variables; }; class pgColumnCollection : public pgTableObjCollection { public: pgColumnCollection(pgaFactory *factory, pgTable *tbl); wxString GetTranslatedMessage(int kindOfMessage) const; }; #endif