Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsconnectionregistry.cpp 3 : : -------------------------- 4 : : begin : March 2020 5 : : copyright : (C) 2020 by Nyall Dawson 6 : : email : nyall dot dawson at gmail dot com 7 : : ***************************************************************************/ 8 : : 9 : : /*************************************************************************** 10 : : * * 11 : : * This program is free software; you can redistribute it and/or modify * 12 : : * it under the terms of the GNU General Public License as published by * 13 : : * the Free Software Foundation; either version 2 of the License, or * 14 : : * (at your option) any later version. * 15 : : * * 16 : : ***************************************************************************/ 17 : : 18 : : #include "qgsconnectionregistry.h" 19 : : #include "qgsproviderregistry.h" 20 : : #include "qgsprovidermetadata.h" 21 : : #include <QRegularExpression> 22 : : 23 : 5 : QgsConnectionRegistry::QgsConnectionRegistry( QObject *parent SIP_TRANSFERTHIS ) 24 : 5 : : QObject( parent ) 25 : 10 : { 26 : 5 : } 27 : : 28 : 0 : QgsAbstractProviderConnection *QgsConnectionRegistry::createConnection( const QString &id ) 29 : : { 30 : 0 : QRegularExpressionMatch m = QRegularExpression( QStringLiteral( "(.*?)\\://(.*)" ) ).match( id ); 31 : 0 : if ( !m.hasMatch() ) 32 : 0 : throw QgsProviderConnectionException( QObject::tr( "Invalid connection id" ) ); 33 : : 34 : 0 : const QString providerKey = m.captured( 1 ); 35 : 0 : const QString name = m.captured( 2 ); 36 : : 37 : 0 : QgsProviderMetadata *md = QgsProviderRegistry::instance()->providerMetadata( providerKey ); 38 : : 39 : 0 : if ( !md ) 40 : 0 : throw QgsProviderConnectionException( QObject::tr( "Invalid provider key: %1" ).arg( providerKey ) ); 41 : : 42 : 0 : return md->createConnection( name ); 43 : 0 : }