pgadmin3/include/schema/pgTrigger.h
2020-07-07 22:19:12 +05:00

280 lines
5 KiB
C++

//////////////////////////////////////////////////////////////////////////
//
// pgAdmin III - PostgreSQL Tools
//
// Copyright (C) 2002 - 2016, The pgAdmin Development Team
// This software is released under the PostgreSQL Licence
//
// pgTrigger.h PostgreSQL Trigger
//
//////////////////////////////////////////////////////////////////////////
#ifndef PGTRIGGER_H
#define PGTRIGGER_H
#include "pgTable.h"
class pgFunction;
class pgTriggerObject : public pgSchemaObject
{
public:
pgTriggerObject(pgSchema *newSchema, pgaFactory &factory, const wxString &newName = wxEmptyString) : pgSchemaObject(newSchema, factory, newName) {}
wxString GetFormattedDefinition();
wxString GetDefinition() const
{
return definition;
}
void iSetDefinition(const wxString &s)
{
definition = s;
}
protected:
wxString definition;
};
class pgTriggerFactory : public pgSchemaObjFactory
{
public:
pgTriggerFactory();
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 closedId;
}
protected:
int closedId;
};
extern pgTriggerFactory triggerFactory;
class pgTrigger : public pgTriggerObject
{
public:
pgTrigger(pgSchema *newSchema, const wxString &newName = wxT(""));
~pgTrigger();
int GetIconId();
wxString GetTranslatedMessage(int kindOfMessage) const;
void ShowTreeDetail(ctlTree *browser, frmMain *form = 0, ctlListView *properties = 0, ctlSQLBox *sqlPane = 0);
bool CanDropCascaded()
{
return !GetSystemObject() && pgSchemaObject::CanDrop();
}
wxString GetFireWhen() const;
wxString GetEvent() const;
wxString GetForEach() const;
wxString GetFunction() const
{
return function;
}
void iSetFunction(const wxString &s)
{
function = s;
}
void iSetArguments(const wxString &s)
{
arguments = s;
}
wxString GetArguments() const
{
return arguments;
}
void iSetWhen(const wxString &s)
{
when = s;
}
wxString GetWhen() const
{
return when;
}
bool GetIsConstraint() const
{
return isconstraint;
}
void SetIsConstraint(const bool b)
{
isconstraint = b;
}
bool GetDeferrable() const
{
return deferrable;
}
void iSetDeferrable(const bool b)
{
deferrable = b;
}
bool GetDeferred() const
{
return deferred;
}
void iSetDeferred(const bool b)
{
deferred = b;
}
wxString GetLanguage() const
{
return language;
}
void iSetLanguage(const wxString &s)
{
language = s;
}
wxString GetSource() const
{
return source;
}
void iSetSource(const wxString &s)
{
source = s;
}
wxString GetReferences() const
{
return references;
}
void iSetReferences(const wxString &s)
{
references = s;
}
long GetTriggerType() const
{
return triggerType;
}
void iSetTriggerType(const long l)
{
triggerType = l;
}
bool GetEnabled() const
{
return enabled;
}
void SetEnabled(ctlTree *browser, const bool b);
void iSetEnabled(const bool b)
{
enabled = b;
}
void iSetTriggerFunction(pgFunction *fkt)
{
triggerFunction = fkt;
}
wxString GetQuotedFullTable() const
{
return quotedFullTable;
}
void iSetQuotedFullTable(const wxString &s)
{
quotedFullTable = s;
}
OID GetFunctionOid() const
{
return functionOid;
}
void iSetFunctionOid(const OID d)
{
functionOid = d;
}
OID GetRelationOid() const
{
return relationOid;
}
void iSetRelationOid(const OID d)
{
relationOid = d;
}
wxString GetQuotedColumns() const
{
return quotedColumns;
}
wxString GetColumns() const
{
return columns;
}
wxArrayString GetColumnList() const
{
return columnList;
}
long GetColumnCount() const
{
return columnCount;
}
void iSetColumnCount(const long l)
{
columnCount = l;
}
void iSetParentIsTable(const bool b)
{
parentistable = b;
}
bool GetParentIsTable()
{
return parentistable;
}
void SetDirty();
bool DropObject(wxFrame *frame, ctlTree *browser, bool cascaded);
wxString GetSql(ctlTree *browser);
bool CanRestore()
{
return true;
}
pgObject *Refresh(ctlTree *browser, const wxTreeItemId item);
bool HasStats()
{
return false;
}
bool HasDepends()
{
return true;
}
bool HasReferences()
{
return true;
}
bool IsUpToDate();
protected:
void ReadColumnDetails();
private:
wxString function, quotedFullTable, arguments, when, language, source, columns, quotedColumns,references;
wxArrayString columnList;
long columnCount;
OID functionOid, relationOid;
long triggerType;
bool enabled, parentistable, isconstraint, deferrable, deferred;
pgFunction *triggerFunction;
};
class pgTriggerCollection : public pgSchemaObjCollection
{
public:
pgTriggerCollection(pgaFactory *factory, pgSchema *sch);
wxString GetTranslatedMessage(int kindOfMessage) const;
};
class enabledisableTriggerFactory : public contextActionFactory
{
public:
enabledisableTriggerFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar);
wxWindow *StartDialog(frmMain *form, pgObject *obj);
bool CheckEnable(pgObject *obj);
bool CheckChecked(pgObject *obj);
};
#endif