26#include "moc_qgsmaplayerserverproperties.cpp"
28using namespace Qt::StringLiterals;
39 return mMetadataUrls == other.mMetadataUrls;
44 return !( *
this == other );
60 return !( *
this == other );
70 mMetadataUrls.clear();
75 QDomElement element = layer_node.namedItem( u
"metadataUrls"_s ).toElement();
76 mMetadataUrls.clear();
77 const QDomNodeList el = element.elementsByTagName( u
"metadataUrl"_s );
78 for (
int i = 0; i < el.size(); i++ )
80 element = el.at( i ).toElement();
82 oneUrl.
type = element.attribute( u
"type"_s );
83 oneUrl.
format = element.attribute( u
"format"_s );
84 oneUrl.
url = element.text();
91 if ( !mMetadataUrls.empty() )
93 QDomElement urls = document.createElement( u
"metadataUrls"_s );
96 QDomElement urlElement = document.createElement( u
"metadataUrl"_s );
97 urlElement.setAttribute( u
"type"_s, url.type );
98 urlElement.setAttribute( u
"format"_s, url.format );
99 urlElement.appendChild( document.createTextNode( url.url ) );
100 urls.appendChild( urlElement );
102 layer_node.appendChild( urls );
110 return mWmsDimensions == other.mWmsDimensions;
115 return !( *
this == other );
125 mWmsDimensions.clear();
130 mWmsDimensions = dimensions;
135 QMap<int, QString> labels;
147 if ( dim.name == wmsDimInfo.
name )
152 mWmsDimensions.append( wmsDimInfo );
158 for (
int i = 0; i < mWmsDimensions.size(); ++i )
160 if ( mWmsDimensions[i].name == wmsDimName )
162 mWmsDimensions.removeAt( i );
171 return mWmsDimensions;
184 const QDomNode wmsDimsNode = layer_node.namedItem( u
"wmsDimensions"_s );
185 if ( wmsDimsNode.isNull() )
189 const QDomElement wmsDimsElem = wmsDimsNode.toElement();
190 const QDomNodeList wmsDimsList = wmsDimsElem.elementsByTagName( u
"dimension"_s );
191 for (
int i = 0; i < wmsDimsList.size(); ++i )
193 const QDomElement dimElem = wmsDimsList.at( i ).toElement();
194 const QString dimName = dimElem.attribute( u
"name"_s );
195 const QString dimFieldName = dimElem.attribute( u
"fieldName"_s );
197 const int dimFieldNameIndex = fields.
indexOf( dimFieldName );
198 if ( dimFieldNameIndex == -1 )
202 QVariant dimRefValue;
203 const int dimDefaultDisplayType = dimElem.attribute( u
"defaultDisplayType"_s ).toInt();
206 const QString dimRefValueStr = dimElem.attribute( u
"referenceValue"_s );
207 if ( !dimRefValueStr.isEmpty() )
209 const QgsField dimField = fields.
at( dimFieldNameIndex );
210 dimRefValue = QVariant( dimRefValueStr );
218 dim( dimName, dimFieldName, dimElem.attribute( u
"endFieldName"_s ), dimElem.attribute( u
"units"_s ), dimElem.attribute( u
"unitSymbol"_s ), dimDefaultDisplayType, dimRefValue );
222 mWmsDimensions.append( dim );
229 if ( !mWmsDimensions.isEmpty() )
231 QDomElement wmsDimsElem = document.createElement( u
"wmsDimensions"_s );
234 QDomElement dimElem = document.createElement( u
"dimension"_s );
235 dimElem.setAttribute( u
"name"_s, dim.name );
236 dimElem.setAttribute( u
"fieldName"_s, dim.fieldName );
237 dimElem.setAttribute( u
"endFieldName"_s, dim.endFieldName );
238 dimElem.setAttribute( u
"units"_s, dim.units );
239 dimElem.setAttribute( u
"unitSymbol"_s, dim.unitSymbol );
240 dimElem.setAttribute( u
"defaultDisplayType"_s, dim.defaultDisplayType );
241 dimElem.setAttribute( u
"referenceValue"_s, dim.referenceValue.toString() );
242 wmsDimsElem.appendChild( dimElem );
244 layer_node.appendChild( wmsDimsElem );
277 && mShortName == other.mShortName
278 && mTitle == other.mTitle
279 && mWfsTitle == other.mWfsTitle
280 && mAbstract == other.mAbstract
281 && mKeywordList == other.mKeywordList
282 && mDataUrl == other.mDataUrl
283 && mDataUrlFormat == other.mDataUrlFormat
284 && mAttribution == other.mAttribution
285 && mAttributionUrl == other.mAttributionUrl
286 && mLegendUrl == other.mLegendUrl
287 && mLegendUrlFormat == other.mLegendUrlFormat;
292 return !( *
this == other );
303 QString name = mLayer ? mLayer->name() : QString();
304 if ( !mShortName.isEmpty() )
307 name.replace(
' ',
'_' ).replace(
':',
'-' ).replace( QChar( 0x2014 ) ,
'-' );
309 return name.toLocal8Bit();
319 const QDomElement metaUrlElem = layerNode.firstChildElement( u
"metadataUrl"_s );
320 if ( !metaUrlElem.isNull() )
322 const QString url = metaUrlElem.text();
323 const QString type = metaUrlElem.attribute( u
"type"_s, QString() );
324 const QString format = metaUrlElem.attribute( u
"format"_s, QString() );
326 setMetadataUrls( QList<QgsMapLayerServerProperties::MetadataUrl>() << newItem );
333 const QDomElement shortNameElem = layerNode.firstChildElement( u
"shortname"_s );
334 if ( !shortNameElem.isNull() )
336 mShortName = shortNameElem.text();
340 const QDomElement titleElem = layerNode.firstChildElement( u
"title"_s );
341 if ( !titleElem.isNull() )
343 mTitle = titleElem.text();
344 mWfsTitle = titleElem.attribute( u
"wfs"_s );
348 const QDomElement abstractElem = layerNode.firstChildElement( u
"abstract"_s );
349 if ( !abstractElem.isNull() )
351 mAbstract = abstractElem.text();
355 const QDomElement keywordListElem = layerNode.firstChildElement( u
"keywordList"_s );
356 if ( !keywordListElem.isNull() )
359 for ( QDomNode n = keywordListElem.firstChild(); !n.isNull(); n = n.nextSibling() )
361 const QString keyword = n.toElement().text();
362 if ( !keyword.isEmpty() )
365 mKeywordList = kwdList.join(
", "_L1 );
369 const QDomElement dataUrlElem = layerNode.firstChildElement( u
"dataUrl"_s );
370 if ( !dataUrlElem.isNull() )
372 mDataUrl = dataUrlElem.text();
373 mDataUrlFormat = dataUrlElem.attribute( u
"format"_s, QString() );
377 const QDomElement attribElem = layerNode.firstChildElement( u
"attribution"_s );
378 if ( !attribElem.isNull() )
380 mAttribution = attribElem.text();
381 mAttributionUrl = attribElem.attribute( u
"href"_s, QString() );
385 const QDomElement legendUrlElem = layerNode.firstChildElement( u
"legendUrl"_s );
386 if ( !legendUrlElem.isNull() )
388 mLegendUrl = legendUrlElem.text();
389 mLegendUrlFormat = legendUrlElem.attribute( u
"format"_s, QString() );
399 if ( !mShortName.isEmpty() )
401 QDomElement layerShortName = document.createElement( u
"shortname"_s );
402 const QDomText layerShortNameText = document.createTextNode( mShortName );
403 layerShortName.appendChild( layerShortNameText );
404 layerNode.appendChild( layerShortName );
408 if ( !mTitle.isEmpty() )
410 QDomElement layerTitle = document.createElement( u
"title"_s );
411 const QDomText layerTitleText = document.createTextNode( mTitle );
412 layerTitle.appendChild( layerTitleText );
414 if ( mTitle != mWfsTitle )
416 layerTitle.setAttribute(
"wfs", mWfsTitle );
419 layerNode.appendChild( layerTitle );
423 if ( !mAbstract.isEmpty() )
425 QDomElement layerAbstract = document.createElement( u
"abstract"_s );
426 const QDomText layerAbstractText = document.createTextNode( mAbstract );
427 layerAbstract.appendChild( layerAbstractText );
428 layerNode.appendChild( layerAbstract );
432 const QStringList keywordStringList = mKeywordList.split(
',', Qt::SkipEmptyParts );
433 if ( !keywordStringList.isEmpty() )
435 QDomElement layerKeywordList = document.createElement( u
"keywordList"_s );
436 for (
int i = 0; i < keywordStringList.size(); ++i )
438 QDomElement layerKeywordValue = document.createElement( u
"value"_s );
439 const QDomText layerKeywordText = document.createTextNode( keywordStringList.at( i ).trimmed() );
440 layerKeywordValue.appendChild( layerKeywordText );
441 layerKeywordList.appendChild( layerKeywordValue );
443 layerNode.appendChild( layerKeywordList );
447 if ( !mDataUrl.isEmpty() )
449 QDomElement layerDataUrl = document.createElement( u
"dataUrl"_s );
450 const QDomText layerDataUrlText = document.createTextNode( mDataUrl );
451 layerDataUrl.appendChild( layerDataUrlText );
452 layerDataUrl.setAttribute( u
"format"_s, mDataUrlFormat );
453 layerNode.appendChild( layerDataUrl );
457 if ( !mLegendUrl.isEmpty() )
459 QDomElement layerLegendUrl = document.createElement( u
"legendUrl"_s );
460 const QDomText layerLegendUrlText = document.createTextNode( mLegendUrl );
461 layerLegendUrl.appendChild( layerLegendUrlText );
462 layerLegendUrl.setAttribute( u
"format"_s, mLegendUrlFormat );
463 layerNode.appendChild( layerLegendUrl );
467 if ( !mAttribution.isEmpty() )
469 QDomElement layerAttribution = document.createElement( u
"attribution"_s );
470 const QDomText layerAttributionText = document.createTextNode( mAttribution );
471 layerAttribution.appendChild( layerAttributionText );
472 layerAttribution.setAttribute( u
"href"_s, mAttributionUrl );
473 layerNode.appendChild( layerAttribution );
Encapsulate a field in an attribute table or data source.
bool convertCompatible(QVariant &v, QString *errorMessage=nullptr) const
Converts the provided variant to a compatible format.
Container of fields for a vector layer.
Q_INVOKABLE int indexOf(const QString &fieldName) const
Gets the field index from the field name.
QgsField at(int i) const
Returns the field at particular index (must be in range 0..N-1).
void setLegendUrl(const QString &legendUrl)
Sets the URL for the layer's legend.
void readXml(const QDomNode &layer_node)
Reads server properties from project file.
void setDataUrl(const QString &dataUrl)
Sets the DataUrl of the layer used by QGIS Server in GetCapabilities request.
void setAbstract(const QString &abstract)
Sets the abstract of the layer used by QGIS Server in GetCapabilities request.
void setDataUrlFormat(const QString &dataUrlFormat)
Sets the DataUrl format of the layerused by QGIS Server in GetCapabilities request.
void setAttributionUrl(const QString &url)
Sets the attribution url of the layer used by QGIS Server in GetCapabilities request.
void setAttribution(const QString &attrib)
Sets the attribution of the layer used by QGIS Server in GetCapabilities request.
void setShortName(const QString &name)
Sets the short name of the layer used by QGIS Server to identify the layer.
void setLegendUrlFormat(const QString &legendUrlFormat)
Sets the format for a URL based layer legend.
void copyTo(QgsMapLayerServerProperties *properties) const
Copy properties to another instance.
bool operator==(const QgsMapLayerServerProperties &other) const
QgsMapLayerServerProperties(QgsMapLayer *layer=nullptr)
Constructor - Creates a Map Layer QGIS Server Properties.
QString wfsTypeName() const
Returns WFS typename for the layer.
const QgsMapLayer * layer() const override
Gets the parent layer.
bool operator!=(const QgsMapLayerServerProperties &other) const
void writeXml(QDomNode &layer_node, QDomDocument &document) const
Saves server properties to xml under the layer node.
void setTitle(const QString &title)
Sets the title of the layer used by QGIS Server in GetCapabilities request.
void setKeywordList(const QString &keywords)
Sets the keywords list of the layerused by QGIS Server in GetCapabilities request.
void reset()
Reset properties to default.
void setWfsTitle(const QString &title)
Sets the title of the layer used by QGIS Server in WFS GetCapabilities request.
Base class for all map layer types.
Manages QGIS Server properties for WMS dimensions.
void readXml(const QDomNode &layer_node)
Reads server properties from project file.
static QMap< int, QString > wmsDimensionDefaultDisplayLabels()
Returns WMS Dimension default display labels.
void writeXml(QDomNode &layer_node, QDomDocument &document) const
Saves server properties to xml under the layer node.
void reset()
Reset properties to default.
bool addWmsDimension(const QgsServerWmsDimensionProperties::WmsDimensionInfo &wmsDimInfo)
Adds a QGIS Server WMS Dimension.
void copyTo(QgsServerWmsDimensionProperties *properties) const
Copy properties to another instance.
bool operator==(const QgsServerWmsDimensionProperties &other) const
bool operator!=(const QgsServerWmsDimensionProperties &other) const
bool removeWmsDimension(const QString &wmsDimName)
Removes a QGIS Server WMS Dimension.
const QList< QgsServerWmsDimensionProperties::WmsDimensionInfo > wmsDimensions() const
Returns the QGIS Server WMS Dimension list.
void setWmsDimensions(const QList< QgsServerWmsDimensionProperties::WmsDimensionInfo > &dimensions)
Set WMS Dimensions.
Represents a vector layer which manages a vector based dataset.
Setting to define QGIS Server WMS Dimension.
bool operator!=(const WmsDimensionInfo &other) const
bool operator==(const WmsDimensionInfo &other) const
WmsDimensionInfo(const QString &dimName, const QString &dimFieldName, const QString &dimEndFieldName=QString(), const QString &dimUnits=QString(), const QString &dimUnitSymbol=QString(), const int &dimDefaultDisplayType=QgsServerWmsDimensionProperties::WmsDimensionInfo::AllValues, const QVariant &dimReferenceValue=QVariant())
Constructor for WmsDimensionInfo.
@ MinValue
Add selection to current selection.
@ MaxValue
Modify current selection to include only select features which match.
@ AllValues
Display all values of the dimension.
@ ReferenceValue
Remove from current selection.