Fire Core  8.0.0.alpha
GIS framework per tutti gli usi
 Tutto Classi Namespace Funzioni Variabili Ridefinizioni di tipo (typedef) Tipi enumerati (enum) Valori del tipo enumerato Friend
DataRow.hpp
1 // Copyright 2015 GEOSYSTEMS SRL
2 // All Rights Reserved.
3 
4 #ifndef FIRE_SOURCE_VECTOR_DATAROW_HPP_INCLUDED
5 #define FIRE_SOURCE_VECTOR_DATAROW_HPP_INCLUDED
6 
7 #include <boost/thread/mutex.hpp>
8 
9 #include <map>
10 #include <string>
11 #include <vector>
12 #include <exception>
13 
14 #include "fire/gis/export.hpp"
15 #include "fire/source/vector/Metadata.hpp"
16 #include "fire/source/vector/DataValue.hpp"
17 #include "fire/source/vector/shared/MetadataSh.hpp"
18 
19 namespace fire {
20 namespace source {
21 namespace vector {
22 
23 class ConnectionVectorSh;
24 
25 namespace shared {
26 class DataRowSh;
27 } // namespace shared
28 
32 class FIRE_GIS_DLL DataRow {
33  public:
38 
42  typedef std::vector< DataValue::DataValueShp > VctValue;
43 
47  typedef std::map< std::string, DataValue::DataValueShp > MapSqlParam;
48 
49  public:
55  static DataRow::DataRowShp newRow(Metadata::MetadataShp const & mtd);
56 
61  explicit DataRow(const Metadata::MetadataShp& md);
62 
66  virtual ~DataRow();
67 
72  Metadata::MetadataShp const getMetadata() const;
73 
78  int getCount() const;
79 
84  bool isChanged() const;
85 
91  void set(const size_t &idx, const DataValue::DataValueShp& val);
92 
99  void set(const std::string& name, const DataValue::DataValueShp& val);
100 
106  DataValue::DataValueShp const get(const int& idx) const;
107  DataValue::DataValueShp get(const int& idx);
108 
114  const DataValue::DataValueShp get(const std::string& name) const;
115  DataValue::DataValueShp get(const std::string& name);
116 
121  void getPrimaryKey(VctValue& list) const;
122 
126  void saveOrUpdate();
127 
131  void insert();
132 
136  void update();
137 
141  void erase();
142 
146  void committed();
147 
148  private:
149  DataRow(const DataRow& source);
150  DataRow& operator=(const DataRow& source);
151 
152  bool _isValidIndexNoWait(const size_t& idx) const;
153  void _validateIndexNoWait(const size_t& idx) const;
154  size_t _name2IndexNoWait(const std::string& name) const;
155  std::string _getUpdateSql(VctValue& params) const;
156  void _setNoWait(const size_t &idx, const DataValue::DataValueShp& val);
157 
158  bool _changed;
159  VctValue _values;
160  Metadata::MetadataShp const _mtd;
161 
162  mutable boost::mutex _mtx;
163 };
164 } // namespace vector
165 } // namespace source
166 } // namespace fire
167 
168 #endif
std::map< std::string, DataValue::DataValueShp > MapSqlParam
Mappa di parametri usata per query SQL parametriche.
Definition: DataRow.hpp:47
Definition: DataRowSh.hpp:22
Definition: MetadataSh.hpp:22
shared::DataRowSh DataRowShp
Istanza condivisa di un oggetto DataRow.
Definition: DataRow.hpp:37
std::vector< DataValue::DataValueShp > VctValue
Vettore di istanze condivise fire::source::vector::DataValue.
Definition: DataRow.hpp:42
Definition: DataValueSh.hpp:24
Oggetto per l'accesso alle colonne di una riga di dati.
Definition: DataRow.hpp:32