Accelerated Computation Engine
ace_analytic_abstractmanager.h
1 #ifndef ACE_ANALYTIC_ABSTRACTMANAGER_H
2 #define ACE_ANALYTIC_ABSTRACTMANAGER_H
3 #include <memory>
4 #include <QObject>
5 #include <QVector>
6 #include <QVariant>
7 #include "eabstractanalytic_input.h"
8 #include "ace.h"
9 
10 
11 
12 class QFile;
13 //
14 
15 
16 
17 namespace Ace
18 {
19  namespace Analytic
20  {
32  class AbstractManager : public QObject
33  {
34  Q_OBJECT
35  public:
36  static std::unique_ptr<Ace::Analytic::AbstractManager> makeManager(quint16 type, int index, int size);
37  quint16 analyticType() const;
38  int size() const;
39  EAbstractAnalytic::Input::Type type(int index) const;
40  QVariant data(int index, EAbstractAnalytic::Input::Role role) const;
41  QList<QString> commandLineArguments() const;
42  void set(int index, const QVariant& value);
43  signals:
49  void progressed(int percentComplete);
53  void done();
58  void finished();
59  public slots:
60  void initialize();
61  void terminationRequested();
62  void finish();
63  protected:
64  virtual QFile* addOutputFile(const QString& path);
65  virtual Ace::DataObject* addOutputData(const QString& path, quint16 type, const EMetadata& system);
66  protected:
67  explicit AbstractManager(quint16 type);
68  std::unique_ptr<EAbstractAnalytic::Block> makeWork(int index);
69  void writeResult(std::unique_ptr<EAbstractAnalytic::Block>&& result, int expectedIndex);
71  const EAbstractAnalytic* analytic() const;
72  protected slots:
73  virtual void start();
74  private:
75  void setupInput();
76  void inputBasic();
77  void inputFiles();
78  QFile* addInputFile(const QString& path);
79  void inputData();
80  EMetadata inputDataIn();
81  Ace::DataObject* addInputData(const QString& path);
82  EMetadata buildMeta(const QList<Ace::DataObject*>& inputs);
83  EMetadata buildMetaVersion();
84  EMetadata buildMetaInput(const QList<Ace::DataObject*>& inputs);
85  EMetadata buildMetaCommand();
86  void inputDataOut(const EMetadata& system);
90  quint16 _type;
95  EAbstractAnalytic* _analytic;
101  EAbstractAnalytic::Input* _input;
106  QVector<QVariant> _inputs;
111  QList<Ace::DataObject*> _outputData;
115  int _percentComplete {0};
116  };
117  }
118 }
119 
120 
121 
122 #endif
Definition: eabstractanalytic.h:24
Definition: ace.h:6
AbstractManager(quint16 type)
Definition: ace_analytic_abstractmanager.cpp:366
void progressed(int percentComplete)
void initialize()
Definition: ace_analytic_abstractmanager.cpp:220
quint16 analyticType() const
Definition: ace_analytic_abstractmanager.cpp:99
static std::unique_ptr< Ace::Analytic::AbstractManager > makeManager(quint16 type, int index, int size)
Definition: ace_analytic_abstractmanager.cpp:48
Definition: eabstractanalytic_input.h:22
virtual QFile * addOutputFile(const QString &path)
Definition: ace_analytic_abstractmanager.cpp:294
EAbstractAnalytic::Input::Type type(int index) const
Definition: ace_analytic_abstractmanager.cpp:136
Definition: ace_analytic_abstractmanager.h:32
void finish()
Definition: ace_analytic_abstractmanager.cpp:261
void terminationRequested()
Definition: ace_analytic_abstractmanager.cpp:245
int size() const
Definition: ace_analytic_abstractmanager.cpp:116
virtual Ace::DataObject * addOutputData(const QString &path, quint16 type, const EMetadata &system)
Definition: ace_analytic_abstractmanager.cpp:338
Definition: emetadata.h:22
Type
Definition: eabstractanalytic_input.h:29
Role
Definition: eabstractanalytic_input.h:72
std::unique_ptr< EAbstractAnalytic::Block > makeWork(int index)
Definition: ace_analytic_abstractmanager.cpp:406
QVariant data(int index, EAbstractAnalytic::Input::Role role) const
Definition: ace_analytic_abstractmanager.cpp:157
EAbstractAnalytic * analytic()
Definition: ace_analytic_abstractmanager.cpp:488
void writeResult(std::unique_ptr< EAbstractAnalytic::Block > &&result, int expectedIndex)
Definition: ace_analytic_abstractmanager.cpp:447
virtual void start()
Definition: ace_analytic_abstractmanager.cpp:521
Definition: ace_dataobject.h:21
QList< QString > commandLineArguments() const
Definition: ace_analytic_abstractmanager.cpp:175