26#include "moc_qgsmaplayerserverproperties.cpp"
28using namespace Qt::StringLiterals;
41 return mMetadataUrls == other.mMetadataUrls;
46 return !( *
this == other );
62 return !( *
this == other );
72 mMetadataUrls.clear();
77 QDomElement element = layer_node.namedItem( u
"metadataUrls"_s ).toElement();
78 mMetadataUrls.clear();
79 const QDomNodeList el = element.elementsByTagName( u
"metadataUrl"_s );
80 for (
int i = 0; i < el.size(); i++ )
82 element = el.at( i ).toElement();
84 oneUrl.
type = element.attribute( u
"type"_s );
85 oneUrl.
format = element.attribute( u
"format"_s );
86 oneUrl.
url = element.text();
93 if ( !mMetadataUrls.empty() )
95 QDomElement urls = document.createElement( u
"metadataUrls"_s );
98 QDomElement urlElement = document.createElement( u
"metadataUrl"_s );
99 urlElement.setAttribute( u
"type"_s, url.type );
100 urlElement.setAttribute( u
"format"_s, url.format );
101 urlElement.appendChild( document.createTextNode( url.url ) );
102 urls.appendChild( urlElement );
104 layer_node.appendChild( urls );
112 return mWmsDimensions == other.mWmsDimensions;
117 return !( *
this == other );
127 mWmsDimensions.clear();
132 mWmsDimensions = dimensions;
137 QMap<int, QString> labels;
149 if ( dim.name == wmsDimInfo.
name )
154 mWmsDimensions.append( wmsDimInfo );
160 for (
int i = 0; i < mWmsDimensions.size(); ++i )
162 if ( mWmsDimensions[ i ].name == wmsDimName )
164 mWmsDimensions.removeAt( i );
173 return mWmsDimensions;
186 const QDomNode wmsDimsNode = layer_node.namedItem( u
"wmsDimensions"_s );
187 if ( wmsDimsNode.isNull() )
191 const QDomElement wmsDimsElem = wmsDimsNode.toElement();
192 const QDomNodeList wmsDimsList = wmsDimsElem.elementsByTagName( u
"dimension"_s );
193 for (
int i = 0; i < wmsDimsList.size(); ++i )
195 const QDomElement dimElem = wmsDimsList.at( i ).toElement();
196 const QString dimName = dimElem.attribute( u
"name"_s );
197 const QString dimFieldName = dimElem.attribute( u
"fieldName"_s );
199 const int dimFieldNameIndex = fields.
indexOf( dimFieldName );
200 if ( dimFieldNameIndex == -1 )
204 QVariant dimRefValue;
205 const int dimDefaultDisplayType = dimElem.attribute( u
"defaultDisplayType"_s ).toInt();
208 const QString dimRefValueStr = dimElem.attribute( u
"referenceValue"_s );
209 if ( !dimRefValueStr.isEmpty() )
211 const QgsField dimField = fields.
at( dimFieldNameIndex );
212 dimRefValue = QVariant( dimRefValueStr );
220 dimElem.attribute( u
"endFieldName"_s ),
221 dimElem.attribute( u
"units"_s ),
222 dimElem.attribute( u
"unitSymbol"_s ),
223 dimDefaultDisplayType, dimRefValue );
227 mWmsDimensions.append( dim );
234 if ( ! mWmsDimensions.isEmpty() )
236 QDomElement wmsDimsElem = document.createElement( u
"wmsDimensions"_s );
239 QDomElement dimElem = document.createElement( u
"dimension"_s );
240 dimElem.setAttribute( u
"name"_s, dim.name );
241 dimElem.setAttribute( u
"fieldName"_s, dim.fieldName );
242 dimElem.setAttribute( u
"endFieldName"_s, dim.endFieldName );
243 dimElem.setAttribute( u
"units"_s, dim.units );
244 dimElem.setAttribute( u
"unitSymbol"_s, dim.unitSymbol );
245 dimElem.setAttribute( u
"defaultDisplayType"_s, dim.defaultDisplayType );
246 dimElem.setAttribute( u
"referenceValue"_s, dim.referenceValue.toString() );
247 wmsDimsElem.appendChild( dimElem );
249 layer_node.appendChild( wmsDimsElem );
282 && mShortName == other.mShortName
283 && mTitle == other.mTitle
284 && mAbstract == other.mAbstract
285 && mKeywordList == other.mKeywordList
286 && mDataUrl == other.mDataUrl
287 && mDataUrlFormat == other.mDataUrlFormat
288 && mAttribution == other.mAttribution
289 && mAttributionUrl == other.mAttributionUrl
290 && mLegendUrl == other.mLegendUrl
291 && mLegendUrlFormat == other.mLegendUrlFormat;
296 return !( *
this == other );
307 QString name = mLayer ? mLayer->name() : QString();
308 if ( !mShortName.isEmpty() )
311 name.replace(
' ',
'_' ).replace(
':',
'-' ).replace( QChar( 0x2014 ) ,
'-' );
313 return name.toLocal8Bit();
323 const QDomElement metaUrlElem = layerNode.firstChildElement( u
"metadataUrl"_s );
324 if ( !metaUrlElem.isNull() )
326 const QString url = metaUrlElem.text();
327 const QString type = metaUrlElem.attribute( u
"type"_s, QString() );
328 const QString format = metaUrlElem.attribute( u
"format"_s, QString() );
330 setMetadataUrls( QList<QgsMapLayerServerProperties::MetadataUrl>() << newItem );
337 const QDomElement shortNameElem = layerNode.firstChildElement( u
"shortname"_s );
338 if ( !shortNameElem.isNull() )
340 mShortName = shortNameElem.text();
344 const QDomElement titleElem = layerNode.firstChildElement( u
"title"_s );
345 if ( !titleElem.isNull() )
347 mTitle = titleElem.text();
348 mWfsTitle = titleElem.attribute( u
"wfs"_s );
352 const QDomElement abstractElem = layerNode.firstChildElement( u
"abstract"_s );
353 if ( !abstractElem.isNull() )
355 mAbstract = abstractElem.text();
359 const QDomElement keywordListElem = layerNode.firstChildElement( u
"keywordList"_s );
360 if ( !keywordListElem.isNull() )
363 for ( QDomNode n = keywordListElem.firstChild(); !n.isNull(); n = n.nextSibling() )
365 const QString keyword = n.toElement().text();
366 if ( !keyword.isEmpty() )
369 mKeywordList = kwdList.join(
", "_L1 );
373 const QDomElement dataUrlElem = layerNode.firstChildElement( u
"dataUrl"_s );
374 if ( !dataUrlElem.isNull() )
376 mDataUrl = dataUrlElem.text();
377 mDataUrlFormat = dataUrlElem.attribute( u
"format"_s, QString() );
381 const QDomElement attribElem = layerNode.firstChildElement( u
"attribution"_s );
382 if ( !attribElem.isNull() )
384 mAttribution = attribElem.text();
385 mAttributionUrl = attribElem.attribute( u
"href"_s, QString() );
389 const QDomElement legendUrlElem = layerNode.firstChildElement( u
"legendUrl"_s );
390 if ( !legendUrlElem.isNull() )
392 mLegendUrl = legendUrlElem.text();
393 mLegendUrlFormat = legendUrlElem.attribute( u
"format"_s, QString() );
403 if ( !mShortName.isEmpty() )
405 QDomElement layerShortName = document.createElement( u
"shortname"_s );
406 const QDomText layerShortNameText = document.createTextNode( mShortName );
407 layerShortName.appendChild( layerShortNameText );
408 layerNode.appendChild( layerShortName );
412 if ( !mTitle.isEmpty() )
414 QDomElement layerTitle = document.createElement( u
"title"_s );
415 const QDomText layerTitleText = document.createTextNode( mTitle );
416 layerTitle.appendChild( layerTitleText );
418 if ( mTitle != mWfsTitle )
420 layerTitle.setAttribute(
"wfs", mWfsTitle );
423 layerNode.appendChild( layerTitle );
427 if ( !mAbstract.isEmpty() )
429 QDomElement layerAbstract = document.createElement( u
"abstract"_s );
430 const QDomText layerAbstractText = document.createTextNode( mAbstract );
431 layerAbstract.appendChild( layerAbstractText );
432 layerNode.appendChild( layerAbstract );
436 const QStringList keywordStringList = mKeywordList.split(
',', Qt::SkipEmptyParts );
437 if ( !keywordStringList.isEmpty() )
439 QDomElement layerKeywordList = document.createElement( u
"keywordList"_s );
440 for (
int i = 0; i < keywordStringList.size(); ++i )
442 QDomElement layerKeywordValue = document.createElement( u
"value"_s );
443 const QDomText layerKeywordText = document.createTextNode( keywordStringList.at( i ).trimmed() );
444 layerKeywordValue.appendChild( layerKeywordText );
445 layerKeywordList.appendChild( layerKeywordValue );
447 layerNode.appendChild( layerKeywordList );
451 if ( !mDataUrl.isEmpty() )
453 QDomElement layerDataUrl = document.createElement( u
"dataUrl"_s );
454 const QDomText layerDataUrlText = document.createTextNode( mDataUrl );
455 layerDataUrl.appendChild( layerDataUrlText );
456 layerDataUrl.setAttribute( u
"format"_s, mDataUrlFormat );
457 layerNode.appendChild( layerDataUrl );
461 if ( !mLegendUrl.isEmpty() )
463 QDomElement layerLegendUrl = document.createElement( u
"legendUrl"_s );
464 const QDomText layerLegendUrlText = document.createTextNode( mLegendUrl );
465 layerLegendUrl.appendChild( layerLegendUrlText );
466 layerLegendUrl.setAttribute( u
"format"_s, mLegendUrlFormat );
467 layerNode.appendChild( layerLegendUrl );
471 if ( !mAttribution.isEmpty() )
473 QDomElement layerAttribution = document.createElement( u
"attribution"_s );
474 const QDomText layerAttributionText = document.createTextNode( mAttribution );
475 layerAttribution.appendChild( layerAttributionText );
476 layerAttribution.setAttribute( u
"href"_s, mAttributionUrl );
477 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.
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.