Skip to content

Commit

Permalink
[BUGFIX] WFS GetCapabilities respons misses <keywords> key
Browse files Browse the repository at this point in the history
Fixes #13037 WFS GetCapabilities respons misses <keywords> key

Replace KeywordList by Keywords in WFS Getcapabilities and keywords in WCS GetCapabilities.
  • Loading branch information
rldhont committed Dec 18, 2015
1 parent 4511cc4 commit e2d1320
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 26 deletions.
63 changes: 40 additions & 23 deletions src/server/qgsserverprojectparser.cpp
Expand Up @@ -418,33 +418,50 @@ void QgsServerProjectParser::serviceCapabilities( QDomElement& parentElement, QD


//keyword list //keyword list
QDomElement keywordListElem = propertiesElement.firstChildElement( "WMSKeywordList" ); QDomElement keywordListElem = propertiesElement.firstChildElement( "WMSKeywordList" );
QDomElement wmsKeywordElem = doc.createElement( "KeywordList" ); if ( service.compare( "WMS", Qt::CaseInsensitive ) == 0 )
//add default keyword {
QDomElement keywordElem = doc.createElement( "Keyword" ); QDomElement wmsKeywordElem = doc.createElement( "KeywordList" );
keywordElem.setAttribute( "vocabulary", "ISO" ); //add default keyword
QDomText keywordText = doc.createTextNode( "infoMapAccessService" ); QDomElement keywordElem = doc.createElement( "Keyword" );
if ( service.compare( "WFS", Qt::CaseInsensitive ) == 0 ) keywordElem.setAttribute( "vocabulary", "ISO" );
keywordText = doc.createTextNode( "infoFeatureAccessService" ); QDomText keywordText = doc.createTextNode( "infoMapAccessService" );
else if ( service.compare( "WCS", Qt::CaseInsensitive ) == 0 ) /* If WFS and WCS 2.0 is implemented
keywordText = doc.createTextNode( "infoCoverageAccessService" ); if ( service.compare( "WFS", Qt::CaseInsensitive ) == 0 )
keywordElem.appendChild( keywordText ); keywordText = doc.createTextNode( "infoFeatureAccessService" );
wmsKeywordElem.appendChild( keywordElem ); else if ( service.compare( "WCS", Qt::CaseInsensitive ) == 0 )
serviceElem.appendChild( wmsKeywordElem ); keywordText = doc.createTextNode( "infoCoverageAccessService" );*/
//add config keywords keywordElem.appendChild( keywordText );
if ( !keywordListElem.isNull() && !keywordListElem.text().isEmpty() ) wmsKeywordElem.appendChild( keywordElem );
{ serviceElem.appendChild( wmsKeywordElem );
QDomNodeList keywordList = keywordListElem.elementsByTagName( "value" ); //add config keywords
for ( int i = 0; i < keywordList.size(); ++i ) if ( !keywordListElem.isNull() && !keywordListElem.text().isEmpty() )
{ {
keywordElem = doc.createElement( "Keyword" ); QDomNodeList keywordList = keywordListElem.elementsByTagName( "value" );
keywordText = doc.createTextNode( keywordList.at( i ).toElement().text() ); for ( int i = 0; i < keywordList.size(); ++i )
keywordElem.appendChild( keywordText );
if ( sia2045 )
{ {
keywordElem.setAttribute( "vocabulary", "SIA_Geo405" ); keywordElem = doc.createElement( "Keyword" );
keywordText = doc.createTextNode( keywordList.at( i ).toElement().text() );
keywordElem.appendChild( keywordText );
if ( sia2045 )
{
keywordElem.setAttribute( "vocabulary", "SIA_Geo405" );
}
wmsKeywordElem.appendChild( keywordElem );
} }
wmsKeywordElem.appendChild( keywordElem );
} }
} else if ( !keywordListElem.isNull() && !keywordListElem.text().isEmpty() ) {
QDomNodeList keywordNodeList = keywordListElem.elementsByTagName( "value" );
QStringList keywordList;
for ( int i = 0; i < keywordNodeList.size(); ++i )
{
keywordList.push_back( keywordNodeList.at( i ).toElement().text() );
}
QDomElement wmsKeywordElem = doc.createElement( "Keywords" );
if ( service.compare( "WCS", Qt::CaseInsensitive ) == 0 )
wmsKeywordElem = doc.createElement( "keywords" );
QDomText keywordText = doc.createTextNode( keywordList.join( ", " ) );
wmsKeywordElem.appendChild( keywordText );
serviceElem.appendChild( wmsKeywordElem );
} }


//OnlineResource element is mandatory according to the WMS specification //OnlineResource element is mandatory according to the WMS specification
Expand Down
3 changes: 0 additions & 3 deletions tests/testdata/qgis_server/wfs_getcapabilities.txt
Expand Up @@ -6,9 +6,6 @@ Content-Type: text/xml; charset=utf-8
<Name>WFS</Name> <Name>WFS</Name>
<Title>QGIS TestProject</Title> <Title>QGIS TestProject</Title>
<Abstract>Some UTF8 text èòù</Abstract> <Abstract>Some UTF8 text èòù</Abstract>
<KeywordList>
<Keyword vocabulary="ISO">infoFeatureAccessService</Keyword>
</KeywordList>
<OnlineResource xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href=""/> <OnlineResource xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href=""/>
<Fees>conditions unknown</Fees> <Fees>conditions unknown</Fees>
<AccessConstraints>None</AccessConstraints> <AccessConstraints>None</AccessConstraints>
Expand Down

0 comments on commit e2d1320

Please sign in to comment.