DISPLACE  1.0
A spatial model of fisheries to help sustainable fishing and maritime spatial planning
populationdistributiondatamergerstrategy.h
Go to the documentation of this file.
1 #ifndef POPULATIONDISTRIBUTIONDATAMERGERSTRATEGY_H
2 #define POPULATIONDISTRIBUTIONDATAMERGERSTRATEGY_H
3 
4 #include <workers/datamerger.h>
5 
6 namespace displace {
7 namespace workers {
8 
10 {
11 public:
13 
14  void attach(DataMerger *merger) override;
15  bool processHeaderField(QString field, int i) override;
16  bool postHeaderProcessed() override;
17  void processLine (int linenum, QString line) override;
18  bool saveOutput(QString out) override;
19 
20  void setStocks(QStringList stocks);
21  void setGroups(QList<int> groups);
22  void setPopulationOutputFileName(QString name);
23 
24  static const char *const YearField;
25  static const char *const SemesterField;
26  static const char *const LatField;
27  static const char *const LongField;
28  static const char *const StockField;
29  static const char *const IndivFieldPattern;
30  static const char *const SizeFieldBeginning;
31 private:
32  DataMerger *mOwner;
33  DisplaceModel *mModel;
34 
35  QStringList mFields;
36  QMutex mutex;
37 
38  int col_yr = -1, col_sem = -1, col_lat = -1, col_lon = -1, col_stock = -1, col_indiv = -1;
39  int num_col_indiv = 0;
40 
41  QMap<QString, int> mStockNames;
42  QList<int> mGroups;
43  bool mFilterStocks;
44 
45  QString mPopOutFileName;
46 
47  int getStockName(QString nm);
48  bool isGroupSelected(int idx);
49 
50  /* Result will be put in a set for processing */
51 
52  typedef unsigned long ResultKey;
53  struct Result {
54  public:
55  unsigned int node = 0;
56  unsigned int year = 0;
57  unsigned int semester = 0;
58  unsigned int stock = 0;
59  QVector<double> population;
60  QVector<double> weights;
61  bool centered = false; // flags the node for centered in a grid node - w=u(i)
62 
63  explicit Result(int n)
64  : population(n), weights(n) {
65  }
66  };
67 
68  QMap<ResultKey, Result> mResults;
69 
70  ResultKey genResultKey (const Result &result);
71 };
72 
73 
74 } } // ns
75 
76 #endif // POPULATIONDISTRIBUTIONDATAMERGERSTRATEGY_H
static const char *const StockField
Definition: populationdistributiondatamergerstrategy.h:28
Definition: datamerger.h:16
static const char *const YearField
Definition: populationdistributiondatamergerstrategy.h:24
Definition: decisiontreemanager.h:13
void setGroups(QList< int > groups)
Definition: populationdistributiondatamergerstrategy.cpp:242
static const char *const SizeFieldBeginning
Definition: populationdistributiondatamergerstrategy.h:30
static const char *const IndivFieldPattern
Definition: populationdistributiondatamergerstrategy.h:29
void setPopulationOutputFileName(QString name)
Definition: populationdistributiondatamergerstrategy.cpp:251
bool processHeaderField(QString field, int i) override
Definition: populationdistributiondatamergerstrategy.cpp:30
void attach(DataMerger *merger) override
Definition: populationdistributiondatamergerstrategy.cpp:25
static const char *const LatField
Definition: populationdistributiondatamergerstrategy.h:26
static const char *const SemesterField
Definition: populationdistributiondatamergerstrategy.h:25
Definition: displacemodel.h:71
void setStocks(QStringList stocks)
Definition: populationdistributiondatamergerstrategy.cpp:234
void processLine(int linenum, QString line) override
process a single line of the file
Definition: populationdistributiondatamergerstrategy.cpp:66
bool postHeaderProcessed() override
Definition: populationdistributiondatamergerstrategy.cpp:52
bool saveOutput(QString out) override
Definition: populationdistributiondatamergerstrategy.cpp:152
Definition: populationdistributiondatamergerstrategy.h:9
Definition: datamerger.h:20
static const char *const LongField
Definition: populationdistributiondatamergerstrategy.h:27
PopulationDistributionDataMergerStrategy(DisplaceModel *model)
Definition: populationdistributiondatamergerstrategy.cpp:16