Index: pgaSchedule.cpp =================================================================== RCS file: /projects/pgadmin3/src/agent/pgaSchedule.cpp,v retrieving revision 1.12 retrieving revision 1.13 diff -Lsrc/agent/pgaSchedule.cpp -Lsrc/agent/pgaSchedule.cpp -u -w -r1.12 -r1.13 --- src/agent/pgaSchedule.cpp +++ src/agent/pgaSchedule.cpp @@ -28,8 +28,8 @@ WX_DEFINE_OBJARRAY(wxArrayTimeSpan); -pgaSchedule::pgaSchedule(pgaJob *_job, const wxString& newName) -: pgaJobObject(_job, PGA_SCHEDULE, newName) +pgaSchedule::pgaSchedule(pgCollection *_collection, const wxString& newName) +: pgaJobObject(_collection->GetJob(), PGA_SCHEDULE, newName) { wxLogInfo(wxT("Creating a pgaSchedule object")); } @@ -106,8 +106,8 @@ wxTreeItemId parentItem=browser->GetItemParent(item); if (parentItem) { - pgaJob *obj=(pgaJob*)browser->GetItemData(parentItem); - if (obj->GetType() == PGA_JOB) + pgCollection *obj=(pgCollection*)browser->GetItemData(parentItem); + if (obj->GetType() == PGA_SCHEDULES) schedule = ReadObjects(obj, 0); } return schedule; @@ -115,13 +115,13 @@ -pgObject *pgaSchedule::ReadObjects(pgaJob *job, wxTreeCtrl *browser, const wxString &restriction) +pgObject *pgaSchedule::ReadObjects(pgCollection *collection, wxTreeCtrl *browser, const wxString &restriction) { pgaSchedule *schedule=0; - pgSet *schedules= job->GetDatabase()->ExecuteSet( + pgSet *schedules= collection->GetDatabase()->ExecuteSet( wxT("SELECT * FROM pgadmin.pga_schedule\n") - wxT(" WHERE jscjobid=") + NumToStr(job->GetId()) + wxT("\n") + wxT(" WHERE jscjobid=") + NumToStr(collection->GetId()) + wxT("\n") + restriction + wxT(" ORDER BY jscid")); @@ -130,9 +130,9 @@ while (!schedules->Eof()) { - schedule = new pgaSchedule(job, schedules->GetVal(wxT("jscname"))); + schedule = new pgaSchedule(collection, schedules->GetVal(wxT("jscname"))); schedule->iSetId(schedules->GetLong(wxT("jscid"))); - schedule->iSetDatabase(job->GetDatabase()); + schedule->iSetDatabase(collection->GetDatabase()); schedule->iSetStart(schedules->GetDateTime(wxT("jscstart"))); schedule->iSetEnd(schedules->GetDateTime(wxT("jscend"))); schedule->iSetSchedule(schedules->GetDateTime(wxT("jscsched"))); @@ -157,7 +157,7 @@ if (browser) { - job->AppendBrowserItem(browser, schedule); + collection->AppendBrowserItem(browser, schedule); schedules->MoveNext(); } else Index: dlgStep.cpp =================================================================== RCS file: /projects/pgadmin3/src/agent/dlgStep.cpp,v retrieving revision 1.12 retrieving revision 1.13 diff -Lsrc/agent/dlgStep.cpp -Lsrc/agent/dlgStep.cpp -u -w -r1.12 -r1.13 --- src/agent/dlgStep.cpp +++ src/agent/dlgStep.cpp @@ -112,7 +112,7 @@ { wxString name=GetName(); - pgObject *obj=pgaStep::ReadObjects(job, 0, wxT(" AND jstid=") + NumToStr(id) + wxT("\n")); + pgObject *obj=pgaStep::ReadObjects(collection, 0, wxT(" AND jstid=") + NumToStr(id) + wxT("\n")); return obj; } Index: pgaStep.cpp =================================================================== RCS file: /projects/pgadmin3/src/agent/pgaStep.cpp,v retrieving revision 1.11 retrieving revision 1.12 diff -Lsrc/agent/pgaStep.cpp -Lsrc/agent/pgaStep.cpp -u -w -r1.11 -r1.12 --- src/agent/pgaStep.cpp +++ src/agent/pgaStep.cpp @@ -23,8 +23,8 @@ #include "pgaSchedule.h" -pgaStep::pgaStep(pgaJob *_job, const wxString& newName) -: pgaJobObject(_job, PGA_STEP, newName) +pgaStep::pgaStep(pgCollection *_collection, const wxString& newName) +: pgaJobObject(_collection->GetJob(), PGA_STEP, newName) { wxLogInfo(wxT("Creating a pgaStep object")); } @@ -72,8 +72,8 @@ wxTreeItemId parentItem=browser->GetItemParent(item); if (parentItem) { - pgaJob *obj=(pgaJob*)browser->GetItemData(parentItem); - if (obj->GetType() == PGA_JOB) + pgCollection *obj=(pgCollection*)browser->GetItemData(parentItem); + if (obj->GetType() == PGA_STEPS) Step = ReadObjects(obj, 0); } return Step; @@ -81,13 +81,13 @@ -pgObject *pgaStep::ReadObjects(pgaJob *job, wxTreeCtrl *browser, const wxString &restriction) +pgObject *pgaStep::ReadObjects(pgCollection *collection, wxTreeCtrl *browser, const wxString &restriction) { pgaStep *step=0; - pgSet *steps= job->GetDatabase()->ExecuteSet( + pgSet *steps= collection->GetDatabase()->ExecuteSet( wxT("SELECT * FROM pgadmin.pga_jobstep\n") - wxT(" WHERE jstjobid=") + NumToStr(job->GetId()) + wxT("\n") + wxT(" WHERE jstjobid=") + NumToStr(collection->GetId()) + wxT("\n") + restriction + wxT(" ORDER BY jstid")); @@ -96,9 +96,9 @@ while (!steps->Eof()) { - step = new pgaStep(job, steps->GetVal(wxT("jstname"))); + step = new pgaStep(collection, steps->GetVal(wxT("jstname"))); step->iSetId(steps->GetLong(wxT("jstid"))); - step->iSetDatabase(job->GetDatabase()); + step->iSetDatabase(collection->GetDatabase()); step->iSetDbname(steps->GetVal(wxT("jstdbname"))); step->iSetCode(steps->GetVal(wxT("jstcode"))); step->iSetEnabled(steps->GetBool(wxT("jstenabled"))); @@ -131,7 +131,7 @@ if (browser) { - job->AppendBrowserItem(browser, step); + collection->AppendBrowserItem(browser, step); steps->MoveNext(); } else Index: pgaJob.cpp =================================================================== RCS file: /projects/pgadmin3/src/agent/pgaJob.cpp,v retrieving revision 1.10 retrieving revision 1.11 diff -Lsrc/agent/pgaJob.cpp -Lsrc/agent/pgaJob.cpp -u -w -r1.10 -r1.11 --- src/agent/pgaJob.cpp +++ src/agent/pgaJob.cpp @@ -16,6 +16,7 @@ #include "pgAdmin3.h" #include "misc.h" #include "pgObject.h" +#include "pgCollection.h" #include "pgDatabase.h" #include "pgaAgent.h" #include "pgaJob.h" @@ -60,11 +61,18 @@ expandedKids=true; RemoveDummyChild(browser); + // Log wxLogInfo(wxT("Adding child objects to Job.")); + pgCollection *collection; - pgaStep::ReadObjects(this, browser); - pgaSchedule::ReadObjects(this, browser); + // Schedules + collection = new pgCollection(PGA_SCHEDULES, this); + AppendBrowserItem(browser, collection); + + // Steps + collection = new pgCollection(PGA_STEPS, this); + AppendBrowserItem(browser, collection); } Index: dlgSchedule.cpp =================================================================== RCS file: /projects/pgadmin3/src/agent/dlgSchedule.cpp,v retrieving revision 1.13 retrieving revision 1.14 diff -Lsrc/agent/dlgSchedule.cpp -Lsrc/agent/dlgSchedule.cpp -u -w -r1.13 -r1.14 --- src/agent/dlgSchedule.cpp +++ src/agent/dlgSchedule.cpp @@ -119,7 +119,7 @@ { wxString name=GetName(); - pgObject *obj=pgaSchedule::ReadObjects(job, 0, wxT(" AND jscid=") + NumToStr(id) + wxT("\n")); + pgObject *obj=pgaSchedule::ReadObjects(collection, 0, wxT(" AND jscid=") + NumToStr(id) + wxT("\n")); return obj; } Index: pgaAgent.cpp =================================================================== RCS file: /projects/pgadmin3/src/agent/pgaAgent.cpp,v retrieving revision 1.10 retrieving revision 1.11 diff -Lsrc/agent/pgaAgent.cpp -Lsrc/agent/pgaAgent.cpp -u -w -r1.10 -r1.11 --- src/agent/pgaAgent.cpp +++ src/agent/pgaAgent.cpp @@ -116,7 +116,7 @@ if (!exists.IsNull()) { - agent = new pgaAgent(_("pgAgent")); + agent = new pgaAgent(_("pgAgent Jobs")); agent->iSetDatabase(database); if (browser) Index: pgaStep.h =================================================================== RCS file: /projects/pgadmin3/src/agent/include/pgaStep.h,v retrieving revision 1.8 retrieving revision 1.9 diff -Lsrc/agent/include/pgaStep.h -Lsrc/agent/include/pgaStep.h -u -w -r1.8 -r1.9 --- src/agent/include/pgaStep.h +++ src/agent/include/pgaStep.h @@ -17,6 +17,7 @@ // App headers #include "pgAdmin3.h" +#include "pgCollection.h" #include "pgConn.h" #include "pgObject.h" #include "pgaJob.h" @@ -27,12 +28,12 @@ class pgaStep : public pgaJobObject { public: - pgaStep(pgaJob *job, const wxString& newName = wxT("")); + pgaStep(pgCollection *collection, const wxString& newName = wxT("")); ~pgaStep(); int GetIcon() { return PGAICON_STEP; } void ShowTreeDetail(wxTreeCtrl *browser, frmMain *form=0, ctlListView *properties=0, ctlSQLBox *sqlPane=0); - static pgObject *ReadObjects(pgaJob *job, 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: pgaSchedule.h =================================================================== RCS file: /projects/pgadmin3/src/agent/include/pgaSchedule.h,v retrieving revision 1.9 retrieving revision 1.10 diff -Lsrc/agent/include/pgaSchedule.h -Lsrc/agent/include/pgaSchedule.h -u -w -r1.9 -r1.10 --- src/agent/include/pgaSchedule.h +++ src/agent/include/pgaSchedule.h @@ -17,6 +17,7 @@ // App headers #include "pgAdmin3.h" +#include "pgCollection.h" #include "pgConn.h" #include "pgObject.h" #include "pgaJob.h" @@ -29,12 +30,12 @@ class pgaSchedule : public pgaJobObject { public: - pgaSchedule(pgaJob *job, const wxString& newName = wxT("")); + pgaSchedule(pgCollection *collection, const wxString& newName = wxT("")); ~pgaSchedule(); int GetIcon() { return PGAICON_SCHEDULE; } void ShowTreeDetail(wxTreeCtrl *browser, frmMain *form=0, ctlListView *properties=0, ctlSQLBox *sqlPane=0); - static pgObject *ReadObjects(pgaJob *job, 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: pgObject.h =================================================================== RCS file: /projects/pgadmin3/src/include/pgObject.h,v retrieving revision 1.63 retrieving revision 1.64 diff -Lsrc/include/pgObject.h -Lsrc/include/pgObject.h -u -w -r1.63 -r1.64 --- src/include/pgObject.h +++ src/include/pgObject.h @@ -62,8 +62,8 @@ PGA_AGENT, PGA_JOB, - PGA_STEP, - PGA_SCHEDULE, + PGA_SCHEDULES, PGA_SCHEDULE, + PGA_STEPS, PGA_STEP, SL_CLUSTERS, SL_CLUSTER, SL_NODES, SL_NODE, Index: pgCollection.h =================================================================== RCS file: /projects/pgadmin3/src/include/pgCollection.h,v retrieving revision 1.16 retrieving revision 1.17 diff -Lsrc/include/pgCollection.h -Lsrc/include/pgCollection.h -u -w -r1.16 -r1.17 --- src/include/pgCollection.h +++ src/include/pgCollection.h @@ -19,6 +19,7 @@ #include "pgAdmin3.h" #include "pgObject.h" #include "pgSchema.h" +#include "pgaJob.h" class pgServer; class pgDatabase; @@ -30,6 +31,7 @@ pgCollection(int newType, pgServer *sv); pgCollection(int newType, pgDatabase *db); pgCollection(int newType, pgSchema *sch); + pgCollection(int newType, pgaJob *jb); ~pgCollection(); virtual bool IsCollection() const { return true; } virtual bool IsCollectionForType(int objType) { return GetType() == objType-1; } @@ -37,6 +39,7 @@ pgServer *GetServer() const { return server; } pgDatabase *GetDatabase() const { return database; } pgSchema *GetSchema() const { return schema; } + pgaJob *GetJob() const { return job; } int GetIcon(); void ShowTreeDetail(wxTreeCtrl *browser, frmMain *form=0, ctlListView *properties=0, ctlSQLBox *sqlPane=0); @@ -50,6 +53,7 @@ pgServer *server; pgDatabase *database; pgSchema *schema; + pgaJob *job; }; Index: pgObject.cpp =================================================================== RCS file: /projects/pgadmin3/src/schema/pgObject.cpp,v retrieving revision 1.78 retrieving revision 1.79 diff -Lsrc/schema/pgObject.cpp -Lsrc/schema/pgObject.cpp -u -w -r1.78 -r1.79 --- src/schema/pgObject.cpp +++ src/schema/pgObject.cpp @@ -81,8 +81,10 @@ {__("Agent"), PGAICON_AGENT, 0, 0}, {__("Job"), PGAICON_JOB, __("New Job"), __("Create a new Job") }, - {__("Step"), PGAICON_STEP, __("New Step"), __("Create new Step") }, + {__("Schedules"), PGAICON_SCHEDULE, 0, 0}, {__("Schedule"), PGAICON_SCHEDULE, __("New Schedule"), __("Create new Schedule") }, + {__("Steps"), PGAICON_STEP, 0, 0}, + {__("Step"), PGAICON_STEP, __("New Step"), __("Create new Step") }, {__("Replication"), SLICON_CLUSTER, __("New Slony-I Cluster"), __("Create new Slony-I Replication Cluster") }, {__("Slony-I Cluster"), SLICON_CLUSTER, __("New Slony-I Cluster"), __("Create new Slony-I Replication Cluster") }, Index: pgCollection.cpp =================================================================== RCS file: /projects/pgadmin3/src/schema/pgCollection.cpp,v retrieving revision 1.39 retrieving revision 1.40 diff -Lsrc/schema/pgCollection.cpp -Lsrc/schema/pgCollection.cpp -u -w -r1.39 -r1.40 --- src/schema/pgCollection.cpp +++ src/schema/pgCollection.cpp @@ -36,6 +36,9 @@ #include "pgIndex.h" #include "pgRule.h" #include "pgTrigger.h" +#include "pgaStep.h" +#include "pgaSchedule.h" +#include "pgaJob.h" #include "slCluster.h" @@ -44,6 +47,7 @@ : pgObject(newType, typesList[newType].typName) { wxLogInfo(wxT("Creating a pgCollection object")); + job=0; schema=0; database=0; server= sv; @@ -54,6 +58,7 @@ : pgObject(newType, typesList[newType].typName) { wxLogInfo(wxT("Creating a pgCollection object")); + job=0; schema=0; database=db; server= database->GetServer(); @@ -64,11 +69,21 @@ : pgObject(newType, typesList[newType].typName) { wxLogInfo(wxT("Creating a pgCollection object")); + job=0; schema = sch; database = sch->GetDatabase(); server= database->GetServer(); } +pgCollection::pgCollection(int newType, pgaJob *jb) +: pgObject(newType, typesList[newType].typName) +{ + wxLogInfo(wxT("Creating a pgCollection object")); + job = jb; + schema=0; + database = job->GetDatabase(); + server= database->GetServer(); +} pgCollection::~pgCollection() { @@ -121,6 +136,8 @@ case PG_USERS: case PG_GROUPS: case PG_TABLESPACES: + case PGA_STEPS: + case PGA_SCHEDULES: return GetServer()->GetSuperUser(); case PG_DATABASES: return GetServer()->GetCreatePrivilege(); @@ -178,6 +195,8 @@ case PG_INDEXES: return PGICON_INDEX; case PG_RULES: return PGICON_RULE; case PG_TRIGGERS: return PGICON_TRIGGER; + case PGA_STEPS: return PGAICON_STEP; + case PGA_SCHEDULES: return PGAICON_SCHEDULE; case SL_CLUSTERS: return SLICON_CLUSTER; default: return 0; } @@ -280,6 +299,12 @@ case PG_TRIGGERS: pgTrigger::ReadObjects(this, browser); break; + case PGA_STEPS: + pgaStep::ReadObjects(this, browser); + break; + case PGA_SCHEDULES: + pgaSchedule::ReadObjects(this, browser); + break; case SL_CLUSTERS: slCluster::ReadObjects(this, browser); break;