Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsabstractproviderconnection.h - QgsAbstractProviderConnection 3 : : 4 : : --------------------- 5 : : begin : 2.8.2019 6 : : copyright : (C) 2019 by Alessandro Pasotti 7 : : email : elpaso at itopen dot it 8 : : *************************************************************************** 9 : : * * 10 : : * This program is free software; you can redistribute it and/or modify * 11 : : * it under the terms of the GNU General Public License as published by * 12 : : * the Free Software Foundation; either version 2 of the License, or * 13 : : * (at your option) any later version. * 14 : : * * 15 : : ***************************************************************************/ 16 : : #ifndef QGSABSTRACTPROVIDERCONNECTION_H 17 : : #define QGSABSTRACTPROVIDERCONNECTION_H 18 : : 19 : : #include <QString> 20 : : #include <QVariantMap> 21 : : 22 : : #include "qgis_core.h" 23 : : #include "qgis_sip.h" 24 : : #include "qgsdatasourceuri.h" 25 : : #include "qgsexception.h" 26 : : 27 : : /** 28 : : * \brief The QgsAbstractProviderConnection provides an interface for data provider connections. 29 : : * 30 : : * Connections objects can be constructed loading them from the connections stored 31 : : * in the settings by passing the connection name. 32 : : * A new connection object can also be created by passing a data source URI in the constructor. 33 : : * 34 : : * Provider metadata keep a cache of the existing connections, to manage stored 35 : : * connections it is recommendend to call metadata methods instead of loading and 36 : : * storing the connections directly. 37 : : * 38 : : * Concrete classes must implement methods to retrieve, save and remove connections from 39 : : * the settings. 40 : : * 41 : : * \ingroup core 42 : : * \since QGIS 3.10 43 : : */ 44 : : class CORE_EXPORT QgsAbstractProviderConnection 45 : : { 46 : : 47 : : #ifdef SIP_RUN 48 : : SIP_CONVERT_TO_SUBCLASS_CODE 49 : : if ( dynamic_cast<QgsAbstractDatabaseProviderConnection *>( sipCpp ) != NULL ) 50 : : { 51 : : sipType = sipType_QgsAbstractDatabaseProviderConnection; 52 : : } 53 : : else if ( dynamic_cast<QgsAbstractProviderConnection *>( sipCpp ) != NULL ) 54 : : { 55 : : sipType = sipType_QgsAbstractProviderConnection; 56 : : } 57 : : else 58 : : { 59 : : sipType = 0; 60 : : } 61 : : SIP_END 62 : : #endif 63 : : 64 : : public: 65 : : 66 : : /** 67 : : * Creates a new connection with \a name by reading its configuration from the settings. 68 : : * If a connection with this name cannot be found, an empty connection will be returned. 69 : : */ 70 : : QgsAbstractProviderConnection( const QString &name ); 71 : : 72 : : /** 73 : : * Creates a new connection from the given \a uri and \a configuration. 74 : : * The connection is not automatically stored in the settings. 75 : : * \see store() 76 : : */ 77 : : QgsAbstractProviderConnection( const QString &uri, const QVariantMap &configuration ); 78 : : 79 : 0 : virtual ~QgsAbstractProviderConnection() = default; 80 : : 81 : : /** 82 : : * Stores the connection in the settings. 83 : : * \param name the name under which the connection will be stored 84 : : */ 85 : : virtual void store( const QString &name ) const = 0; 86 : : 87 : : /** 88 : : * Deletes the connection from the settings. 89 : : */ 90 : : virtual void remove( const QString &name ) const = 0; 91 : : 92 : : /** 93 : : * Returns an icon representing the connection. 94 : : */ 95 : : virtual QIcon icon() const; 96 : : 97 : : /** 98 : : * Returns the connection data source URI string representation 99 : : */ 100 : : QString uri() const; 101 : : 102 : : /** 103 : : * Sets the connection data source URI to \a uri 104 : : */ 105 : : void setUri( const QString &uri ); 106 : : 107 : : /** 108 : : * Returns the connection configuration parameters 109 : : */ 110 : : QVariantMap configuration() const; 111 : : 112 : : /** 113 : : * Sets the connection \a configuration 114 : : */ 115 : : void setConfiguration( const QVariantMap &configuration ); 116 : : 117 : : private: 118 : : 119 : : QString mUri; 120 : : QVariantMap mConfiguration; 121 : : 122 : : }; 123 : : 124 : : #endif // QGSABSTRACTPROVIDERCONNECTION_H