Skip to content

Commit

Permalink
Implement connections API for spatialite
Browse files Browse the repository at this point in the history
API only: no client code is actually using this API yet.
  • Loading branch information
elpaso committed Oct 28, 2019
1 parent ce5405f commit ff39fe9
Show file tree
Hide file tree
Showing 8 changed files with 516 additions and 13 deletions.
3 changes: 3 additions & 0 deletions src/providers/spatialite/CMakeLists.txt
Expand Up @@ -12,6 +12,7 @@ SET(SPATIALITE_SRCS
qgsspatialiteconnpool.cpp
qgsspatialitefeatureiterator.cpp
qgsspatialitetablemodel.cpp
qgsspatialiteproviderconnection.cpp
)

SET(SPATIALITE_MOC_HDRS
Expand Down Expand Up @@ -49,7 +50,9 @@ ENDIF ()
INCLUDE_DIRECTORIES(
${CMAKE_SOURCE_DIR}/external
${CMAKE_SOURCE_DIR}/src/core
${CMAKE_SOURCE_DIR}/src/core/providers/ogr
${CMAKE_SOURCE_DIR}/src/core/expression
${CMAKE_SOURCE_DIR}/src/core/symbology
${CMAKE_SOURCE_DIR}/src/core/geometry
${CMAKE_SOURCE_DIR}/src/core/metadata
${CMAKE_SOURCE_DIR}/src/gui
Expand Down
30 changes: 30 additions & 0 deletions src/providers/spatialite/qgsspatialiteprovider.cpp
Expand Up @@ -30,6 +30,8 @@ email : a.furieri@lqt.it
#include "qgsspatialitefeatureiterator.h"
#include "qgsfeedback.h"
#include "qgsspatialitedataitems.h"
#include "qgsspatialiteconnection.h"
#include "qgsspatialiteproviderconnection.h"

#include "qgsjsonutils.h"
#include "qgsvectorlayer.h"
Expand Down Expand Up @@ -6054,6 +6056,34 @@ QList< QgsDataItemProvider * > QgsSpatiaLiteProviderMetadata::dataItemProviders(
return providers;
}



QMap<QString, QgsAbstractProviderConnection *> QgsSpatiaLiteProviderMetadata::connections( bool cached )
{
return connectionsProtected< QgsSpatiaLiteProviderConnection, QgsSpatiaLiteConnection>( cached );
}

QgsAbstractProviderConnection *QgsSpatiaLiteProviderMetadata::createConnection( const QString &connName )
{
return new QgsSpatiaLiteProviderConnection( connName );
}

QgsAbstractProviderConnection *QgsSpatiaLiteProviderMetadata::createConnection( const QString &uri, const QVariantMap &configuration )
{
return new QgsSpatiaLiteProviderConnection( uri, configuration );
}

void QgsSpatiaLiteProviderMetadata::deleteConnection( const QString &name )
{
deleteConnectionProtected<QgsSpatiaLiteProviderConnection>( name );
}

void QgsSpatiaLiteProviderMetadata::saveConnection( const QgsAbstractProviderConnection *conn, const QString &name )
{
saveConnectionProtected( conn, name );
}


QGISEXTERN QgsProviderMetadata *providerMetadataFactory()
{
return new QgsSpatiaLiteProviderMetadata();
Expand Down
13 changes: 13 additions & 0 deletions src/providers/spatialite/qgsspatialiteprovider.h
Expand Up @@ -406,6 +406,19 @@ class QgsSpatiaLiteProviderMetadata: public QgsProviderMetadata
const QMap<QString, QVariant> *options ) override;
bool createDb( const QString &dbPath, QString &errCause ) override;
QList< QgsDataItemProvider * > dataItemProviders() const override;

// QgsProviderMetadata interface
public:
QMap<QString, QgsAbstractProviderConnection *> connections( bool cached ) override;
QgsAbstractProviderConnection *createConnection( const QString &name ) override;
void deleteConnection( const QString &name ) override;
void saveConnection( const QgsAbstractProviderConnection *connection, const QString &name ) override;

protected:

QgsAbstractProviderConnection *createConnection( const QString &uri, const QVariantMap &configuration ) override;


};

// clazy:excludeall=qstring-allocations
Expand Down

0 comments on commit ff39fe9

Please sign in to comment.