00001 #ifndef ARCJOBCONTROLLER_H 00002 #define ARCJOBCONTROLLER_H 00003 00004 #include <QTabWidget> 00005 #include <QTableWidget> 00006 #include <QStringList> 00007 #include <QTextEdit> 00008 #include <QFutureWatcher> 00009 #include <QHash> 00010 #include <QSet> 00011 #include <QTableWidgetItem> 00012 00013 #include "arc-gui-config.h" 00014 00015 #include <arc/UserConfig.h> 00016 #if ARC_VERSION_MAJOR >= 3 00017 #include <arc/compute/Job.h> 00018 #include <arc/compute/JobSupervisor.h> 00019 #else 00020 #include <arc/client/Job.h> 00021 #include <arc/client/JobSupervisor.h> 00022 #endif 00023 00024 #include "JmBase.h" 00025 00026 class ArcJobController : public QObject 00027 { 00028 Q_OBJECT 00029 private: 00030 00031 QFutureWatcher<void> m_queryJobStatusWatcher; 00032 QFutureWatcher<void> m_downloadJobsWatcher; 00033 QFutureWatcher<void> m_killJobsWatcher; 00034 QFutureWatcher<void> m_cleanJobsWatcher; 00035 QFutureWatcher<void> m_resubmitJobsWatcher; 00036 QFutureWatcher<void> m_queryAllJobListStatusWatcher; 00037 QTableWidget* m_jobTable; 00038 QTableWidget* m_jobListTable; 00039 00040 Arc::JobSupervisor* m_jobSupervisor; 00041 std::list<Arc::Job> m_arcJobList; 00042 Arc::UserConfig m_userConfig; 00043 std::list<std::string> m_selectedJobIds; 00044 std::list<Arc::Job> m_selectedJobList; 00045 00046 QList<JmJobList*> m_jmJobLists; 00047 JmJobList* m_currentJmJobList; 00048 QSet<int> m_jobSelectionIndex; 00049 int m_currentJobListIndex; 00050 00051 QString m_downloadDir; 00052 Arc::LogStream logDest; 00053 void updateJobList(); 00054 void updateJobTable(); 00055 00056 public: 00057 ArcJobController(); 00058 virtual ~ArcJobController(); 00059 00060 void setup(); 00061 00062 void setJobTable(QTableWidget* tableWidget); 00063 void setJobListTable(QTableWidget* tableWidget); 00064 void setStatusOutput(QTextEdit* statusOutput); 00065 00066 void setDownloadDir(const QString& downloadDir); 00067 void setCurrentJobList(int idx); 00068 00069 void newJobList(const QString& jobListName); 00070 void openJobList(const QString& jobListName); 00071 void removeSelectedJobList(); 00072 void queryJobStatus(JmJobList* jobList); 00073 void queryJobStatus(); 00074 void queryAllJobListStatus(); 00075 void cleanJobs(); 00076 void killJobs(); 00077 void getJobs(); 00078 void resubmitJobs(); 00079 void selectAllJobs(); 00080 void clearSelection(); 00081 00082 void openSessionDir(); 00083 00084 void saveState(); 00085 void loadState(); 00086 00087 void startQueryJobStatus(); 00088 void startQueryAllJobListStatus(); 00089 void startDownloadJobs(); 00090 void startKillJobs(); 00091 void startCleanJobs(); 00092 void startResubmitJobs(); 00093 00094 private Q_SLOTS: 00095 void queryJobStatusFinished(); 00096 void queryAllJobListStatusFinished(); 00097 void downloadJobsFinished(); 00098 void killJobsFinished(); 00099 void cleanJobsFinished(); 00100 void resubmitJobsFinished(); 00101 void jobTableSelectionChanged(); 00102 void jobListSelectionChanged(); 00103 00104 Q_SIGNALS: 00105 void onQueryJobStatusDone(); 00106 void onDownloadJobsDone(); 00107 void onKillJobsDone(); 00108 void onCleanJobsDone(); 00109 void onResubmitJobsDone(); 00110 void onQueryAllJobListStatusDone(); 00111 }; 00112 00113 #endif // ARCJOBCONTROLLER_H