Index: pgAdmin3.dsp =================================================================== RCS file: /projects/pgadmin3/src/pgAdmin3.dsp,v retrieving revision 1.124 retrieving revision 1.125 diff -Lsrc/pgAdmin3.dsp -Lsrc/pgAdmin3.dsp -u -w -r1.124 -r1.125 --- src/pgAdmin3.dsp +++ src/pgAdmin3.dsp @@ -1442,10 +1442,6 @@ # End Source File # Begin Source File -SOURCE=.\agent\include\pgaAgent.h -# End Source File -# Begin Source File - SOURCE=.\agent\include\pgaJob.h # End Source File # Begin Source File @@ -1679,10 +1675,6 @@ # End Source File # Begin Source File -SOURCE=.\agent\pgaAgent.cpp -# End Source File -# Begin Source File - SOURCE=.\agent\pgaJob.cpp # End Source File # Begin Source File Index: pgaSchedule.cpp =================================================================== RCS file: /projects/pgadmin3/src/agent/pgaSchedule.cpp,v retrieving revision 1.13 retrieving revision 1.14 diff -Lsrc/agent/pgaSchedule.cpp -Lsrc/agent/pgaSchedule.cpp -u -w -r1.13 -r1.14 --- src/agent/pgaSchedule.cpp +++ src/agent/pgaSchedule.cpp @@ -5,7 +5,7 @@ // Copyright (C) 2002 - 2005, The pgAdmin Development Team // This software is released under the Artistic Licence // -// pgaSchedule.h - PostgreSQL Agent Schedule +// pgaSchedule.cpp - PostgreSQL Agent Schedule // ////////////////////////////////////////////////////////////////////////// @@ -121,7 +121,7 @@ pgSet *schedules= collection->GetDatabase()->ExecuteSet( wxT("SELECT * FROM pgadmin.pga_schedule\n") - wxT(" WHERE jscjobid=") + NumToStr(collection->GetId()) + wxT("\n") + wxT(" WHERE jscjobid=") + NumToStr(collection->GetJob()->GetId()) + wxT("\n") + restriction + wxT(" ORDER BY jscid")); Index: pgaStep.cpp =================================================================== RCS file: /projects/pgadmin3/src/agent/pgaStep.cpp,v retrieving revision 1.12 retrieving revision 1.13 diff -Lsrc/agent/pgaStep.cpp -Lsrc/agent/pgaStep.cpp -u -w -r1.12 -r1.13 --- src/agent/pgaStep.cpp +++ src/agent/pgaStep.cpp @@ -5,7 +5,7 @@ // Copyright (C) 2002 - 2005, The pgAdmin Development Team // This software is released under the Artistic Licence // -// pgaStep.h - PostgreSQL Agent Step +// pgaStep.cpp - PostgreSQL Agent Step // ////////////////////////////////////////////////////////////////////////// @@ -87,7 +87,7 @@ pgSet *steps= collection->GetDatabase()->ExecuteSet( wxT("SELECT * FROM pgadmin.pga_jobstep\n") - wxT(" WHERE jstjobid=") + NumToStr(collection->GetId()) + wxT("\n") + wxT(" WHERE jstjobid=") + NumToStr(collection->GetJob()->GetId()) + wxT("\n") + restriction + wxT(" ORDER BY jstid")); Index: pgaJob.cpp =================================================================== RCS file: /projects/pgadmin3/src/agent/pgaJob.cpp,v retrieving revision 1.11 retrieving revision 1.12 diff -Lsrc/agent/pgaJob.cpp -Lsrc/agent/pgaJob.cpp -u -w -r1.11 -r1.12 --- src/agent/pgaJob.cpp +++ src/agent/pgaJob.cpp @@ -18,7 +18,6 @@ #include "pgObject.h" #include "pgCollection.h" #include "pgDatabase.h" -#include "pgaAgent.h" #include "pgaJob.h" #include "pgaStep.h" #include "pgaSchedule.h" @@ -105,19 +104,19 @@ if (parentItem) { pgObject *obj=(pgObject*)browser->GetItemData(parentItem); - if (obj->GetType() == PGA_AGENT) - job = ReadObjects((pgaAgent*)obj, 0); + if (obj->GetType() == PGA_JOBS) + job = ReadObjects((pgCollection*)obj, 0); } return job; } -pgObject *pgaJob::ReadObjects(pgaAgent *agent, wxTreeCtrl *browser, const wxString &restriction) +pgObject *pgaJob::ReadObjects(pgCollection *collection, wxTreeCtrl *browser, const wxString &restriction) { pgaJob *job=0; - pgSet *jobs= agent->GetDatabase()->ExecuteSet( + pgSet *jobs= collection->GetDatabase()->ExecuteSet( wxT("SELECT *, ''::text AS joblastresult FROM pgadmin.pga_job j\n") wxT(" JOIN pgadmin.pga_jobclass cl ON cl.jclid=jobjclid\n") + restriction + @@ -130,7 +129,7 @@ job = new pgaJob(jobs->GetVal(wxT("jobname"))); job->iSetId(jobs->GetLong(wxT("jobid"))); - job->iSetDatabase(agent->GetDatabase()); + job->iSetDatabase(collection->GetDatabase()); job->iSetComment(jobs->GetVal(wxT("jobdesc"))); job->iSetEnabled(jobs->GetBool(wxT("jobenabled"))); @@ -144,7 +143,7 @@ if (browser) { - agent->AppendBrowserItem(browser, job); + collection->AppendBrowserItem(browser, job); jobs->MoveNext(); } else --- src/agent/pgaAgent.cpp +++ /dev/null @@ -1,126 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// pgAdmin III - PostgreSQL Tools -// RCS-ID: $Id: pgaAgent.cpp,v 1.11 2005/02/28 23:14:10 dpage Exp $ -// Copyright (C) 2002 - 2005, The pgAdmin Development Team -// This software is released under the Artistic Licence -// -// pgaAgent.h - PostgreSQL Server Agent -// -////////////////////////////////////////////////////////////////////////// - -// wxWindows headers -#include - -// App headers -#include "pgAdmin3.h" -#include "misc.h" -#include "pgObject.h" -#include "pgDatabase.h" -#include "pgCollection.h" -#include "pgaAgent.h" -#include "pgaJob.h" - - -pgaAgent::pgaAgent(const wxString& newName) -: pgDatabaseObject(PGA_AGENT, newName) -{ - wxLogInfo(wxT("Creating a pgaAgent object")); -} - -pgaAgent::~pgaAgent() -{ - wxLogInfo(wxT("Destroying a pgaAgent object")); -} - - - -wxMenu *pgaAgent::GetNewMenu() -{ - wxMenu *menu=new wxMenu(); - if (1) // check priv. - { - AppendMenu(menu, PGA_JOB); - } - return menu; -} - -void pgaAgent::ShowTreeDetail(wxTreeCtrl *browser, frmMain *form, ctlListView *properties, ctlSQLBox *sqlPane) -{ - if (!expandedKids) - { - expandedKids=true; - - RemoveDummyChild(browser); - // Log - wxLogInfo(wxT("Adding child object to agent.")); - - pgaJob::ReadObjects(this, browser); - } - - if (properties) - { - properties->ClearAll(); - properties->AddColumn(_("Instance"), 90); - properties->AddColumn(_("PID"), 35); - properties->AddColumn(_("Login time"), 75); - properties->AddColumn(_("Current job"), 250); - - pgSet *props = GetDatabase()->ExecuteSet( - wxT("SELECT station, jagpid, logintime, jobname\n") - wxT(" FROM pgadmin.pga_jobagent\n") - wxT(" JOIN pgadmin.pga_job ON jobagentid=jagpid\n") - wxT(" ORDER BY jagpid")); - - if (props) - { - while (!props->Eof()) - { - long pos=0; - properties->InsertItem(pos, props->GetVal(wxT("station")), PGAICON_AGENT); - properties->SetItem(pos, 1, props->GetVal(wxT("jagpid"))); - properties->SetItem(pos, 2, DateToStr(props->GetDateTime(wxT("logintime")))); - properties->SetItem(pos, 3, props->GetVal(wxT("jobname"))); - - props->MoveNext(); - } - delete props; - } - } -} - - - -pgObject *pgaAgent::Refresh(wxTreeCtrl *browser, const wxTreeItemId item) -{ - pgObject *agent=0; - wxTreeItemId parentItem=browser->GetItemParent(item); - if (parentItem) - { - pgObject *obj=(pgObject*)browser->GetItemData(parentItem); - if (obj->GetType() == PG_DATABASE) - agent = ReadObjects((pgDatabase*)obj, 0); - } - return agent; -} - - - -pgObject *pgaAgent::ReadObjects(pgDatabase *database, wxTreeCtrl *browser) -{ - pgaAgent *agent=0; - - wxString exists = database->ExecuteScalar( - wxT("SELECT cl.oid FROM pg_class cl JOIN pg_namespace ns ON ns.oid=relnamespace\n") - wxT(" WHERE relname='pga_job' AND nspname='pgadmin'")); - - if (!exists.IsNull()) - { - agent = new pgaAgent(_("pgAgent Jobs")); - agent->iSetDatabase(database); - - if (browser) - database->AppendBrowserItem(browser, agent); - } - return agent; -} Index: dlgJob.cpp =================================================================== RCS file: /projects/pgadmin3/src/agent/dlgJob.cpp,v retrieving revision 1.12 retrieving revision 1.13 diff -Lsrc/agent/dlgJob.cpp -Lsrc/agent/dlgJob.cpp -u -w -r1.12 -r1.13 --- src/agent/dlgJob.cpp +++ src/agent/dlgJob.cpp @@ -156,7 +156,7 @@ pgObject *dlgJob::CreateObject(pgCollection *collection) { - pgObject *obj=pgaJob::ReadObjects((pgaAgent*)collection, 0, wxT(" AND jobid=") + NumToStr(id) + wxT("\n")); + pgObject *obj=pgaJob::ReadObjects(collection, 0, wxT(" AND jobid=") + NumToStr(id) + wxT("\n")); return obj; } --- src/agent/include/pgaAgent.h +++ /dev/null @@ -1,46 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// -// pgAdmin III - PostgreSQL Tools -// RCS-ID: $Id: pgaAgent.h,v 1.7 2005/01/10 15:26:29 dpage Exp $ -// Copyright (C) 2002 - 2005, The pgAdmin Development Team -// This software is released under the Artistic Licence -// -// pgaAgent.h - PostgreSQL Server Agent -// -////////////////////////////////////////////////////////////////////////// - -#ifndef PGAAGENT_H -#define PGAAGENT_H - -// wxWindows headers -#include - -// App headers -#include "pgAdmin3.h" -#include "pgConn.h" -#include "pgObject.h" -// Class declarations - - -class pgaAgent : public pgDatabaseObject -{ -public: - pgaAgent(const wxString& newName = wxT("")); - ~pgaAgent(); - - int GetIcon() { return PGAICON_AGENT; } - void ShowTreeDetail(wxTreeCtrl *browser, frmMain *form=0, ctlListView *properties=0, ctlSQLBox *sqlPane=0); - static pgObject *ReadObjects(pgDatabase *database, wxTreeCtrl *browser); - pgObject *Refresh(wxTreeCtrl *browser, const wxTreeItemId item); - wxMenu *GetNewMenu(); - - bool CanCreate() { return false; } - bool CanView() { return false; } - bool CanEdit() { return false; } - bool CanDrop() { return false; } - bool WantDummyChild() { return true; } - -private: -}; - -#endif Index: pgaJob.h =================================================================== RCS file: /projects/pgadmin3/src/agent/include/pgaJob.h,v retrieving revision 1.9 retrieving revision 1.10 diff -Lsrc/agent/include/pgaJob.h -Lsrc/agent/include/pgaJob.h -u -w -r1.9 -r1.10 --- src/agent/include/pgaJob.h +++ src/agent/include/pgaJob.h @@ -19,7 +19,6 @@ #include "pgAdmin3.h" #include "pgConn.h" #include "pgObject.h" -#include "pgaAgent.h" // Class declarations @@ -31,7 +30,7 @@ int GetIcon() { return enabled ? PGAICON_JOB : PGAICON_JOBDISABLED; } void ShowTreeDetail(wxTreeCtrl *browser, frmMain *form=0, ctlListView *properties=0, ctlSQLBox *sqlPane=0); - static pgObject *ReadObjects(pgaAgent *agent, wxTreeCtrl *browser, const wxString &restriction=wxEmptyString); + static pgObject *ReadObjects(pgCollection *collection, wxTreeCtrl *browser, const wxString &restriction=wxEmptyString); pgObject *Refresh(wxTreeCtrl *browser, const wxTreeItemId item); bool DropObject(wxFrame *frame, wxTreeCtrl *browser); Index: misc.h =================================================================== RCS file: /projects/pgadmin3/src/include/misc.h,v retrieving revision 1.51 retrieving revision 1.52 diff -Lsrc/include/misc.h -Lsrc/include/misc.h -u -w -r1.51 -r1.52 --- src/include/misc.h +++ src/include/misc.h @@ -181,7 +181,6 @@ PGICON_UNIQUE, PGICON_PUBLIC, - PGAICON_AGENT, PGAICON_JOB, PGAICON_JOBDISABLED, PGAICON_STEP, Index: pgObject.h =================================================================== RCS file: /projects/pgadmin3/src/include/pgObject.h,v retrieving revision 1.64 retrieving revision 1.65 diff -Lsrc/include/pgObject.h -Lsrc/include/pgObject.h -u -w -r1.64 -r1.65 --- src/include/pgObject.h +++ src/include/pgObject.h @@ -60,8 +60,7 @@ PG_TRIGGERS, PG_TRIGGER, PG_CONSTRAINTS, PG_PRIMARYKEY, PG_UNIQUE, PG_CHECK, PG_FOREIGNKEY, - PGA_AGENT, - PGA_JOB, + PGA_JOBS, PGA_JOB, PGA_SCHEDULES, PGA_SCHEDULE, PGA_STEPS, PGA_STEP, @@ -122,7 +121,7 @@ void ShowTree(frmMain *form, wxTreeCtrl *browser, ctlListView *properties, ctlSQLBox *sqlPane); - void AppendBrowserItem(wxTreeCtrl *browser, pgObject *object); + wxTreeItemId AppendBrowserItem(wxTreeCtrl *browser, pgObject *object); void RemoveDummyChild(wxTreeCtrl *browser); virtual wxString GetHelpPage(bool forCreate) const; --- src/include/images/agent.xpm +++ /dev/null @@ -1,26 +0,0 @@ -/* XPM */ -static char * agent_xpm[] = { -"16 16 7 1", -" c None", -". c #FFFFFF", -"+ c #000000", -"@ c #848284", -"# c #C6C3C6", -"$ c #FFFF00", -"% c #848200", -" ", -" ++++++++++++ ", -" +..........+ ", -" +..........+ ", -" +..........+ ", -" +..........+ ", -" ++@.#.+....+ ", -" +.++@++$+...+ ", -" +%++$+$%+...+ ", -" @+%++$++.++..+ ", -" +%$.+++#$%+..+ ", -" +%++.$.$+%+..+ ", -" +$%%.+%$+...+ ", -" +$%++$++%%+..+ ", -" ++++%++++++++ ", -" +++ "}; Index: pgObject.cpp =================================================================== RCS file: /projects/pgadmin3/src/schema/pgObject.cpp,v retrieving revision 1.79 retrieving revision 1.80 diff -Lsrc/schema/pgObject.cpp -Lsrc/schema/pgObject.cpp -u -w -r1.79 -r1.80 --- src/schema/pgObject.cpp +++ src/schema/pgObject.cpp @@ -79,7 +79,7 @@ {__("Check"), PGICON_CHECK, __("New Check Constraint"), __("Add a new Check Constraint.") }, {__("Foreign Key"), PGICON_FOREIGNKEY, __("New Foreign Key"), __("Add a new Foreign Key.") }, - {__("Agent"), PGAICON_AGENT, 0, 0}, + {__("Jobs"), PGAICON_JOB, 0, 0}, {__("Job"), PGAICON_JOB, __("New Job"), __("Create a new Job") }, {__("Schedules"), PGAICON_SCHEDULE, 0, 0}, {__("Schedule"), PGAICON_SCHEDULE, __("New Schedule"), __("Create new Schedule") }, @@ -448,18 +448,22 @@ } } -void pgObject::AppendBrowserItem(wxTreeCtrl *browser, pgObject *object) +wxTreeItemId pgObject::AppendBrowserItem(wxTreeCtrl *browser, pgObject *object) { wxString label; + wxTreeItemId item; + if (object->IsCollection()) label = object->GetTypeName(); else label = object->GetFullName(); - browser->AppendItem(GetId(), label, object->GetIcon(), -1, object); + item = browser->AppendItem(GetId(), label, object->GetIcon(), -1, object); if (object->IsCollection()) object->ShowTreeDetail(browser); else if (object->WantDummyChild()) browser->AppendItem(object->GetId(), wxT("Dummy")); + + return item; } Index: pgCollection.cpp =================================================================== RCS file: /projects/pgadmin3/src/schema/pgCollection.cpp,v retrieving revision 1.40 retrieving revision 1.41 diff -Lsrc/schema/pgCollection.cpp -Lsrc/schema/pgCollection.cpp -u -w -r1.40 -r1.41 --- src/schema/pgCollection.cpp +++ src/schema/pgCollection.cpp @@ -136,6 +136,7 @@ case PG_USERS: case PG_GROUPS: case PG_TABLESPACES: + case PGA_JOBS: case PGA_STEPS: case PGA_SCHEDULES: return GetServer()->GetSuperUser(); @@ -195,6 +196,7 @@ case PG_INDEXES: return PGICON_INDEX; case PG_RULES: return PGICON_RULE; case PG_TRIGGERS: return PGICON_TRIGGER; + case PGA_JOBS: return PGAICON_JOB; case PGA_STEPS: return PGAICON_STEP; case PGA_SCHEDULES: return PGAICON_SCHEDULE; case SL_CLUSTERS: return SLICON_CLUSTER; @@ -299,6 +301,9 @@ case PG_TRIGGERS: pgTrigger::ReadObjects(this, browser); break; + case PGA_JOBS: + pgaJob::ReadObjects(this, browser); + break; case PGA_STEPS: pgaStep::ReadObjects(this, browser); break; Index: pgDatabase.cpp =================================================================== RCS file: /projects/pgadmin3/src/schema/pgDatabase.cpp,v retrieving revision 1.69 retrieving revision 1.70 diff -Lsrc/schema/pgDatabase.cpp -Lsrc/schema/pgDatabase.cpp -u -w -r1.69 -r1.70 --- src/schema/pgDatabase.cpp +++ src/schema/pgDatabase.cpp @@ -20,7 +20,6 @@ #include "pgObject.h" #include "pgServer.h" #include "pgCollection.h" -#include "pgaAgent.h" #include "menu.h" #include "frmMain.h" @@ -325,8 +324,17 @@ collection = new pgCollection(PG_SCHEMAS, this); AppendBrowserItem(browser, collection); - // pgAgent - pgaAgent::ReadObjects(this, browser); + // Jobs + // We only add the Jobs node if the appropriate objects are in this DB. + wxString exists = ExecuteScalar( + wxT("SELECT cl.oid FROM pg_class cl JOIN pg_namespace ns ON ns.oid=relnamespace\n") + wxT(" WHERE relname='pga_job' AND nspname='pgadmin'")); + + if (!exists.IsNull()) + { + collection = new pgCollection(PGA_JOBS, this); + AppendBrowserItem(browser, collection); + } // Slony-I Clusters collection = new pgCollection(SL_CLUSTERS, this); Index: events.cpp =================================================================== RCS file: /projects/pgadmin3/src/ui/events.cpp,v retrieving revision 1.125 retrieving revision 1.126 diff -Lsrc/ui/events.cpp -Lsrc/ui/events.cpp -u -w -r1.125 -r1.126 --- src/ui/events.cpp +++ src/ui/events.cpp @@ -906,9 +906,11 @@ case PG_TRIGGERS: case PG_TRIGGER: - case PGA_AGENT: + case PGA_JOBS: case PGA_JOB: + case PGA_STEPS: case PGA_STEP: + case PGA_SCHEDULES: case PGA_SCHEDULE: case SL_CLUSTER: case SL_CLUSTERS: Index: frmMain.cpp =================================================================== RCS file: /projects/pgadmin3/src/ui/frmMain.cpp,v retrieving revision 1.120 retrieving revision 1.121 diff -Lsrc/ui/frmMain.cpp -Lsrc/ui/frmMain.cpp -u -w -r1.120 -r1.121 --- src/ui/frmMain.cpp +++ src/ui/frmMain.cpp @@ -98,7 +98,6 @@ #include "images/primarykey.xpm" #include "images/unique.xpm" #include "images/help2.xpm" -#include "images/agent.xpm" #include "images/job.xpm" #include "images/jobdisabled.xpm" #include "images/step.xpm" @@ -368,8 +367,7 @@ images->Add(wxIcon(unique_xpm)); images->Add(wxIcon(public_xpm)); - // agent, job, jobdisabled, step, schedule - images->Add(wxIcon(agent_xpm)); + // job, jobdisabled, step, schedule images->Add(wxIcon(job_xpm)); images->Add(wxIcon(jobdisabled_xpm)); images->Add(wxIcon(step_xpm));