void QgsOracleNewConnection::on_btnConnect_clicked() { QgsDataSourceUri uri; uri.setConnection( txtHost->text(), txtPort->text(), txtDatabase->text(), txtUsername->text(), txtPassword->text() ); if ( !txtOptions->text().isEmpty() ) uri.setParam( "dboptions", txtOptions->text() ); if ( !txtWorkspace->text().isEmpty() ) uri.setParam( "dbworkspace", txtWorkspace->text() ); QgsOracleConn *conn = QgsOracleConnPool::instance()->acquireConnection( QgsOracleConn::toPoolName( uri ) ); if ( conn ) { // Database successfully opened; we can now issue SQL commands. QMessageBox::information( this, tr( "Test connection" ), tr( "Connection to %1 was successful" ).arg( txtDatabase->text() ) ); // free connection resources QgsOracleConnPool::instance()->releaseConnection( conn ); } else { QMessageBox::information( this, tr( "Test connection" ), tr( "Connection failed - consult message log for details.\n\n" ) ); } }
void QgsOracleNewConnection::testConnection() { QgsDataSourceUri uri; uri.setConnection( txtHost->text(), txtPort->text(), txtDatabase->text(), txtUsername->text(), txtPassword->text() ); if ( !txtOptions->text().isEmpty() ) uri.setParam( QStringLiteral( "dboptions" ), txtOptions->text() ); if ( !txtWorkspace->text().isEmpty() ) uri.setParam( QStringLiteral( "dbworkspace" ), txtWorkspace->text() ); QgsOracleConn *conn = QgsOracleConnPool::instance()->acquireConnection( QgsOracleConn::toPoolName( uri ) ); if ( conn ) { // Database successfully opened; we can now issue SQL commands. bar->pushMessage( tr( "Connection to %1 was successful." ).arg( txtName->text() ), Qgis::Info ); // free connection resources QgsOracleConnPool::instance()->releaseConnection( conn ); } else { bar->pushMessage( tr( "Connection failed - consult message log for details." ), Qgis::Warning ); } }
QString QgsAmsSourceSelect::getLayerURI( const QgsOwsConnection &connection, const QString &layerTitle, const QString & /*layerName*/, const QString &crs, const QString & /*filter*/, const QgsRectangle & /*bBox*/ ) const { QgsDataSourceUri ds = connection.uri(); ds.setParam( QStringLiteral( "layer" ), layerTitle ); ds.setParam( QStringLiteral( "crs" ), crs ); ds.setParam( QStringLiteral( "format" ), getSelectedImageEncoding() ); return ds.uri(); }
void QgsOwsConnection::addCommonConnectionSettings( QgsDataSourceUri &uri, const QString &key ) { QgsSettings settings; if ( settings.value( key + QStringLiteral( "/ignoreAxisOrientation" ), false ).toBool() ) { uri.setParam( QStringLiteral( "IgnoreAxisOrientation" ), QStringLiteral( "1" ) ); } if ( settings.value( key + QStringLiteral( "/invertAxisOrientation" ), false ).toBool() ) { uri.setParam( QStringLiteral( "InvertAxisOrientation" ), QStringLiteral( "1" ) ); } }
void QgsAfsSourceSelect::buildQuery( const QgsOwsConnection &connection, const QModelIndex& index ) { if ( !index.isValid() ) { return; } QModelIndex filterIndex = index.sibling( index.row(), 4 ); QString id = index.sibling( index.row(), 0 ).data().toString(); // Query available fields QgsDataSourceUri ds = connection.uri(); QString url = ds.param( "url" ) + "/" + id; ds.removeParam( "url" ); ds.setParam( "url", url ); QgsAfsProvider provider( ds.uri() ); if ( !provider.isValid() ) { return; } //show expression builder QgsExpressionBuilderDialog d( 0, filterIndex.data().toString() ); //add available attributes to expression builder QgsExpressionBuilderWidget* w = d.expressionBuilder(); w->loadFieldNames( provider.fields() ); if ( d.exec() == QDialog::Accepted ) { QgsDebugMsg( "Expression text = " + w->expressionText() ); mModelProxy->setData( filterIndex, QVariant( w->expressionText() ) ); } }
QString QgsAmsSourceSelect::getLayerURI( const QgsOwsConnection &connection, const QString &layerTitle, const QString & /*layerName*/, const QString &crs, const QString & /*filter*/, const QgsRectangle & /*bBox*/, const QString &layerId ) const { QgsDataSourceUri ds = connection.uri(); QString url = layerTitle; QString trimmedUrl = layerId.isEmpty() ? url : url.left( url.length() - 1 - layerId.length() ); // trim '/0' from end of url -- AMS provider requires this omitted ds.removeParam( QStringLiteral( "url" ) ); ds.setParam( QStringLiteral( "url" ), trimmedUrl ); ds.setParam( QStringLiteral( "layer" ), layerId ); ds.setParam( QStringLiteral( "crs" ), crs ); ds.setParam( QStringLiteral( "format" ), getSelectedImageEncoding() ); return ds.uri(); }
QVector<QgsDataItem *> QgsWmsDataItemProvider::createDataItems( const QString &path, QgsDataItem *parentItem ) { QVector<QgsDataItem *> items; if ( path.startsWith( QLatin1String( "geonode:/" ) ) ) { QString connectionName = path.split( '/' ).last(); if ( QgsGeoNodeConnectionUtils::connectionList().contains( connectionName ) ) { QgsGeoNodeConnection connection( connectionName ); QString url = connection.uri().param( QStringLiteral( "url" ) ); QgsGeoNodeRequest geonodeRequest( url, true ); const QStringList encodedUris( geonodeRequest.fetchServiceUrlsBlocking( QStringLiteral( "WMS" ) ) ); if ( !encodedUris.isEmpty() ) { for ( const QString &encodedUri : encodedUris ) { QgsDebugMsg( encodedUri ); QgsDataSourceUri uri; QgsSettings settings; QString key( QgsGeoNodeConnectionUtils::pathGeoNodeConnection() + "/" + connectionName ); QString dpiMode = settings.value( key + "/wms/dpiMode", "all" ).toString(); uri.setParam( QStringLiteral( "url" ), encodedUri ); if ( !dpiMode.isEmpty() ) { uri.setParam( QStringLiteral( "dpiMode" ), dpiMode ); } QgsDebugMsg( QStringLiteral( "WMS full uri: '%1'." ).arg( QString( uri.encodedUri() ) ) ); QgsDataItem *item = new QgsWMSConnectionItem( parentItem, QStringLiteral( "WMS" ), path, uri.encodedUri() ); if ( item ) { items.append( item ); } } } } } return items; }
QgsDataSourceUri QgsOracleConn::connUri( QString theConnName ) { QgsDebugMsgLevel( "theConnName = " + theConnName, 3 ); QSettings settings; QString key = "/Oracle/connections/" + theConnName; QString database = settings.value( key + "/database" ).toString(); QString host = settings.value( key + "/host" ).toString(); QString port = settings.value( key + "/port" ).toString(); if ( port.length() == 0 ) { port = "1521"; } bool useEstimatedMetadata = settings.value( key + "/estimatedMetadata", false ).toBool(); QString username; QString password; if ( settings.value( key + "/saveUsername" ).toString() == "true" ) { username = settings.value( key + "/username" ).toString(); } if ( settings.value( key + "/savePassword" ).toString() == "true" ) { password = settings.value( key + "/password" ).toString(); } QgsDataSourceUri uri; uri.setConnection( host, port, database, username, password ); uri.setUseEstimatedMetadata( useEstimatedMetadata ); if ( !settings.value( key + "/dboptions" ).toString().isEmpty() ) { uri.setParam( "dboptions", settings.value( key + "/dboptions" ).toString() ); } if ( !settings.value( key + "/dbworkspace" ).toString().isEmpty() ) { uri.setParam( "dbworkspace", settings.value( key + "/dbworkspace" ).toString() ); } return uri; }
void QgsWCSSourceSelect::populateLayerList() { mLayersTreeWidget->clear(); QgsDataSourceUri uri = mUri; QString cache = QgsNetworkAccessManager::cacheLoadControlName( selectedCacheLoadControl() ); uri.setParam( QStringLiteral( "cache" ), cache ); mCapabilities.setUri( uri ); if ( !mCapabilities.lastError().isEmpty() ) { showError( mCapabilities.lastErrorTitle(), mCapabilities.lastErrorFormat(), mCapabilities.lastError() ); return; } QVector<QgsWcsCoverageSummary> coverages; if ( !mCapabilities.supportedCoverages( coverages ) ) return; QMap<int, QgsTreeWidgetItem *> items; QMap<int, int> coverageParents; QMap<int, QStringList> coverageParentNames; mCapabilities.coverageParents( coverageParents, coverageParentNames ); mLayersTreeWidget->setSortingEnabled( true ); int coverageAndStyleCount = -1; for ( QVector<QgsWcsCoverageSummary>::iterator coverage = coverages.begin(); coverage != coverages.end(); ++coverage ) { QgsDebugMsg( QString( "coverage orderId = %1 identifier = %2" ).arg( coverage->orderId ).arg( coverage->identifier ) ); QgsTreeWidgetItem *lItem = createItem( coverage->orderId, QStringList() << coverage->identifier << coverage->title << coverage->abstract, items, coverageAndStyleCount, coverageParents, coverageParentNames ); lItem->setData( 0, Qt::UserRole + 0, coverage->identifier ); lItem->setData( 0, Qt::UserRole + 1, "" ); // Make only leaves selectable if ( !coverageParents.keys( coverage->orderId ).isEmpty() ) { lItem->setFlags( Qt::ItemIsEnabled ); } } mLayersTreeWidget->sortByColumn( 0, Qt::AscendingOrder ); // If we got some coverages, let the user add them to the map if ( mLayersTreeWidget->topLevelItemCount() == 1 ) { mLayersTreeWidget->expandItem( mLayersTreeWidget->topLevelItem( 0 ) ); } }
QString QgsAfsSourceSelect::getLayerURI( const QgsOwsConnection& connection, const QString& layerTitle, const QString& /*layerName*/, const QString& crs, const QString& filter, const QgsRectangle& bBox ) const { QgsDataSourceUri ds = connection.uri(); QString url = ds.param( "url" ) + "/" + layerTitle; ds.removeParam( "url" ); ds.setParam( "url", url ); ds.setParam( "filter", filter ); ds.setParam( "crs", crs ); if ( !bBox.isEmpty() ) { ds.setParam( "bbox", QString( "%1,%2,%3,%4" ).arg( bBox.xMinimum() ).arg( bBox.yMinimum() ).arg( bBox.xMaximum() ).arg( bBox.yMaximum() ) ); } return ds.uri(); }
QVector<QgsDataItem *> QgsXyzTileDataItemProvider::createDataItems( const QString &path, QgsDataItem *parentItem ) { QVector<QgsDataItem *> items; if ( path.startsWith( QLatin1String( "geonode:/" ) ) ) { QString connectionName = path.split( '/' ).last(); if ( QgsGeoNodeConnectionUtils::connectionList().contains( connectionName ) ) { QgsGeoNodeConnection connection( connectionName ); QString url = connection.uri().param( QStringLiteral( "url" ) ); QgsGeoNodeRequest geonodeRequest( url, true ); const QgsStringMap urlData( geonodeRequest.fetchServiceUrlDataBlocking( QStringLiteral( "XYZ" ) ) ); if ( !urlData.isEmpty() ) { auto urlDataIt = urlData.constBegin(); for ( ; urlDataIt != urlData.constEnd(); ++urlDataIt ) { const QString layerName = urlDataIt.key(); QgsDebugMsg( urlDataIt.value() ); QgsDataSourceUri uri; uri.setParam( QStringLiteral( "type" ), QStringLiteral( "xyz" ) ); uri.setParam( QStringLiteral( "url" ), urlDataIt.value() ); QgsDataItem *item = new QgsXyzLayerItem( parentItem, layerName, path, uri.encodedUri() ); if ( item ) { items.append( item ); } } } } } return items; }
void QgsWCSSourceSelect::addButtonClicked() { QgsDataSourceUri uri = mUri; QString identifier = selectedIdentifier(); if ( identifier.isEmpty() ) { return; } uri.setParam( QStringLiteral( "identifier" ), identifier ); // Set crs only if necessary (multiple offered), so that we can decide in the // provider if WCS 1.0 with RESPONSE_CRS has to be used. Not perfect, they can // add more CRS in future and URI will be saved in project without any. // TODO: consider again, currently if crs in url is used to set WCS coverage CRS, // without that param user is asked for CRS //if ( selectedLayersCRSs().size() > 1 ) //{ uri.setParam( QStringLiteral( "crs" ), selectedCrs() ); //} QgsDebugMsg( "selectedFormat = " + selectedFormat() ); if ( !selectedFormat().isEmpty() ) { uri.setParam( QStringLiteral( "format" ), selectedFormat() ); } QgsDebugMsg( "selectedTime = " + selectedTime() ); if ( !selectedTime().isEmpty() ) { uri.setParam( QStringLiteral( "time" ), selectedTime() ); } QString cache; QgsDebugMsg( QString( "selectedCacheLoadControl = %1" ).arg( selectedCacheLoadControl() ) ); cache = QgsNetworkAccessManager::cacheLoadControlName( selectedCacheLoadControl() ); uri.setParam( QStringLiteral( "cache" ), cache ); emit addRasterLayer( uri.encodedUri(), identifier, QStringLiteral( "wcs" ) ); }
QgsRasterLayer* QgsRemoteOWSBuilder::wmsLayerFromUrl( const QString& url, const QString& layerName, QList<QgsMapLayer*>& layersToRemove, bool allowCaching ) const { QgsDebugMsg( "Entering" ); QgsRasterLayer* result = nullptr; QString baseUrl, format, crs; QStringList layerList, styleList; if ( allowCaching ) { result = qobject_cast<QgsRasterLayer*>( QgsMSLayerCache::instance()->searchLayer( url, layerName ) ); } if ( result ) { return result; } QStringList urlList = url.split( QStringLiteral( "?" ) ); if ( urlList.size() < 2 ) { return nullptr; } baseUrl = urlList.at( 0 ); QStringList paramList = urlList.at( 1 ).split( QStringLiteral( "&" ) ); QStringList::const_iterator paramIt; for ( paramIt = paramList.constBegin(); paramIt != paramList.constEnd(); ++paramIt ) { if ( paramIt->startsWith( QLatin1String( "http" ), Qt::CaseInsensitive ) ) { baseUrl = paramIt->split( QStringLiteral( "=" ) ).at( 1 ); } else if ( paramIt->startsWith( QLatin1String( "FORMAT" ), Qt::CaseInsensitive ) ) { format = paramIt->split( QStringLiteral( "=" ) ).at( 1 ); } else if ( paramIt->startsWith( QLatin1String( "CRS" ), Qt::CaseInsensitive ) ) { crs = paramIt->split( QStringLiteral( "=" ) ).at( 1 ); } else if ( paramIt->startsWith( QLatin1String( "LAYERS" ), Qt::CaseInsensitive ) ) { layerList = paramIt->split( QStringLiteral( "=" ) ).at( 1 ).split( QStringLiteral( "," ) ); } else if ( paramIt->startsWith( QLatin1String( "STYLES" ), Qt::CaseInsensitive ) ) { styleList = paramIt->split( QStringLiteral( "=" ) ).at( 1 ).split( QStringLiteral( "," ) ); } } QgsDebugMsg( "baseUrl: " + baseUrl ); QgsDebugMsg( "format: " + format ); QgsDebugMsg( "crs: " + crs ); QgsDebugMsg( "layerList first item: " + layerList.at( 0 ) ); QgsDebugMsg( "styleList first item: " + styleList.at( 0 ) ); QgsDataSourceUri uri; uri.setParam( QStringLiteral( "url" ), baseUrl ); uri.setParam( QStringLiteral( "format" ), format ); uri.setParam( QStringLiteral( "crs" ), crs ); uri.setParam( QStringLiteral( "layers" ), layerList ); uri.setParam( QStringLiteral( "styles" ), styleList ); result = new QgsRasterLayer( uri.encodedUri(), QLatin1String( "" ), QStringLiteral( "wms" ) ); if ( !result->isValid() ) { return nullptr; } //insert into cache if ( allowCaching ) { QgsMSLayerCache::instance()->insertLayer( url, layerName, result ); } else { layersToRemove.push_back( result ); } return result; }