Branch data Line data Source code
1 : : /*************************************************************************** 2 : : QgsGeoPackageProviderConnection.h - QgsGeoPackageProviderConnection 3 : : 4 : : --------------------- 5 : : begin : 6.8.2019 6 : : copyright : (C) 2019 by Alessandro Pasotti 7 : : email : elpaso at itopen dot it 8 : : *************************************************************************** 9 : : * * 10 : : * This program is free software; you can redistribute it and/or modify * 11 : : * it under the terms of the GNU General Public License as published by * 12 : : * the Free Software Foundation; either version 2 of the License, or * 13 : : * (at your option) any later version. * 14 : : * * 15 : : ***************************************************************************/ 16 : : 17 : : #ifndef QGSGEOPACKAGEPROVIDERCONNECTION_H 18 : : #define QGSGEOPACKAGEPROVIDERCONNECTION_H 19 : : 20 : : #include "qgsabstractdatabaseproviderconnection.h" 21 : : #include "qgsogrutils.h" 22 : : 23 : : ///@cond PRIVATE 24 : : #define SIP_NO_FILE 25 : : 26 : : 27 : : 28 : : struct QgsGeoPackageProviderResultIterator: public QgsAbstractDatabaseProviderConnection::QueryResult::QueryResultIterator 29 : : { 30 : 0 : QgsGeoPackageProviderResultIterator( gdal::ogr_datasource_unique_ptr hDS, OGRLayerH ogrLayer ) 31 : 0 : : mHDS( std::move( hDS ) ) 32 : 0 : , mOgrLayer( ogrLayer ) 33 : 0 : {} 34 : : 35 : : ~QgsGeoPackageProviderResultIterator(); 36 : : 37 : : void setFields( const QgsFields &fields ); 38 : : 39 : : private: 40 : : 41 : : gdal::ogr_datasource_unique_ptr mHDS; 42 : : OGRLayerH mOgrLayer; 43 : : QgsFields mFields; 44 : : QVariantList mNextRow; 45 : : 46 : : QVariantList nextRowPrivate() override; 47 : : QVariantList nextRowInternal(); 48 : : bool hasNextRowPrivate() const override; 49 : : 50 : : }; 51 : : 52 : 0 : class QgsGeoPackageProviderConnection : public QgsAbstractDatabaseProviderConnection 53 : : { 54 : : public: 55 : : 56 : : QgsGeoPackageProviderConnection( const QString &name ); 57 : : QgsGeoPackageProviderConnection( const QString &uri, const QVariantMap &configuration ); 58 : : 59 : : 60 : : // QgsAbstractProviderConnection interface 61 : : public: 62 : : void store( const QString &name ) const override; 63 : : void remove( const QString &name ) const override; 64 : : QString tableUri( const QString &schema, const QString &name ) const override; 65 : : void createVectorTable( const QString &schema, const QString &name, const QgsFields &fields, QgsWkbTypes::Type wkbType, const QgsCoordinateReferenceSystem &srs, bool overwrite, const QMap<QString, QVariant> *options ) const override; 66 : : void dropVectorTable( const QString &schema, const QString &name ) const override; 67 : : void dropRasterTable( const QString &schema, const QString &name ) const override; 68 : : void renameVectorTable( const QString &schema, const QString &name, const QString &newName ) const override; 69 : : QueryResult execSql( const QString &sql, QgsFeedback *feedback = nullptr ) const override; 70 : : void vacuum( const QString &schema, const QString &name ) const override; 71 : : void createSpatialIndex( const QString &schema, const QString &name, const QgsAbstractDatabaseProviderConnection::SpatialIndexOptions &options = QgsAbstractDatabaseProviderConnection::SpatialIndexOptions() ) const override; 72 : : bool spatialIndexExists( const QString &schema, const QString &name, const QString &geometryColumn ) const override; 73 : : void deleteSpatialIndex( const QString &schema, const QString &name, const QString &geometryColumn ) const override; 74 : : QList<QgsAbstractDatabaseProviderConnection::TableProperty> tables( const QString &schema = QString(), 75 : : const TableFlags &flags = TableFlags() ) const override; 76 : : QIcon icon() const override; 77 : : QList<QgsVectorDataProvider::NativeType> nativeTypes() const override; 78 : : 79 : : private: 80 : : 81 : : void setDefaultCapabilities(); 82 : : //! Use GDAL to execute SQL 83 : : QueryResult executeGdalSqlPrivate( const QString &sql, QgsFeedback *feedback = nullptr ) const; 84 : : 85 : : 86 : : }; 87 : : 88 : : 89 : : 90 : : ///@endcond 91 : : #endif // QGSGEOPACKAGEPROVIDERCONNECTION_H