From f9c80f321cc8e4ecf75e4bff0bd2cd680fc66352 Mon Sep 17 00:00:00 2001 From: Blottiere Paul Date: Wed, 8 Nov 2017 14:23:51 +0000 Subject: [PATCH 1/5] Replace Name entry by Abstract in GetCapabilities for root layer --- .../services/wms/qgswmsgetcapabilities.cpp | 21 ++++++------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/src/server/services/wms/qgswmsgetcapabilities.cpp b/src/server/services/wms/qgswmsgetcapabilities.cpp index 2369105bd36..628f35b0251 100644 --- a/src/server/services/wms/qgswmsgetcapabilities.cpp +++ b/src/server/services/wms/qgswmsgetcapabilities.cpp @@ -770,27 +770,18 @@ namespace QgsWms QDomElement layerParentElem = doc.createElement( QStringLiteral( "Layer" ) ); - // Root Layer name - QDomElement layerParentNameElem = doc.createElement( QStringLiteral( "Name" ) ); - QString rootName = QgsServerProjectUtils::wmsRootName( *project ); - if ( rootName.isEmpty() ) - { - QDomText layerParentNameText = doc.createTextNode( project->title() ); - layerParentNameElem.appendChild( layerParentNameText ); - } - else - { - QDomText layerParentNameText = doc.createTextNode( rootName ); - layerParentNameElem.appendChild( layerParentNameText ); - } - layerParentElem.appendChild( layerParentNameElem ); - // Root Layer title QDomElement layerParentTitleElem = doc.createElement( QStringLiteral( "Title" ) ); QDomText layerParentTitleText = doc.createTextNode( project->title() ); layerParentTitleElem.appendChild( layerParentTitleText ); layerParentElem.appendChild( layerParentTitleElem ); + // Root Layer abstract + QDomElement layerParentAbstElem = doc.createElement( QStringLiteral( "Abstract" ) ); + QDomText layerParentAbstText = doc.createTextNode( project->title() ); + layerParentAbstElem.appendChild( layerParentAbstText ); + layerParentElem.appendChild( layerParentAbstElem ); + // Root Layer tree name if ( projectSettings ) { From f52300d361b5600ca17466786c96e498e9a75ca9 Mon Sep 17 00:00:00 2001 From: Blottiere Paul Date: Wed, 8 Nov 2017 14:24:52 +0000 Subject: [PATCH 2/5] Update tests --- tests/testdata/qgis_server/getcapabilities.txt | 2 +- tests/testdata/qgis_server/getcapabilities_inspire.txt | 2 +- tests/testdata/qgis_server/getprojectsettings.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/testdata/qgis_server/getcapabilities.txt b/tests/testdata/qgis_server/getcapabilities.txt index e79cb250da8..54b08649a54 100644 --- a/tests/testdata/qgis_server/getcapabilities.txt +++ b/tests/testdata/qgis_server/getcapabilities.txt @@ -98,8 +98,8 @@ Content-Type: text/xml; charset=utf-8 XML - QGIS Test Project QGIS Test Project + QGIS Test Project CRS:84 EPSG:4326 EPSG:3857 diff --git a/tests/testdata/qgis_server/getcapabilities_inspire.txt b/tests/testdata/qgis_server/getcapabilities_inspire.txt index 79414926dd9..14656ffaebd 100644 --- a/tests/testdata/qgis_server/getcapabilities_inspire.txt +++ b/tests/testdata/qgis_server/getcapabilities_inspire.txt @@ -120,8 +120,8 @@ Content-Type: text/xml; charset=utf-8 - QGIS Test Project QGIS Test Project + QGIS Test Project CRS:84 EPSG:4326 EPSG:3857 diff --git a/tests/testdata/qgis_server/getprojectsettings.txt b/tests/testdata/qgis_server/getprojectsettings.txt index 02808917921..d5ce859d8c6 100644 --- a/tests/testdata/qgis_server/getprojectsettings.txt +++ b/tests/testdata/qgis_server/getprojectsettings.txt @@ -114,8 +114,8 @@ Content-Type: text/xml; charset=utf-8 - QGIS Test Project QGIS Test Project + QGIS Test Project CRS:84 EPSG:4326 EPSG:3857 From 0a38003ba5e8bb5beaac72201d771093e6479bbd Mon Sep 17 00:00:00 2001 From: Blottiere Paul Date: Wed, 15 Nov 2017 16:40:14 +0000 Subject: [PATCH 3/5] Keep name and add metadata and keywordlist for root layer --- .../services/wms/qgswmsgetcapabilities.cpp | 88 ++++++++++++------- 1 file changed, 58 insertions(+), 30 deletions(-) diff --git a/src/server/services/wms/qgswmsgetcapabilities.cpp b/src/server/services/wms/qgswmsgetcapabilities.cpp index 628f35b0251..898c804c539 100644 --- a/src/server/services/wms/qgswmsgetcapabilities.cpp +++ b/src/server/services/wms/qgswmsgetcapabilities.cpp @@ -84,6 +84,7 @@ namespace QgsWms const QgsLayerTreeGroup *layerTreeGroup, bool projectSettings ); + void addKeywordListElement( const QgsProject *project, QDomDocument &doc, QDomElement &parent ); } void writeGetCapabilities( QgsServerInterface *serverIface, const QgsProject *project, @@ -225,8 +226,6 @@ namespace QgsWms QDomElement getServiceElement( QDomDocument &doc, const QgsProject *project, const QString &version, const QgsServerRequest &request ) { - bool sia2045 = QgsServerProjectUtils::wmsInfoFormatSia2045( *project ); - //Service element QDomElement serviceElem = doc.createElement( QStringLiteral( "Service" ) ); @@ -254,34 +253,7 @@ namespace QgsWms serviceElem.appendChild( abstractElem ); } - QDomElement keywordsElem = doc.createElement( QStringLiteral( "KeywordList" ) ); - //add default keyword - QDomElement keywordElem = doc.createElement( QStringLiteral( "Keyword" ) ); - keywordElem.setAttribute( QStringLiteral( "vocabulary" ), QStringLiteral( "ISO" ) ); - QDomText keywordText = doc.createTextNode( QStringLiteral( "infoMapAccessService" ) ); - keywordElem.appendChild( keywordText ); - keywordsElem.appendChild( keywordElem ); - serviceElem.appendChild( keywordsElem ); - QStringList keywords = QgsServerProjectUtils::owsServiceKeywords( *project ); - if ( !keywords.isEmpty() ) - { - for ( int i = 0; i < keywords.size(); ++i ) - { - QString keyword = keywords.at( i ); - if ( !keyword.isEmpty() ) - { - keywordElem = doc.createElement( QStringLiteral( "Keyword" ) ); - keywordText = doc.createTextNode( keyword ); - keywordElem.appendChild( keywordText ); - if ( sia2045 ) - { - keywordElem.setAttribute( QStringLiteral( "vocabulary" ), QStringLiteral( "SIA_Geo405" ) ); - } - keywordsElem.appendChild( keywordElem ); - } - } - serviceElem.appendChild( keywordsElem ); - } + addKeywordListElement( project, doc, serviceElem ); QString onlineResource = QgsServerProjectUtils::owsServiceOnlineResource( *project ); if ( onlineResource.isEmpty() ) @@ -782,6 +754,28 @@ namespace QgsWms layerParentAbstElem.appendChild( layerParentAbstText ); layerParentElem.appendChild( layerParentAbstElem ); + // Root Layer name + QDomElement layerParentNameElem = doc.createElement( QStringLiteral( "Name" ) ); + QString rootName = QgsServerProjectUtils::wmsRootName( *project ); + if ( rootName.isEmpty() ) + { + QDomText layerParentNameText = doc.createTextNode( project->title() ); + layerParentNameElem.appendChild( layerParentNameText ); + } + else + { + QDomText layerParentNameText = doc.createTextNode( rootName ); + layerParentNameElem.appendChild( layerParentNameText ); + } + layerParentElem.appendChild( layerParentNameElem ); + + // Keyword list + addKeywordListElement( project, doc, layerParentElem ); + + // Metadata (empty but needed for OGC tests RECOMMENDATIONS) + QDomElement metaUrlElem = doc.createElement( QStringLiteral( "MetadataURL" ) ); + layerParentElem.appendChild( metaUrlElem ); + // Root Layer tree name if ( projectSettings ) { @@ -1725,6 +1719,40 @@ namespace QgsWms } } + void addKeywordListElement( const QgsProject *project, QDomDocument &doc, QDomElement &parent ) + { + bool sia2045 = QgsServerProjectUtils::wmsInfoFormatSia2045( *project ); + + QDomElement keywordsElem = doc.createElement( QStringLiteral( "KeywordList" ) ); + //add default keyword + QDomElement keywordElem = doc.createElement( QStringLiteral( "Keyword" ) ); + keywordElem.setAttribute( QStringLiteral( "vocabulary" ), QStringLiteral( "ISO" ) ); + QDomText keywordText = doc.createTextNode( QStringLiteral( "infoMapAccessService" ) ); + keywordElem.appendChild( keywordText ); + keywordsElem.appendChild( keywordElem ); + parent.appendChild( keywordsElem ); + QStringList keywords = QgsServerProjectUtils::owsServiceKeywords( *project ); + if ( !keywords.isEmpty() ) + { + for ( int i = 0; i < keywords.size(); ++i ) + { + QString keyword = keywords.at( i ); + if ( !keyword.isEmpty() ) + { + keywordElem = doc.createElement( QStringLiteral( "Keyword" ) ); + keywordText = doc.createTextNode( keyword ); + keywordElem.appendChild( keywordText ); + if ( sia2045 ) + { + keywordElem.setAttribute( QStringLiteral( "vocabulary" ), QStringLiteral( "SIA_Geo405" ) ); + } + keywordsElem.appendChild( keywordElem ); + } + } + + parent.appendChild( keywordsElem ); + } + } } From 7b49032521d00428e4c92b4fd559a9b5fd705bda Mon Sep 17 00:00:00 2001 From: Blottiere Paul Date: Wed, 15 Nov 2017 16:48:11 +0000 Subject: [PATCH 4/5] Update for loop --- .../services/wms/qgswmsgetcapabilities.cpp | 23 ++++++++----------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/src/server/services/wms/qgswmsgetcapabilities.cpp b/src/server/services/wms/qgswmsgetcapabilities.cpp index 898c804c539..828ec7e3e4d 100644 --- a/src/server/services/wms/qgswmsgetcapabilities.cpp +++ b/src/server/services/wms/qgswmsgetcapabilities.cpp @@ -1732,26 +1732,21 @@ namespace QgsWms keywordsElem.appendChild( keywordElem ); parent.appendChild( keywordsElem ); QStringList keywords = QgsServerProjectUtils::owsServiceKeywords( *project ); - if ( !keywords.isEmpty() ) + for ( const QString &keyword : qgis::as_const( keywords ) ) { - for ( int i = 0; i < keywords.size(); ++i ) + if ( !keyword.isEmpty() ) { - QString keyword = keywords.at( i ); - if ( !keyword.isEmpty() ) + keywordElem = doc.createElement( QStringLiteral( "Keyword" ) ); + keywordText = doc.createTextNode( keyword ); + keywordElem.appendChild( keywordText ); + if ( sia2045 ) { - keywordElem = doc.createElement( QStringLiteral( "Keyword" ) ); - keywordText = doc.createTextNode( keyword ); - keywordElem.appendChild( keywordText ); - if ( sia2045 ) - { - keywordElem.setAttribute( QStringLiteral( "vocabulary" ), QStringLiteral( "SIA_Geo405" ) ); - } - keywordsElem.appendChild( keywordElem ); + keywordElem.setAttribute( QStringLiteral( "vocabulary" ), QStringLiteral( "SIA_Geo405" ) ); } + keywordsElem.appendChild( keywordElem ); } - - parent.appendChild( keywordsElem ); } + parent.appendChild( keywordsElem ); } } From 9283b26762f550118b204050f4c5f474b2f49af1 Mon Sep 17 00:00:00 2001 From: Blottiere Paul Date: Thu, 16 Nov 2017 08:40:45 +0000 Subject: [PATCH 5/5] Update tests --- tests/testdata/qgis_server/getcapabilities.txt | 5 +++++ tests/testdata/qgis_server/getcapabilities_inspire.txt | 5 +++++ tests/testdata/qgis_server/getprojectsettings.txt | 5 +++++ 3 files changed, 15 insertions(+) diff --git a/tests/testdata/qgis_server/getcapabilities.txt b/tests/testdata/qgis_server/getcapabilities.txt index 54b08649a54..293b5f6e806 100644 --- a/tests/testdata/qgis_server/getcapabilities.txt +++ b/tests/testdata/qgis_server/getcapabilities.txt @@ -111,6 +111,11 @@ Content-Type: text/xml; charset=utf-8 + QGIS Test Project + + infoMapAccessService + + testlayer èé A test vector layer diff --git a/tests/testdata/qgis_server/getcapabilities_inspire.txt b/tests/testdata/qgis_server/getcapabilities_inspire.txt index 14656ffaebd..dc06a0c5bb5 100644 --- a/tests/testdata/qgis_server/getcapabilities_inspire.txt +++ b/tests/testdata/qgis_server/getcapabilities_inspire.txt @@ -133,6 +133,11 @@ Content-Type: text/xml; charset=utf-8 + QGIS Test Project + + infoMapAccessService + + testlayer èé A test vector layer diff --git a/tests/testdata/qgis_server/getprojectsettings.txt b/tests/testdata/qgis_server/getprojectsettings.txt index d5ce859d8c6..8680a6a5933 100644 --- a/tests/testdata/qgis_server/getprojectsettings.txt +++ b/tests/testdata/qgis_server/getprojectsettings.txt @@ -127,6 +127,11 @@ Content-Type: text/xml; charset=utf-8 + QGIS Test Project + + infoMapAccessService + + QGIS Test Project testlayer èé