Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge pull request #35952 from elpaso/pgraster-decode-encode-uri
PG raster metadata: encode & decode uri
  • Loading branch information
elpaso committed Apr 23, 2020
2 parents 1af8b81 + 69d8398 commit 69d88d1
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 2 deletions.
47 changes: 46 additions & 1 deletion src/providers/postgres/raster/qgspostgresrasterprovider.cpp
Expand Up @@ -551,7 +551,6 @@ QVariantMap QgsPostgresRasterProviderMetadata::decodeUri( const QString &uri )
{ QStringLiteral( "username" ), dsUri.username() },
{ QStringLiteral( "password" ), dsUri.password() },
{ QStringLiteral( "authcfg" ), dsUri.authConfigId() },
{ QStringLiteral( "type" ), dsUri.wkbType() },
{ QStringLiteral( "selectatid" ), dsUri.selectAtIdDisabled() },
{ QStringLiteral( "table" ), dsUri.table() },
{ QStringLiteral( "schema" ), dsUri.schema() },
Expand All @@ -563,9 +562,55 @@ QVariantMap QgsPostgresRasterProviderMetadata::decodeUri( const QString &uri )
{ QStringLiteral( "geometrycolumn" ), dsUri.geometryColumn() },
{ QStringLiteral( "temporalFieldIndex" ), dsUri.param( QStringLiteral( "temporalFieldIndex" ) ) },
{ QStringLiteral( "temporalDefaultTime" ), dsUri.param( QStringLiteral( "temporalDefaultTime" ) ) },
{ QStringLiteral( "enableTime" ), dsUri.param( QStringLiteral( "enableTime" ) ) },
};
}


QString QgsPostgresRasterProviderMetadata::encodeUri( const QVariantMap &parts )
{
QgsDataSourceUri dsUri;
if ( parts.contains( QStringLiteral( "dbname" ) ) )
dsUri.setDatabase( parts.value( QStringLiteral( "dbname" ) ).toString() );
if ( parts.contains( QStringLiteral( "port" ) ) )
dsUri.setParam( QStringLiteral( "port" ), parts.value( QStringLiteral( "port" ) ).toString() );
if ( parts.contains( QStringLiteral( "host" ) ) )
dsUri.setParam( QStringLiteral( "host" ), parts.value( QStringLiteral( "host" ) ).toString() );
if ( parts.contains( QStringLiteral( "service" ) ) )
dsUri.setParam( QStringLiteral( "service" ), parts.value( QStringLiteral( "service" ) ).toString() );
if ( parts.contains( QStringLiteral( "username" ) ) )
dsUri.setUsername( parts.value( QStringLiteral( "username" ) ).toString() );
if ( parts.contains( QStringLiteral( "password" ) ) )
dsUri.setPassword( parts.value( QStringLiteral( "password" ) ).toString() );
if ( parts.contains( QStringLiteral( "authcfg" ) ) )
dsUri.setAuthConfigId( parts.value( QStringLiteral( "authcfg" ) ).toString() );
if ( parts.contains( QStringLiteral( "selectatid" ) ) )
dsUri.setParam( QStringLiteral( "selectatid" ), parts.value( QStringLiteral( "selectatid" ) ).toString() );
if ( parts.contains( QStringLiteral( "table" ) ) )
dsUri.setTable( parts.value( QStringLiteral( "table" ) ).toString() );
if ( parts.contains( QStringLiteral( "schema" ) ) )
dsUri.setSchema( parts.value( QStringLiteral( "schema" ) ).toString() );
if ( parts.contains( QStringLiteral( "key" ) ) )
dsUri.setParam( QStringLiteral( "key" ), parts.value( QStringLiteral( "key" ) ).toString() );
if ( parts.contains( QStringLiteral( "srid" ) ) )
dsUri.setSrid( parts.value( QStringLiteral( "srid" ) ).toString() );
if ( parts.contains( QStringLiteral( "estimatedmetadata" ) ) )
dsUri.setParam( QStringLiteral( "estimatedmetadata" ), parts.value( QStringLiteral( "estimatedmetadata" ) ).toString() );
if ( parts.contains( QStringLiteral( "sslmode" ) ) )
dsUri.setParam( QStringLiteral( "sslmode" ), QgsDataSourceUri::encodeSslMode( static_cast<QgsDataSourceUri::SslMode>( parts.value( QStringLiteral( "sslmode" ) ).toInt( ) ) ) );
if ( parts.contains( QStringLiteral( "sql" ) ) )
dsUri.setSql( parts.value( QStringLiteral( "sql" ) ).toString() );
if ( parts.contains( QStringLiteral( "geometrycolumn" ) ) )
dsUri.setGeometryColumn( parts.value( QStringLiteral( "geometrycolumn" ) ).toString() );
if ( parts.contains( QStringLiteral( "temporalFieldIndex" ) ) )
dsUri.setParam( QStringLiteral( "temporalFieldIndex" ), parts.value( QStringLiteral( "temporalFieldIndex" ) ).toString() );
if ( parts.contains( QStringLiteral( "temporalDefaultTime" ) ) )
dsUri.setParam( QStringLiteral( "temporalDefaultTime" ), parts.value( QStringLiteral( "temporalDefaultTime" ) ).toString() );
if ( parts.contains( QStringLiteral( "enableTime" ) ) )
dsUri.setParam( QStringLiteral( "enableTime" ), parts.value( QStringLiteral( "enableTime" ) ).toString() );
return dsUri.uri();
}

QgsPostgresRasterProvider *QgsPostgresRasterProviderMetadata::createProvider( const QString &uri, const QgsDataProvider::ProviderOptions &options )
{
return new QgsPostgresRasterProvider( uri, options );
Expand Down
4 changes: 3 additions & 1 deletion src/providers/postgres/raster/qgspostgresrasterprovider.h
Expand Up @@ -253,7 +253,9 @@ class QgsPostgresRasterProviderMetadata: public QgsProviderMetadata
QgsPostgresRasterProviderMetadata();
QVariantMap decodeUri( const QString &uri ) override;
QgsPostgresRasterProvider *createProvider( const QString &uri, const QgsDataProvider::ProviderOptions &options ) override;

QString encodeUri( const QVariantMap &parts ) override;
};



#endif // QGSPOSTGRESRASTERPROVIDER_H

0 comments on commit 69d88d1

Please sign in to comment.