Agroeye  1.0
DatabaseStatements.h
Go to the documentation of this file.
1 #ifndef DATABASESTATEMENTS_H
2 #define DATABASESTATEMENTS_H
3 
4 #include <memory>
5 #include <vector>
6 #include <string>
7 #include <unordered_map>
8 #include <regex>
9 
10 #include <sqlite3.h>
11 
12 #include "SegmentationParameters.h"
13 #include "DatabaseTable.h"
14 #include "SpatialiteBlob.h"
15 
16 namespace agroeye {
17 namespace handlers {
18 
21 
26 public:
31  void setId(const uint32_t& id);
32  void process();
33  void flush();
35 protected:
37  GeneralStatement(std::shared_ptr<sqlite3> aPtrSql3) : ptrSql3(aPtrSql3) {};
40 
41  void prepare();
43  std::shared_ptr<sqlite3> ptrSql3 {nullptr};
44  std::unique_ptr<sqlite3_stmt, int(*)(sqlite3_stmt*)> ptrStmt {nullptr, [](sqlite3_stmt* pStmt) {return sqlite3_finalize(pStmt);}};
46  std::string buffer;
47  size_t id_position {0};
48 };
49 
51 public:
61  GeometryStatement(std::shared_ptr<sqlite3> ptrSql3, const DbTable& table);
70  void setGeometry(SpatialiteBlobWkb&& blob);
71 private:
72  size_t the_geom_position {0};
73 };
74 
75 
77 public:
86  StatisticStatement(std::shared_ptr<sqlite3> aPtrSql3, const DbTable& table);
89 
96  void setBandValue(const int& band, const double& value);
97 
98 private:
99  using BandPosition = std::pair<int, int>;
100  int extractBandValue(const std::string& bandName) const;
101  std::vector<BandPosition> bandPositionList;
102 };
103 
111 public:
119  PreparedStatement(GeometryStatement&& aGeomStmt) : geomStmt(std::move(aGeomStmt)) {};
120 
126  void addStatStmt(const StatisticsTypes& type, StatisticStatement&& statStmt);
127 
133  void setId(uint32_t id);
134 
140  void setGeometry(SpatialiteBlobWkb&& blob);
141 
149  void setStatBandValue(const StatisticsTypes& type, const int& band, const double& value);
150  void process();
151  void flush();
152 protected:
154  std::vector<std::pair<StatisticsTypes, StatisticStatement>> statStmts;
155 };
156 
157 } // namespace handlers2
158 } // namespace agroeye
159 
160 #endif
StatisticStatement()
Definition: DatabaseStatements.h:78
GeometryStatement()
Definition: DatabaseStatements.h:52
std::unique_ptr< sqlite3_stmt, int(*)(sqlite3_stmt *)> ptrStmt
Definition: DatabaseStatements.h:44
Definition: SpatialiteBlob.h:10
void setId(const uint32_t &id)
Sets id value of inserting row.
Definition: DatabaseStatements.cpp:6
Class encapulating group of statements.
Definition: DatabaseStatements.h:110
Definition: ContainerMath.h:11
GeneralStatement & operator=(GeneralStatement &&)=default
size_t id_position
Definition: DatabaseStatements.h:47
GeometryStatement geomStmt
Definition: DatabaseStatements.h:153
void process()
Definition: DatabaseStatements.cpp:10
Encapsulation of table in database.
Definition: DatabaseTable.h:20
Definition: DatabaseStatements.h:50
void prepare()
Definition: DatabaseStatements.cpp:20
std::string buffer
Definition: DatabaseStatements.h:46
std::vector< std::pair< StatisticsTypes, StatisticStatement > > statStmts
Definition: DatabaseStatements.h:154
PreparedStatement()
Definition: DatabaseStatements.h:112
Class encapsulating the general insert statement into database.
Definition: DatabaseStatements.h:25
Definition: DatabaseStatements.h:76
std::shared_ptr< sqlite3 > ptrSql3
Definition: DatabaseStatements.h:43
GeneralStatement(std::shared_ptr< sqlite3 > aPtrSql3)
Definition: DatabaseStatements.h:37
void flush()
Definition: DatabaseStatements.cpp:15
GeneralStatement()
Definition: DatabaseStatements.h:36
StatisticsTypes
Type of statistics that can be calculated.
Definition: SegmentationParameters.h:15
PreparedStatement(GeometryStatement &&aGeomStmt)
Constructor if there is geoemtry statment.
Definition: DatabaseStatements.h:119