Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Implement QgsHanaProviderConnection
  • Loading branch information
Maksim Rylov authored and mrylov committed Dec 7, 2020
1 parent da0dbf9 commit c34a095
Show file tree
Hide file tree
Showing 11 changed files with 788 additions and 132 deletions.
2 changes: 2 additions & 0 deletions src/providers/hana/CMakeLists.txt
Expand Up @@ -12,6 +12,7 @@ SET (HANA_SRCS
qgshanaexpressioncompiler.cpp
qgshanafeatureiterator.cpp
qgshanaprovider.cpp
qgshanaproviderconnection.cpp
qgshanaresultset.cpp
qgshanasettings.cpp
qgshanatablemodel.cpp
Expand All @@ -32,6 +33,7 @@ SET(HANA_HDRS
qgshanadriver.h
qgshanaexception.h
qgshanaexpressioncompiler.h
qgshanaproviderconnection.h
qgshanaresultset.h
)

Expand Down
192 changes: 133 additions & 59 deletions src/providers/hana/qgshanaconnection.cpp

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions src/providers/hana/qgshanaconnection.h
Expand Up @@ -17,6 +17,7 @@
#ifndef QGSHANACONNECTION_H
#define QGSHANACONNECTION_H

#include "qgscoordinatereferencesystem.h"
#include "qgsdatasourceuri.h"
#include "qgshanatablemodel.h"
#include "qgslogger.h"
Expand All @@ -38,13 +39,15 @@ class QgsHanaConnection : public QObject

const QString &getDatabaseVersion();
const QString &getUserName();
QgsCoordinateReferenceSystem getCrs( int srid );
QVector<QgsHanaLayerProperty> getLayers(
const QString &schemaName,
bool allowGeometrylessTables,
bool userTablesOnly = true );
void readLayerInfo( QgsHanaLayerProperty &layerProperty );
QVector<QgsHanaSchemaProperty> getSchemas( const QString &ownerName );
QgsWkbTypes::Type getLayerGeometryType( const QgsHanaLayerProperty &layerProperty );
QString getColumnDataType( const QString &schemaName, const QString &tableName, const QString &columnName );

odbc::ConnectionRef &getNativeRef() { return mConnection; }

Expand All @@ -58,6 +61,8 @@ class QgsHanaConnection : public QObject
return sConnectionAttemptCanceled;
}

static QStringList connectionList();

private:
explicit QgsHanaConnection( const QgsDataSourceUri &uri );

Expand Down
276 changes: 207 additions & 69 deletions src/providers/hana/qgshanaprovider.cpp

Large diffs are not rendered by default.

13 changes: 12 additions & 1 deletion src/providers/hana/qgshanaprovider.h
Expand Up @@ -47,7 +47,7 @@ struct FieldInfo
\brief Data provider for SAP HANA database.
*
*/
class QgsHanaProvider : public QgsVectorDataProvider
class QgsHanaProvider final : public QgsVectorDataProvider
{
Q_OBJECT

Expand Down Expand Up @@ -192,6 +192,17 @@ class QgsHanaProviderMetadata : public QgsProviderMetadata
const QMap<QString, QVariant> *options ) override;

QList<QgsDataItemProvider *> dataItemProviders() const override;

// Connections API
QMap<QString, QgsAbstractProviderConnection *> connections( bool cached = true ) override;
QgsAbstractProviderConnection *createConnection( const QString &name ) override;
QgsAbstractProviderConnection *createConnection( const QString &uri, const QVariantMap &configuration ) override;
void deleteConnection( const QString &name ) override;
void saveConnection( const QgsAbstractProviderConnection *createConnection, const QString &name ) override;

// Data source URI API
QVariantMap decodeUri( const QString &uri ) override;
QString encodeUri( const QVariantMap &parts ) override;
};

#endif // QGSHANAPROVIDER_H

0 comments on commit c34a095

Please sign in to comment.