Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Copy shared data post-layer-clone
  • Loading branch information
m-kuhn authored and nyalldawson committed Jan 9, 2022
1 parent 215b368 commit 3511158
Show file tree
Hide file tree
Showing 10 changed files with 35 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/providers/arcgisrest/qgsafsprovider.cpp
Expand Up @@ -358,6 +358,11 @@ QString QgsAfsProvider::providerKey()
return AFS_PROVIDER_KEY;
}

void QgsAfsProvider::handlePostCloneOperations( QgsVectorDataProvider *source )
{
mSharedData = qobject_cast<QgsAfsProvider *>( source )->mSharedData;
}

QString QgsAfsProvider::description() const
{
return AFS_PROVIDER_DESCRIPTION;
Expand Down
2 changes: 2 additions & 0 deletions src/providers/arcgisrest/qgsafsprovider.h
Expand Up @@ -81,6 +81,8 @@ class QgsAfsProvider : public QgsVectorDataProvider

static QString providerKey();

void handlePostCloneOperations( QgsVectorDataProvider *source ) override;

private:
bool mValid = false;
std::shared_ptr<QgsAfsSharedData> mSharedData;
Expand Down
5 changes: 5 additions & 0 deletions src/providers/mssql/qgsmssqlprovider.cpp
Expand Up @@ -1899,6 +1899,11 @@ std::shared_ptr<QgsMssqlDatabase> QgsMssqlProvider::connection() const
return mTransaction ? mTransaction->conn() : QgsMssqlDatabase::connectDb( uri().connectionInfo(), false );
}

void QgsMssqlProvider::handlePostCloneOperations( QgsVectorDataProvider *source )
{
mShared = qobject_cast<QgsMssqlProvider *>( source )->mShared;
}

QString QgsMssqlProvider::subsetString() const
{
return mSqlWhereClause;
Expand Down
2 changes: 2 additions & 0 deletions src/providers/mssql/qgsmssqlprovider.h
Expand Up @@ -166,6 +166,8 @@ class QgsMssqlProvider final: public QgsVectorDataProvider

std::shared_ptr<QgsMssqlDatabase> connection() const;

void handlePostCloneOperations( QgsVectorDataProvider *source ) override;

protected:
//! Loads fields from input file to member attributeFields
QVariant::Type DecodeSqlType( const QString &sqlTypeName );
Expand Down
5 changes: 5 additions & 0 deletions src/providers/oracle/qgsoracleprovider.cpp
Expand Up @@ -229,6 +229,11 @@ Qgis::VectorLayerTypeFlags QgsOracleProvider::vectorLayerTypeFlags() const
return flags;
}

void QgsOracleProvider::handlePostCloneOperations( QgsVectorDataProvider *source )
{
mShared = qobject_cast<QgsOracleProvider *>( source )->mShared;
}

void QgsOracleProvider::setWorkspace( const QString &workspace )
{
QgsDataSourceUri prevUri( mUri );
Expand Down
2 changes: 2 additions & 0 deletions src/providers/oracle/qgsoracleprovider.h
Expand Up @@ -191,6 +191,8 @@ class QgsOracleProvider final: public QgsVectorDataProvider

Qgis::VectorLayerTypeFlags vectorLayerTypeFlags() const override;

void handlePostCloneOperations( QgsVectorDataProvider *source ) override;

private:
QString whereClause( QgsFeatureId featureId, QVariantList &args ) const;
QString pkParamWhereClause() const;
Expand Down
5 changes: 5 additions & 0 deletions src/providers/wfs/qgsoapifprovider.cpp
Expand Up @@ -335,6 +335,11 @@ const QString &QgsOapifProvider::clientSideFilterExpression() const
return mShared->mClientSideFilterExpression;
}

void QgsOapifProvider::handlePostCloneOperations( QgsVectorDataProvider *source )
{
mShared = qobject_cast<QgsOapifProvider *>( source ) ->mShared;
}

QString QgsOapifProvider::name() const
{
return OAPIF_PROVIDER_KEY;
Expand Down
2 changes: 2 additions & 0 deletions src/providers/wfs/qgsoapifprovider.h
Expand Up @@ -89,6 +89,8 @@ class QgsOapifProvider final: public QgsVectorDataProvider
//! For QgsWFSSourceSelect::buildQuery()
const QString &clientSideFilterExpression() const;

void handlePostCloneOperations( QgsVectorDataProvider *source ) override;

private slots:

void pushErrorSlot( const QString &errorMsg );
Expand Down
5 changes: 5 additions & 0 deletions src/providers/wfs/qgswfsprovider.cpp
Expand Up @@ -1312,6 +1312,11 @@ bool QgsWFSProvider::empty() const
#endif
return !getFeatures( request ).nextFeature( f );

}

void QgsWFSProvider::handlePostCloneOperations( QgsVectorDataProvider *source )
{
mShared = qobject_cast<QgsWFSProvider *>( source )->mShared;
};

bool QgsWFSProvider::describeFeatureType( QString &geometryAttribute, QgsFields &fields, QgsWkbTypes::Type &geomType )
Expand Down
2 changes: 2 additions & 0 deletions src/providers/wfs/qgswfsprovider.h
Expand Up @@ -126,6 +126,8 @@ class QgsWFSProvider final: public QgsVectorDataProvider

std::shared_ptr<QgsWFSSharedData> sharedData() const { return mShared; }

void handlePostCloneOperations( QgsVectorDataProvider *source ) override;

private slots:

void featureReceivedAnalyzeOneFeature( QVector<QgsFeatureUniqueIdPair> );
Expand Down

0 comments on commit 3511158

Please sign in to comment.