Skip to content

Commit

Permalink
Implement sinkProperties for QgsProcessingFeatureBasedAlgorithm subcl…
Browse files Browse the repository at this point in the history
…asses
  • Loading branch information
nyalldawson committed Apr 7, 2020
1 parent 2d8da25 commit b2ca789
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 0 deletions.
Expand Up @@ -1191,6 +1191,11 @@ Read the source from ``parameters`` and ``context`` and set it
.. versionadded:: 3.4
%End

virtual QgsProcessingAlgorithm::VectorProperties sinkProperties( const QString &sink,
const QVariantMap &parameters,
QgsProcessingContext &context,
const QMap< QString, QgsProcessingAlgorithm::VectorProperties > &sourceProperties ) const;

};


Expand Down
31 changes: 31 additions & 0 deletions src/core/processing/qgsprocessingalgorithm.cpp
Expand Up @@ -1031,3 +1031,34 @@ void QgsProcessingFeatureBasedAlgorithm::prepareSource( const QVariantMap &param
}
}


QgsProcessingAlgorithm::VectorProperties QgsProcessingFeatureBasedAlgorithm::sinkProperties( const QString &sink, const QVariantMap &parameters, QgsProcessingContext &context, const QMap<QString, QgsProcessingAlgorithm::VectorProperties> &sourceProperties ) const
{
QgsProcessingAlgorithm::VectorProperties result;
if ( sink == QStringLiteral( "OUTPUT" ) )
{
if ( sourceProperties.value( QStringLiteral( "INPUT" ) ).availability == QgsProcessingAlgorithm::Available )
{
const VectorProperties inputProps = sourceProperties.value( QStringLiteral( "INPUT" ) );
result.fields = outputFields( inputProps.fields );
result.crs = outputCrs( inputProps.crs );
result.wkbType = outputWkbType( inputProps.wkbType );
result.availability = Available;
return result;
}
else
{
std::unique_ptr< QgsProcessingFeatureSource > source( parameterAsSource( parameters, QStringLiteral( "INPUT" ), context ) );
if ( source )
{
result.fields = outputFields( source->fields() );
result.crs = outputCrs( source->sourceCrs() );
result.wkbType = outputWkbType( source->wkbType() );
result.availability = Available;
return result;
}
}
}
return result;
}

5 changes: 5 additions & 0 deletions src/core/processing/qgsprocessingalgorithm.h
Expand Up @@ -1199,6 +1199,11 @@ class CORE_EXPORT QgsProcessingFeatureBasedAlgorithm : public QgsProcessingAlgor
*/
void prepareSource( const QVariantMap &parameters, QgsProcessingContext &context );

QgsProcessingAlgorithm::VectorProperties sinkProperties( const QString &sink,
const QVariantMap &parameters,
QgsProcessingContext &context,
const QMap< QString, QgsProcessingAlgorithm::VectorProperties > &sourceProperties ) const override;

private:

std::unique_ptr< QgsProcessingFeatureSource > mSource;
Expand Down

0 comments on commit b2ca789

Please sign in to comment.