00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef QUEUEINTERFACE_H
00017 #define QUEUEINTERFACE_H
00018
00019 #include <globalsearch/optbase.h>
00020
00021 #include <QtCore/QHash>
00022 #include <QtCore/QStringList>
00023
00024 class QDialog;
00025
00026 namespace GlobalSearch {
00027 class Structure;
00028
00041 class QueueInterface : public QObject
00042 {
00043 Q_OBJECT;
00044
00045 public:
00052 explicit QueueInterface(OptBase *parent,
00053 const QString &settingFile = "")
00054 : QObject(parent), m_opt(parent), m_hasDialog(false), m_dialog(0) {};
00055
00059 virtual ~QueueInterface() {};
00060
00065 enum QueueStatus {
00067 Unknown = -1,
00069 Success,
00071 Error,
00073 Queued,
00075 Running,
00077 CommunicationError,
00082 Started,
00084 Pending
00085 };
00086
00097 virtual bool isReadyToSearch(QString *err) {*err = ""; return true;}
00098
00099 public slots:
00100
00109 virtual void readSettings(const QString &filename = "") {}
00110
00119 virtual void writeSettings(const QString &filename = "") {}
00120
00131 virtual bool writeInputFiles(Structure *s) const;
00132
00146 virtual bool writeFiles(Structure *s,
00147 const QHash<QString, QString> &files) const =0;
00148
00157 virtual bool startJob(Structure *s) =0;
00158
00164 virtual bool stopJob(Structure *s) =0;
00165
00169 virtual QueueInterface::QueueStatus getStatus(Structure *s) const =0;
00170
00181 virtual bool prepareForStructureUpdate(Structure *s) const =0;
00182
00194 virtual bool checkIfFileExists(Structure *s,
00195 const QString &filename,
00196 bool *exists) =0;
00197
00204 virtual bool fetchFile(Structure *s,
00205 const QString &filename,
00206 QString *contents) const =0;
00207
00238 virtual bool grepFile(Structure *s,
00239 const QString &matchText,
00240 const QString &filename,
00241 QStringList *matches = 0,
00242 int *exitcode = 0,
00243 const bool caseSensitive = true) const =0;
00244
00249 QString getIDString() const {return m_idString;};
00250
00255 QStringList getTemplateFileNames() const {return m_templates;};
00256
00258
00264 bool hasDialog() {return m_hasDialog;};
00265
00272 virtual QDialog* dialog() {return m_dialog;};
00273
00274 protected:
00276 OptBase *m_opt;
00277
00279 QString m_idString;
00280
00283 QStringList m_templates;
00284
00286 bool m_hasDialog;
00287
00289 QDialog *m_dialog;
00290
00291 };
00292 }
00293
00294 #endif