Skip to content

Commit

Permalink
Minor cleanups in QgsHanaProviderConnection
Browse files Browse the repository at this point in the history
  • Loading branch information
mrylov authored and nyalldawson committed May 4, 2021
1 parent cd2865a commit 7e060a8
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 24 deletions.
39 changes: 15 additions & 24 deletions src/providers/hana/qgshanaproviderconnection.cpp
Expand Up @@ -250,10 +250,7 @@ QgsAbstractDatabaseProviderConnection::QueryResult QgsHanaProviderConnection::ex
if ( feedback && feedback->isCanceled() )
return QueryResult( std::make_shared<QgsHanaEmptyProviderResultIterator>() );

const QgsDataSourceUri dsUri { uri() };
QgsHanaConnectionRef conn( dsUri );
if ( conn.isNull() )
throw QgsProviderConnectionException( QObject::tr( "Connection failed: %1" ).arg( uri() ) );
QgsHanaConnectionRef conn = createConnection();

if ( feedback && feedback->isCanceled() )
return QueryResult( std::make_shared<QgsHanaEmptyProviderResultIterator>() );
Expand Down Expand Up @@ -285,12 +282,19 @@ QgsAbstractDatabaseProviderConnection::QueryResult QgsHanaProviderConnection::ex
}
}

void QgsHanaProviderConnection::executeSqlStatement( const QString &sql ) const
QgsHanaConnectionRef QgsHanaProviderConnection::createConnection() const
{
const QgsDataSourceUri dsUri { uri() };
QgsHanaConnectionRef conn( dsUri );
if ( conn.isNull() )
throw QgsProviderConnectionException( QObject::tr( "Connection failed: %1" ).arg( uri() ) );
return conn;
}

void QgsHanaProviderConnection::executeSqlStatement( const QString &sql ) const
{
QgsHanaConnectionRef conn = createConnection();

try
{
conn->execute( sql );
Expand All @@ -308,11 +312,7 @@ QList<QgsAbstractDatabaseProviderConnection::TableProperty> QgsHanaProviderConne
{
checkCapability( Capability::Tables );

const QgsDataSourceUri dsUri { uri() };
QgsHanaConnectionRef conn( dsUri );
if ( conn.isNull() )
throw QgsProviderConnectionException( QObject::tr( "Connection failed: %1" ).arg( uri() ) );

QgsHanaConnectionRef conn = createConnection();
QList<QgsHanaProviderConnection::TableProperty> tables;

try
Expand Down Expand Up @@ -370,7 +370,7 @@ QList<QgsAbstractDatabaseProviderConnection::TableProperty> QgsHanaProviderConne

QgsAbstractDatabaseProviderConnection::TableProperty QgsHanaProviderConnection::table( const QString &schema, const QString &table ) const
{
QString geometryColumn = QgsDataSourceUri( uri() ).geometryColumn();
const QString geometryColumn = QgsDataSourceUri( uri() ).geometryColumn();
auto layerFilter = [&table, &geometryColumn]( const QgsHanaLayerProperty & layer )
{
return layer.tableName == table && ( geometryColumn.isEmpty() || layer.geometryColName == geometryColumn );
Expand All @@ -391,10 +391,7 @@ QStringList QgsHanaProviderConnection::schemas( ) const
{
checkCapability( Capability::Schemas );

const QgsDataSourceUri dsUri { uri() };
QgsHanaConnectionRef conn( dsUri );
if ( conn.isNull() )
throw QgsProviderConnectionException( QObject::tr( "Connection failed: %1" ).arg( uri() ) );
QgsHanaConnectionRef conn = createConnection();

try
{
Expand All @@ -413,12 +410,9 @@ QStringList QgsHanaProviderConnection::schemas( ) const

QgsFields QgsHanaProviderConnection::fields( const QString &schema, const QString &table ) const
{
const QgsDataSourceUri dsUri { uri() };
QgsHanaConnectionRef conn( dsUri );
if ( conn.isNull() )
throw QgsProviderConnectionException( QObject::tr( "Connection failed: %1" ).arg( uri() ) );
QgsHanaConnectionRef conn = createConnection();

const QString geometryColumn = dsUri.geometryColumn();
const QString geometryColumn = QgsDataSourceUri( uri() ).geometryColumn();
const QString sql = QStringLiteral( "SELECT * FROM %1.%2" )
.arg( QgsHanaUtils::quotedIdentifier( schema ),
QgsHanaUtils::quotedIdentifier( table ) );
Expand Down Expand Up @@ -463,10 +457,7 @@ QIcon QgsHanaProviderConnection::icon() const

QList<QgsVectorDataProvider::NativeType> QgsHanaProviderConnection::nativeTypes() const
{
const QgsDataSourceUri dsUri { uri() };
QgsHanaConnectionRef conn( dsUri );
if ( conn.isNull() )
throw QgsProviderConnectionException( QObject::tr( "Connection failed: %1" ).arg( uri() ) );
QgsHanaConnectionRef conn = createConnection();

QList<QgsVectorDataProvider::NativeType> types = conn->getNativeTypes();
if ( types.isEmpty() )
Expand Down
3 changes: 3 additions & 0 deletions src/providers/hana/qgshanaproviderconnection.h
Expand Up @@ -44,6 +44,8 @@ struct QgsHanaProviderResultIterator: public QgsAbstractDatabaseProviderConnecti
bool hasNextRowPrivate() const;
};

class QgsHanaConnectionRef;

class QgsHanaProviderConnection : public QgsAbstractDatabaseProviderConnection
{
public:
Expand Down Expand Up @@ -76,6 +78,7 @@ class QgsHanaProviderConnection : public QgsAbstractDatabaseProviderConnection
QList<QgsVectorDataProvider::NativeType> nativeTypes() const override;

private:
QgsHanaConnectionRef createConnection() const;
void executeSqlStatement( const QString &sql ) const;
void setCapabilities();
QList<QgsAbstractDatabaseProviderConnection::TableProperty> tablesWithFilter( const QString &schema,
Expand Down

0 comments on commit 7e060a8

Please sign in to comment.