LCOV - code coverage report
Current view: top level - core - qgsprovidermetadata.cpp (source / functions) Hit Total Coverage
Test: coverage.info.cleaned Lines: 29 172 16.9 %
Date: 2021-04-10 08:29:14 Functions: 0 0 -
Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : /***************************************************************************
       2                 :            :                     qgsprovidermetadata.cpp  -  Metadata class for
       3                 :            :                     describing a data provider.
       4                 :            :                              -------------------
       5                 :            :     begin                : Sat Jan 10 2004
       6                 :            :     copyright            : (C) 2004 by Gary E.Sherman
       7                 :            :     email                : sherman at mrcc.com
       8                 :            :  ***************************************************************************/
       9                 :            : 
      10                 :            : /***************************************************************************
      11                 :            :  *                                                                         *
      12                 :            :  *   This program is free software; you can redistribute it and/or modify  *
      13                 :            :  *   it under the terms of the GNU General Public License as published by  *
      14                 :            :  *   the Free Software Foundation; either version 2 of the License, or     *
      15                 :            :  *   (at your option) any later version.                                   *
      16                 :            :  *                                                                         *
      17                 :            :  ***************************************************************************/
      18                 :            : 
      19                 :            : #include "qgsprovidermetadata.h"
      20                 :            : #include "qgsdataprovider.h"
      21                 :            : #include "qgsmaplayer.h"
      22                 :            : #include "qgsexception.h"
      23                 :            : #include "qgsabstractdatabaseproviderconnection.h"
      24                 :            : 
      25                 :        344 : QgsProviderMetadata::QgsProviderMetadata( QString const &key,
      26                 :            :     QString const &description,
      27                 :            :     QString const &library )
      28                 :        344 :   : mKey( key )
      29                 :        344 :   , mDescription( description )
      30                 :        344 :   , mLibrary( library )
      31                 :       1032 : {}
      32                 :            : 
      33                 :          6 : QgsProviderMetadata::QgsProviderMetadata( const QString &key, const QString &description, const CreateDataProviderFunction &createFunc )
      34                 :          6 :   : mKey( key )
      35                 :          6 :   , mDescription( description )
      36                 :          6 :   , mCreateFunction( createFunc )
      37                 :         12 : {}
      38                 :            : 
      39                 :        356 : QgsProviderMetadata::~QgsProviderMetadata()
      40                 :        356 : {
      41                 :        350 :   qDeleteAll( mProviderConnections );
      42                 :        356 : }
      43                 :            : 
      44                 :          6 : QString QgsProviderMetadata::key() const
      45                 :            : {
      46                 :          6 :   return mKey;
      47                 :            : }
      48                 :            : 
      49                 :          0 : QString QgsProviderMetadata::description() const
      50                 :            : {
      51                 :          0 :   return mDescription;
      52                 :            : }
      53                 :            : 
      54                 :          0 : QgsProviderMetadata::ProviderMetadataCapabilities QgsProviderMetadata::capabilities() const
      55                 :            : {
      56                 :          0 :   return QgsProviderMetadata::ProviderMetadataCapabilities();
      57                 :            : }
      58                 :            : 
      59                 :          0 : QgsProviderMetadata::ProviderCapabilities QgsProviderMetadata::providerCapabilities() const
      60                 :            : {
      61                 :          0 :   return QgsProviderMetadata::ProviderCapabilities();
      62                 :            : }
      63                 :            : 
      64                 :          0 : QString QgsProviderMetadata::library() const
      65                 :            : {
      66                 :          0 :   return mLibrary;
      67                 :            : }
      68                 :            : 
      69                 :          0 : QgsProviderMetadata::CreateDataProviderFunction QgsProviderMetadata::createFunction() const
      70                 :            : {
      71                 :          0 :   return mCreateFunction;
      72                 :            : }
      73                 :            : 
      74                 :         15 : void QgsProviderMetadata::initProvider()
      75                 :            : {
      76                 :            : 
      77                 :         15 : }
      78                 :            : 
      79                 :         15 : void QgsProviderMetadata::cleanupProvider()
      80                 :            : {
      81                 :            : 
      82                 :         15 : }
      83                 :            : 
      84                 :         45 : QString QgsProviderMetadata::filters( FilterType )
      85                 :            : {
      86                 :         45 :   return QString();
      87                 :            : }
      88                 :            : 
      89                 :          0 : QList<QgsMeshDriverMetadata> QgsProviderMetadata::meshDriversMetadata()
      90                 :            : {
      91                 :          0 :   return QList<QgsMeshDriverMetadata>();
      92                 :            : }
      93                 :            : 
      94                 :          0 : int QgsProviderMetadata::priorityForUri( const QString & ) const
      95                 :            : {
      96                 :          0 :   return 0;
      97                 :            : }
      98                 :            : 
      99                 :          0 : QList<QgsMapLayerType> QgsProviderMetadata::validLayerTypesForUri( const QString & ) const
     100                 :            : {
     101                 :          0 :   return QList<QgsMapLayerType>();
     102                 :            : }
     103                 :            : 
     104                 :          0 : bool QgsProviderMetadata::uriIsBlocklisted( const QString & ) const
     105                 :            : {
     106                 :          0 :   return false;
     107                 :            : }
     108                 :            : 
     109                 :         14 : QgsDataProvider *QgsProviderMetadata::createProvider( const QString &uri,
     110                 :            :     const QgsDataProvider::ProviderOptions &options,
     111                 :            :     QgsDataProvider::ReadFlags flags )
     112                 :            : {
     113                 :         14 :   if ( mCreateFunction )
     114                 :            :   {
     115                 :         14 :     return mCreateFunction( uri, options, flags );
     116                 :            :   }
     117                 :          0 :   return nullptr;
     118                 :         14 : }
     119                 :            : 
     120                 :          0 : void QgsProviderMetadata::setBoolParameter( QVariantMap &uri, const QString &parameter, const QVariant &value )
     121                 :            : {
     122                 :          0 :   if ( value.toString().compare( QStringLiteral( "yes" ), Qt::CaseInsensitive ) == 0 ||
     123                 :          0 :        value.toString().compare( QStringLiteral( "1" ), Qt::CaseInsensitive ) == 0 ||
     124                 :          0 :        value.toString().compare( QStringLiteral( "true" ), Qt::CaseInsensitive ) == 0 )
     125                 :            :   {
     126                 :          0 :     uri[ parameter ] = true;
     127                 :          0 :   }
     128                 :          0 :   else if ( value.toString().compare( QStringLiteral( "no" ), Qt::CaseInsensitive ) == 0 ||
     129                 :          0 :             value.toString().compare( QStringLiteral( "0" ), Qt::CaseInsensitive ) == 0 ||
     130                 :          0 :             value.toString().compare( QStringLiteral( "false" ), Qt::CaseInsensitive ) == 0 )
     131                 :            :   {
     132                 :          0 :     uri[ parameter ] = false;
     133                 :          0 :   }
     134                 :          0 : }
     135                 :            : 
     136                 :          0 : bool QgsProviderMetadata::boolParameter( const QVariantMap &uri, const QString &parameter, bool defaultValue )
     137                 :            : {
     138                 :          0 :   if ( uri.value( parameter, QString() ).toString().compare( QStringLiteral( "yes" ), Qt::CaseInsensitive ) == 0 ||
     139                 :          0 :        uri.value( parameter, QString() ).toString().compare( QStringLiteral( "1" ), Qt::CaseInsensitive ) == 0 ||
     140                 :          0 :        uri.value( parameter, QString() ).toString().compare( QStringLiteral( "true" ), Qt::CaseInsensitive ) == 0 )
     141                 :            :   {
     142                 :          0 :     return true;
     143                 :            :   }
     144                 :          0 :   else if ( uri.value( parameter, QString() ).toString().compare( QStringLiteral( "no" ), Qt::CaseInsensitive ) == 0 ||
     145                 :          0 :             uri.value( parameter, QString() ).toString().compare( QStringLiteral( "0" ), Qt::CaseInsensitive ) == 0 ||
     146                 :          0 :             uri.value( parameter, QString() ).toString().compare( QStringLiteral( "false" ), Qt::CaseInsensitive ) == 0 )
     147                 :            :   {
     148                 :          0 :     return false;
     149                 :            :   }
     150                 :            : 
     151                 :          0 :   return defaultValue;
     152                 :          0 : }
     153                 :            : 
     154                 :          0 : QVariantMap QgsProviderMetadata::decodeUri( const QString & ) const
     155                 :            : {
     156                 :          0 :   return QVariantMap();
     157                 :            : }
     158                 :            : 
     159                 :          0 : QString QgsProviderMetadata::encodeUri( const QVariantMap & ) const
     160                 :            : {
     161                 :          0 :   return QString();
     162                 :            : }
     163                 :            : 
     164                 :          0 : QgsVectorLayerExporter::ExportError QgsProviderMetadata::createEmptyLayer(
     165                 :            :   const QString &, const QgsFields &,
     166                 :            :   QgsWkbTypes::Type, const QgsCoordinateReferenceSystem &,
     167                 :            :   bool, QMap<int, int> &,
     168                 :            :   QString &errorMessage, const QMap<QString, QVariant> * )
     169                 :            : {
     170                 :          0 :   errorMessage = QObject::tr( "Provider %1 has no %2 method" ).arg( key(), QStringLiteral( "createEmptyLayer" ) );
     171                 :          0 :   return QgsVectorLayerExporter::ExportError::ErrProviderUnsupportedFeature;
     172                 :          0 : }
     173                 :            : 
     174                 :          0 : QgsRasterDataProvider *QgsProviderMetadata::createRasterDataProvider(
     175                 :            :   const QString &, const QString &,
     176                 :            :   int, Qgis::DataType, int,
     177                 :            :   int, double *,
     178                 :            :   const QgsCoordinateReferenceSystem &,
     179                 :            :   const QStringList & )
     180                 :            : {
     181                 :          0 :   return nullptr;
     182                 :            : }
     183                 :            : 
     184                 :          0 : bool QgsProviderMetadata::createMeshData(
     185                 :            :   const QgsMesh &,
     186                 :            :   const QString,
     187                 :            :   const QString &,
     188                 :            :   const QgsCoordinateReferenceSystem & ) const
     189                 :            : {
     190                 :          0 :   return false;
     191                 :            : }
     192                 :            : 
     193                 :          0 : QList<QPair<QString, QString> > QgsProviderMetadata::pyramidResamplingMethods()
     194                 :            : {
     195                 :          0 :   return QList<QPair<QString, QString> >();
     196                 :            : }
     197                 :            : 
     198                 :          6 : QList<QgsDataItemProvider *> QgsProviderMetadata::dataItemProviders() const
     199                 :            : {
     200                 :          6 :   return QList<QgsDataItemProvider *>();
     201                 :            : }
     202                 :            : 
     203                 :          0 : int QgsProviderMetadata::listStyles( const QString &, QStringList &, QStringList &,
     204                 :            :                                      QStringList &, QString &errCause )
     205                 :            : {
     206                 :          0 :   errCause = QObject::tr( "Provider %1 has no %2 method" ).arg( key(), QStringLiteral( "listStyles" ) );
     207                 :          0 :   return -1;
     208                 :          0 : }
     209                 :            : 
     210                 :          0 : QString QgsProviderMetadata::getStyleById( const QString &, QString, QString &errCause )
     211                 :            : {
     212                 :          0 :   errCause = QObject::tr( "Provider %1 has no %2 method" ).arg( key(), QStringLiteral( "getStyleById" ) );
     213                 :          0 :   return QString();
     214                 :          0 : }
     215                 :            : 
     216                 :          0 : bool QgsProviderMetadata::deleteStyleById( const QString &, QString, QString &errCause )
     217                 :            : {
     218                 :          0 :   errCause = QObject::tr( "Provider %1 has no %2 method" ).arg( key(), QStringLiteral( "deleteStyleById" ) );
     219                 :          0 :   return false;
     220                 :          0 : }
     221                 :            : 
     222                 :          0 : bool QgsProviderMetadata::saveStyle( const QString &, const QString &, const QString &, const QString &,
     223                 :            :                                      const QString &, const QString &, bool, QString &errCause )
     224                 :            : {
     225                 :          0 :   errCause = QObject::tr( "Provider %1 has no %2 method" ).arg( key(), QStringLiteral( "saveStyle" ) );
     226                 :          0 :   return false;
     227                 :          0 : }
     228                 :            : 
     229                 :          0 : QString QgsProviderMetadata::loadStyle( const QString &, QString &errCause )
     230                 :            : {
     231                 :          0 :   errCause = QObject::tr( "Provider %1 has no %2 method" ).arg( key(), QStringLiteral( "loadStyle" ) );
     232                 :          0 :   return QString();
     233                 :          0 : }
     234                 :            : 
     235                 :          0 : bool QgsProviderMetadata::createDb( const QString &, QString &errCause )
     236                 :            : {
     237                 :          0 :   errCause = QObject::tr( "Provider %1 has no %2 method" ).arg( key(), QStringLiteral( "createDb" ) );
     238                 :          0 :   return false;
     239                 :          0 : }
     240                 :            : 
     241                 :          0 : QgsTransaction *QgsProviderMetadata::createTransaction( const QString & )
     242                 :            : {
     243                 :          0 :   return nullptr;
     244                 :            : }
     245                 :            : 
     246                 :          0 : QMap<QString, QgsAbstractProviderConnection *> QgsProviderMetadata::connections( bool cached )
     247                 :            : {
     248                 :            :   Q_UNUSED( cached );
     249                 :          0 :   throw QgsProviderConnectionException( QObject::tr( "Provider %1 has no %2 method" ).arg( key(), QStringLiteral( "connections" ) ) );
     250                 :          0 : }
     251                 :            : 
     252                 :          0 : QMap<QString, QgsAbstractDatabaseProviderConnection *> QgsProviderMetadata::dbConnections( bool cached )
     253                 :            : {
     254                 :          0 :   return connections<QgsAbstractDatabaseProviderConnection>( cached ) ;
     255                 :            : }
     256                 :            : 
     257                 :          0 : QgsAbstractProviderConnection *QgsProviderMetadata::findConnection( const QString &name, bool cached )
     258                 :            : {
     259                 :          0 :   const QMap<QString, QgsAbstractProviderConnection *> constConns { connections( cached ) };
     260                 :          0 :   const QStringList constKeys { constConns.keys( ) };
     261                 :          0 :   for ( const QString &key : constKeys )
     262                 :            :   {
     263                 :          0 :     if ( key == name )
     264                 :            :     {
     265                 :          0 :       return constConns.value( key );
     266                 :            :     }
     267                 :            :   }
     268                 :          0 :   return nullptr;
     269                 :          0 : }
     270                 :            : 
     271                 :          0 : QgsAbstractProviderConnection *QgsProviderMetadata::createConnection( const QString &name )
     272                 :            : {
     273                 :          0 :   Q_UNUSED( name );
     274                 :          0 :   throw QgsProviderConnectionException( QObject::tr( "Provider %1 has no %2 method" ).arg( key(), QStringLiteral( "connection" ) ) );
     275                 :          0 : }
     276                 :            : 
     277                 :            : 
     278                 :          0 : QgsAbstractProviderConnection *QgsProviderMetadata::createConnection( const QString &uri, const QVariantMap &configuration )
     279                 :            : {
     280                 :          0 :   Q_UNUSED( configuration );
     281                 :          0 :   Q_UNUSED( uri );
     282                 :          0 :   throw QgsProviderConnectionException( QObject::tr( "Provider %1 has no %2 method" ).arg( key(), QStringLiteral( "connection" ) ) );
     283                 :          0 : }
     284                 :            : 
     285                 :          0 : void QgsProviderMetadata::deleteConnection( const QString &name )
     286                 :            : {
     287                 :          0 :   Q_UNUSED( name );
     288                 :          0 :   throw QgsProviderConnectionException( QObject::tr( "Provider %1 has no %2 method" ).arg( key(), QStringLiteral( "deleteConnection" ) ) );
     289                 :          0 : }
     290                 :            : 
     291                 :          0 : void QgsProviderMetadata::saveConnection( const QgsAbstractProviderConnection *connection, const QString &name )
     292                 :            : {
     293                 :            :   Q_UNUSED( connection )
     294                 :          0 :   Q_UNUSED( name )
     295                 :          0 :   throw QgsProviderConnectionException( QObject::tr( "Provider %1 has no %2 method" ).arg( key(), QStringLiteral( "saveConnection" ) ) );
     296                 :          0 : }
     297                 :            : 
     298                 :            : ///@cond PRIVATE
     299                 :          0 : void QgsProviderMetadata::saveConnectionProtected( const QgsAbstractProviderConnection *conn, const QString &name )
     300                 :            : {
     301                 :          0 :   const bool isNewConnection = !connections().contains( name );
     302                 :          0 :   conn->store( name );
     303                 :          0 :   mProviderConnections.clear();
     304                 :            : 
     305                 :          0 :   if ( !isNewConnection )
     306                 :          0 :     emit connectionChanged( name );
     307                 :            :   else
     308                 :          0 :     emit connectionCreated( name );
     309                 :          0 : }
     310                 :            : ///@endcond
     311                 :            : 
     312                 :            : template<typename T>
     313                 :          0 : QMap<QString, T *> QgsProviderMetadata::connections( bool cached )
     314                 :            : {
     315                 :          0 :   QMap<QString, T *> result;
     316                 :          0 :   const auto constConns { connections( cached ) };
     317                 :          0 :   const QStringList constConnKeys { constConns.keys() };
     318                 :          0 :   for ( const auto &c : constConnKeys )
     319                 :            :   {
     320                 :          0 :     T *casted { static_cast<T *>( constConns.value( c ) ) };
     321                 :          0 :     if ( casted )
     322                 :            :     {
     323                 :          0 :       result.insert( c, casted );
     324                 :          0 :     }
     325                 :            :   }
     326                 :          0 :   return result;
     327                 :          0 : }
     328                 :            : 
     329                 :          0 : QgsMeshDriverMetadata::QgsMeshDriverMetadata() = default;
     330                 :            : 
     331                 :          0 : QgsMeshDriverMetadata::QgsMeshDriverMetadata( const QString &name, const QString &description, const MeshDriverCapabilities &capabilities, const QString &writeDatasetOnfileSuffix )
     332                 :          0 :   : mName( name ), mDescription( description ), mCapabilities( capabilities ), mWriteDatasetOnFileSuffix( writeDatasetOnfileSuffix )
     333                 :            : {
     334                 :          0 : }
     335                 :            : 
     336                 :          0 : QgsMeshDriverMetadata::MeshDriverCapabilities QgsMeshDriverMetadata::capabilities() const
     337                 :            : {
     338                 :          0 :   return mCapabilities;
     339                 :            : }
     340                 :            : 
     341                 :          0 : QString QgsMeshDriverMetadata::name() const
     342                 :            : {
     343                 :          0 :   return mName;
     344                 :            : }
     345                 :            : 
     346                 :          0 : QString QgsMeshDriverMetadata::description() const
     347                 :            : {
     348                 :          0 :   return mDescription;
     349                 :            : }
     350                 :            : 
     351                 :          0 : QString QgsMeshDriverMetadata::writeDatasetOnFileSuffix() const
     352                 :            : {
     353                 :          0 :   return mWriteDatasetOnFileSuffix;
     354                 :            : }

Generated by: LCOV version 1.14