24#include <QRegularExpression> 
   31      return QObject::tr( 
"Encoding is not correctly set. A non 'System' encoding is required" );
 
   33      return QObject::tr( 
"Layer short name is not valid. It must start with an unaccented alphabetical letter, followed by any alphanumeric letters, dot, dash or underscore" );
 
   35      return QObject::tr( 
"One or more layers or groups have the same name or short name. Both the 'name' and 'short name' for layers and groups must be unique" );
 
   37      return QObject::tr( 
"The project root name (either the project short name or project title) is not valid. It must start with an unaccented alphabetical letter, followed by any alphanumeric letters, dot, dash or underscore" );
 
   39      return QObject::tr( 
"The project root name (either the project short name or project title) is already used by a layer or a group" );
 
 
   48  const QString shortName = node->serverProperties()->shortName();
 
   49  return shortName.isEmpty() ? node->name() : shortName;
 
 
   52void QgsProjectServerValidator::browseLayerTree( 
QgsLayerTreeGroup *treeGroup, QStringList &owsNames, QStringList &encodingMessages )
 
   54  const QList< QgsLayerTreeNode * > treeGroupChildren = treeGroup->
children();
 
   55  for ( 
int i = 0; i < treeGroupChildren.size(); ++i )
 
   62      browseLayerTree( treeGroupChild, owsNames, encodingMessages );
 
   75            encodingMessages << layer->
name();
 
   93  QStringList owsNames, encodingMessages;
 
   94  browseLayerTree( project->
layerTreeRoot(), owsNames, encodingMessages );
 
   96  QStringList duplicateNames, regExpMessages;
 
   98  const auto constOwsNames = owsNames;
 
   99  for ( 
const QString &name : constOwsNames )
 
  101    if ( !snRegExp.match( name ).hasMatch() )
 
  103      regExpMessages << name;
 
  106    if ( duplicateNames.contains( name ) )
 
  111    if ( owsNames.count( name ) > 1 )
 
  113      duplicateNames << name;
 
  117  if ( !duplicateNames.empty() )
 
  123  if ( !regExpMessages.empty() )
 
  129  if ( !encodingMessages.empty() )
 
  136  QString rootLayerName = project->
readEntry( QStringLiteral( 
"WMSRootName" ), QStringLiteral( 
"/" ), 
"" );
 
  137  if ( rootLayerName.isEmpty() && !project->
title().isEmpty() )
 
  139    rootLayerName = project->
title();
 
  141  if ( !rootLayerName.isEmpty() )
 
  143    if ( owsNames.count( rootLayerName ) >= 1 )
 
  149    if ( !snRegExp.match( rootLayerName ).hasMatch() )
 
 
static QRegularExpression shortNameRegularExpression()
Returns the short name regular expression for line edit validator.
 
Layer tree group node serves as a container for layers and further groups.
 
Layer tree node points to a map layer.
 
QgsMapLayer * layer() const
Returns the map layer associated with this node.
 
Base class for nodes in a layer tree.
 
@ NodeGroup
Container of other groups and layers.
 
QList< QgsLayerTreeNode * > children()
Gets list of children of the node. Children are owned by the parent.
 
NodeType nodeType() const
Find out about type of the node. It is usually shorter to use convenience functions from QgsLayerTree...
 
Base class for all map layer types.
 
static QString displayValidationError(QgsProjectServerValidator::ValidationError error)
Returns a human readable string for a given error.
 
ValidationError
Errors that might be raised by the validation process.
 
@ LayerEncoding
Encoding is not correctly set on a vector layer.
 
@ ProjectRootNameConflict
The project root name is already used by a layer or a group.
 
@ ProjectShortName
The project short name is not valid.
 
@ DuplicatedNames
A duplicated layer/group name in the layer tree.
 
@ LayerShortName
Layer/group short name is not valid.
 
static bool validate(QgsProject *project, QList< QgsProjectServerValidator::ValidationResult > &results)
Validates a project to detect problems on QGIS Server, and returns true if it's considered valid.
 
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
 
QString title() const
Returns the project's title.
 
QString readEntry(const QString &scope, const QString &key, const QString &def=QString(), bool *ok=nullptr) const
Reads a string from the specified scope and key.
 
QgsLayerTree * layerTreeRoot() const
Returns pointer to the root (invisible) node of the project's layer tree.
 
QString encoding() const
Returns the encoding which is used for accessing data.
 
Represents a vector layer which manages a vector based dataset.
 
QgsVectorDataProvider * dataProvider() FINAL
Returns the layer's data provider, it may be nullptr.
 
QString getShortName(T *node)
helper method to retrieve a layer or layer tree group short name
 
Contains the parameters describing a project validation failure.