Ilwis-Objects  1.0
GIS and Remote Sensing framework for data access and processing
All Classes Functions Enumerations Pages
table.h
1 #ifndef TABLE_H
2 #define TABLE_H
3 
4 #include <QSqlDatabase>
5 #include <unordered_map>
6 
7 #include "Kernel_global.h"
8 
9 namespace Ilwis {
10 
11 static const quint32 NEW_RECORD=1e9;
12 
20 class KERNELSHARED_EXPORT Table : public IlwisObject
21 {
22 public:
23 
24  ~Table() {}
25 
32  virtual quint32 recordCount() const=0;
33 
40  virtual quint32 columnCount() const=0;
41 
50  virtual void recordCount(quint32 r)=0;
51 
57  virtual bool createTable() =0;
58 
70  virtual bool addColumn(const QString &name, const IDomain &domain)=0;
71 
82  virtual bool addColumn(const QString &name, const QString& domainname)=0;
83 
92  virtual bool addColumn(const ColumnDefinition& def)=0;
93 
102  virtual ColumnDefinition columndefinition(const QString& nme) const=0;
103 
112  virtual ColumnDefinition columndefinition(quint32 index) const=0;
113 
122  virtual ColumnDefinition& columndefinition(quint32 index) = 0;
123 
130  virtual void columndefinition(const ColumnDefinition& coldef) = 0;
131 
136  virtual void newRecord() = 0;
137 
145  virtual std::vector<QVariant> record(quint32 n) const = 0;
146 
155  virtual void record(quint32 rec, const std::vector<QVariant>& vars, quint32 offset=0) = 0;
156 
165  virtual std::vector<QVariant> column(const QString& nme, quint32 start=0, quint32 stop=2e9) const = 0;
166 
175  virtual std::vector<QVariant> column(quint32 index, quint32 start=0, quint32 stop=2e9) const = 0;
176 
185  virtual void column(const QString& nme, const std::vector<QVariant>& vars, quint32 offset=0) = 0;
186 
195  virtual void column(const quint32 index, const std::vector<QVariant>& vars, quint32 offset=0) = 0;
196 
206  virtual QVariant cell(const QString& col, quint32 rec, bool asRaw=true) const = 0;
207 
217  virtual QVariant cell(const quint32 index, quint32 rec, bool asRaw=true) const = 0;
218 
226  virtual void setCell(const QString& col, quint32 rec, const QVariant& var) = 0;
227 
235  virtual void setCell(quint32 col, quint32 rec, const QVariant& var) = 0;
236 
243  virtual quint32 columnIndex(const QString& nme) const = 0;
244 
255  virtual std::vector<quint32> select(const QString& conditions) const = 0;
256 
257  virtual void dataLoaded(bool yesno) = 0;
258  virtual bool isDataLoaded() const = 0;
259 
260 protected:
261  Table(const Resource& resource) :
262  IlwisObject(resource)
263  {}
264 
265  Table() : IlwisObject()
266  {}
267 
268 };
269 typedef IlwisData<Table> ITable;
270 }
271 
272 Q_DECLARE_METATYPE(Ilwis::ITable)
273 
274 // special columns
275 #define COVERAGEKEYCOLUMN "coverage_key"
276 #define FEATUREIDCOLUMN "feature_id"
277 #define FEATUREVALUECOLUMN "feature_value"
278 #define FEATURETYPECOLUMN "feature_type"
279 
280 #endif // TABLE_H