Ilwis-Objects  1.0
GIS and Remote Sensing framework for data access and processing
 All Classes Functions Enumerations Pages
basetable.h
1 #ifndef BASETABLE_H
2 #define BASETABLE_H
3 
4 #include <QSqlDatabase>
5 #include <unordered_map>
6 
7 #include "table.h"
8 
9 #include "Kernel_global.h"
10 
11 namespace Ilwis {
12 
13 class KERNELSHARED_EXPORT BaseTable : public Table
14 {
15 public:
19  BaseTable();
20 
30  BaseTable(const Resource& resource);
31 
32  ~BaseTable();
33 
34  //@override
35  virtual quint32 recordCount() const;
36 
37  //@override
38  virtual quint32 columnCount() const;
39 
40  //@override
41  virtual void recordCount(quint32 r);
42 
43  //@override
44  virtual bool createTable() ;
45 
46  //@override
47  virtual bool addColumn(const QString &name, const IDomain &domain);
48 
49  //@override
50  virtual bool addColumn(const QString &name, const QString& domainname);
51 
52  //@override
53  virtual bool addColumn(const ColumnDefinition& def);
54 
55  //@override
56  IlwisTypes ilwisType() const;
57 
58  //@override
59  ColumnDefinition columndefinition(const QString& nme) const;
60 
61  //@override
62  ColumnDefinition columndefinition(quint32 index) const;
63 
64  //@override
65  ColumnDefinition& columndefinition(quint32 index);
66 
67 
68  //@override
69  void columndefinition(const ColumnDefinition &coldef);
70 
71 
72  //@override
73  bool prepare();
74 
79  bool isValid() const;
80 
90  bool merge(const IlwisObject *obj, int options);
91  void dataLoaded(bool yesno);
92  bool isDataLoaded() const;
93 protected:
94  QHash<QString, ColumnDefinition> _columnDefinitionsByName;
95  QHash<quint32, ColumnDefinition> _columnDefinitionsByIndex;
96 
97  virtual bool initLoad();
98  virtual void adjustRange(int index);
99  void copyTo(IlwisObject *obj);
100  quint32 columnIndex(const QString& nme) const;
101  void columnCount(int cnt);
102  QVariant checkInput(const QVariant &inputVar, quint32 columnIndex);
103  void initValuesColumn(const ColumnDefinition &def);
104  void initRecord(std::vector<QVariant>& values) const;
105 private:
106  quint32 _rows;
107  quint32 _columns;
108  bool _dataloaded;
109 };
110 }
111 
112 
113 #endif // BASETABLE_H