mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-04 00:04:03 -04:00
remove NoThreading flag and use decodeUri to retrieve path from the layer source
This commit is contained in:
parent
9ef46c27f1
commit
7c5c281b47
@ -59,11 +59,6 @@ QString QgsExportToSpatialiteAlgorithm::shortDescription() const
|
|||||||
return QObject::tr( "Exports a vector layer to a SpatiaLite database, creating a new table." );
|
return QObject::tr( "Exports a vector layer to a SpatiaLite database, creating a new table." );
|
||||||
}
|
}
|
||||||
|
|
||||||
Qgis::ProcessingAlgorithmFlags QgsExportToSpatialiteAlgorithm::flags() const
|
|
||||||
{
|
|
||||||
return QgsProcessingAlgorithm::flags() | Qgis::ProcessingAlgorithmFlag::NoThreading;
|
|
||||||
}
|
|
||||||
|
|
||||||
QgsExportToSpatialiteAlgorithm *QgsExportToSpatialiteAlgorithm::createInstance() const
|
QgsExportToSpatialiteAlgorithm *QgsExportToSpatialiteAlgorithm::createInstance() const
|
||||||
{
|
{
|
||||||
return new QgsExportToSpatialiteAlgorithm();
|
return new QgsExportToSpatialiteAlgorithm();
|
||||||
@ -84,23 +79,27 @@ void QgsExportToSpatialiteAlgorithm::initAlgorithm( const QVariantMap & )
|
|||||||
addParameter( new QgsProcessingParameterBoolean( QStringLiteral( "FORCE_SINGLEPART" ), QObject::tr( "Create single-part geometries instead of multipart" ), false ) );
|
addParameter( new QgsProcessingParameterBoolean( QStringLiteral( "FORCE_SINGLEPART" ), QObject::tr( "Create single-part geometries instead of multipart" ), false ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool QgsExportToSpatialiteAlgorithm::prepareAlgorithm( const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback * )
|
||||||
|
{
|
||||||
|
QgsVectorLayer *layer = parameterAsVectorLayer( parameters, QStringLiteral( "DATABASE" ), context );
|
||||||
|
mProviderType = layer->providerType();
|
||||||
|
mDatabaseUri = layer->dataProvider()->dataSourceUri();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
QVariantMap QgsExportToSpatialiteAlgorithm::processAlgorithm( const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback *feedback )
|
QVariantMap QgsExportToSpatialiteAlgorithm::processAlgorithm( const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback *feedback )
|
||||||
{
|
{
|
||||||
std::unique_ptr<QgsProcessingFeatureSource> source( parameterAsSource( parameters, QStringLiteral( "INPUT" ), context ) );
|
std::unique_ptr<QgsProcessingFeatureSource> source( parameterAsSource( parameters, QStringLiteral( "INPUT" ), context ) );
|
||||||
if ( !source )
|
if ( !source )
|
||||||
throw QgsProcessingException( invalidSourceError( parameters, QStringLiteral( "INPUT" ) ) );
|
throw QgsProcessingException( invalidSourceError( parameters, QStringLiteral( "INPUT" ) ) );
|
||||||
|
|
||||||
QgsVectorLayer *layer = parameterAsVectorLayer( parameters, QStringLiteral( "DATABASE" ), context );
|
QgsDataSourceUri uri( mDatabaseUri );
|
||||||
QString databaseUri = layer->dataProvider()->dataSourceUri();
|
|
||||||
QgsDataSourceUri uri( databaseUri );
|
|
||||||
if ( uri.database().isEmpty() )
|
if ( uri.database().isEmpty() )
|
||||||
{
|
{
|
||||||
if ( databaseUri.contains( QStringLiteral( "|layername" ), Qt::CaseInsensitive ) )
|
QgsProviderMetadata *md = QgsProviderRegistry::instance()->providerMetadata( mProviderType );
|
||||||
databaseUri = databaseUri.left( databaseUri.indexOf( QLatin1String( "|layername" ) ) );
|
const QVariantMap parts = md->decodeUri( mDatabaseUri );
|
||||||
else if ( databaseUri.contains( QStringLiteral( "|layerid" ), Qt::CaseInsensitive ) )
|
mDatabaseUri = parts.value( QStringLiteral( "path" ) ).toString();
|
||||||
databaseUri = databaseUri.left( databaseUri.indexOf( QLatin1String( "|layerid" ) ) );
|
uri = QgsDataSourceUri( QStringLiteral( "dbname='%1'" ).arg( mDatabaseUri ) );
|
||||||
|
|
||||||
uri = QgsDataSourceUri( QStringLiteral( "dbname='%1'" ).arg( databaseUri ) );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<QgsAbstractDatabaseProviderConnection> conn;
|
std::unique_ptr<QgsAbstractDatabaseProviderConnection> conn;
|
||||||
|
@ -40,11 +40,15 @@ class QgsExportToSpatialiteAlgorithm : public QgsProcessingAlgorithm
|
|||||||
QString groupId() const override;
|
QString groupId() const override;
|
||||||
QString shortHelpString() const override;
|
QString shortHelpString() const override;
|
||||||
QString shortDescription() const override;
|
QString shortDescription() const override;
|
||||||
Qgis::ProcessingAlgorithmFlags flags() const override;
|
|
||||||
QgsExportToSpatialiteAlgorithm *createInstance() const override SIP_FACTORY;
|
QgsExportToSpatialiteAlgorithm *createInstance() const override SIP_FACTORY;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
bool prepareAlgorithm( const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
|
||||||
QVariantMap processAlgorithm( const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
|
QVariantMap processAlgorithm( const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
QString mProviderType;
|
||||||
|
QString mDatabaseUri;
|
||||||
};
|
};
|
||||||
|
|
||||||
///@endcond PRIVATE
|
///@endcond PRIVATE
|
||||||
|
Loading…
x
Reference in New Issue
Block a user