Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgslayermetadatavalidator.h 3 : : --------------------------- 4 : : begin : April 2017 5 : : copyright : (C) 2017 by Nyall Dawson 6 : : email : nyall dot dawson at gmail dot com 7 : : ***************************************************************************/ 8 : : 9 : : /*************************************************************************** 10 : : * * 11 : : * This program is free software; you can redistribute it and/or modify * 12 : : * it under the terms of the GNU General Public License as published by * 13 : : * the Free Software Foundation; either version 2 of the License, or * 14 : : * (at your option) any later version. * 15 : : * * 16 : : ***************************************************************************/ 17 : : 18 : : #ifndef QGSLAYERMETADATAVALIDATOR_H 19 : : #define QGSLAYERMETADATAVALIDATOR_H 20 : : 21 : : #include "qgis_sip.h" 22 : : #include "qgis_core.h" 23 : : #include <QString> 24 : : #include <QVariant> 25 : : 26 : : class QgsAbstractMetadataBase; 27 : : class QgsLayerMetadata; 28 : : 29 : : /** 30 : : * \ingroup core 31 : : * \class QgsAbstractMetadataBaseValidator 32 : : * \brief Abstract base class for metadata validators. 33 : : * \since QGIS 3.0 34 : : */ 35 : : 36 : : class CORE_EXPORT QgsAbstractMetadataBaseValidator 37 : : { 38 : : 39 : : public: 40 : : 41 : : /** 42 : : * \ingroup core 43 : : * \brief Contains the parameters describing a metadata validation failure. 44 : : * \since QGIS 3.0 45 : : */ 46 : 0 : class ValidationResult 47 : : { 48 : : 49 : : public: 50 : : 51 : : /** 52 : : * Constructor for ValidationResult. 53 : : */ 54 : 0 : ValidationResult( const QString §ion, const QString ¬e, const QVariant &identifier = QVariant() ) 55 : 0 : : section( section ) 56 : 0 : , note( note ) 57 : 0 : , mIdentifier( identifier ) 58 : 0 : {} 59 : : 60 : : //! Metadata section which failed the validation 61 : : QString section; 62 : : 63 : : // TODO QGIS 4.0 - fix this 64 : : 65 : : #ifdef SIP_RUN 66 : : SIP_PROPERTY( name = identifier, get = _identifier, set = _setIdentifier ) 67 : : #endif 68 : : 69 : : /** 70 : : * Returns the optional identifier for the failed metadata item. 71 : : * For instance, in list type metadata elements this 72 : : * will be set to the list index of the failed metadata 73 : : * item. 74 : : */ 75 : : QVariant _identifier() const { return mIdentifier; } 76 : : 77 : : /** 78 : : * Sets the optional \a identifier for the failed metadata item. 79 : : * For instance, in list type metadata elements this 80 : : * will be set to the list index of the failed metadata 81 : : * item. 82 : : */ 83 : : void _setIdentifier( QVariant identifier ) { mIdentifier = identifier; } 84 : : 85 : : //! The reason behind the validation failure. 86 : : QString note; 87 : : 88 : : private: 89 : : 90 : : QVariant mIdentifier; 91 : : }; 92 : : 93 : 0 : virtual ~QgsAbstractMetadataBaseValidator() = default; 94 : : 95 : : /** 96 : : * Validates a \a metadata object, and returns TRUE if the 97 : : * metadata is considered valid. 98 : : * If validation fails, the \a results list will be filled with a list of 99 : : * items describing why the validation failed and what needs to be rectified 100 : : * to fix the metadata. 101 : : */ 102 : : virtual bool validate( const QgsAbstractMetadataBase *metadata, QList< QgsAbstractMetadataBaseValidator::ValidationResult > &results SIP_OUT ) const = 0; 103 : : 104 : : }; 105 : : 106 : : /** 107 : : * \ingroup core 108 : : * \class QgsNativeMetadataBaseValidator 109 : : * \brief A validator for the native base QGIS metadata schema definition. 110 : : * \since QGIS 3.2 111 : : */ 112 : : 113 : 0 : class CORE_EXPORT QgsNativeMetadataBaseValidator : public QgsAbstractMetadataBaseValidator 114 : : { 115 : : 116 : : public: 117 : : 118 : : /** 119 : : * Constructor for QgsNativeMetadataBaseValidator. 120 : : */ 121 : : QgsNativeMetadataBaseValidator() = default; 122 : : 123 : : bool validate( const QgsAbstractMetadataBase *metadata, QList< QgsAbstractMetadataBaseValidator::ValidationResult > &results SIP_OUT ) const override; 124 : : 125 : : }; 126 : : 127 : : 128 : : /** 129 : : * \ingroup core 130 : : * \class QgsNativeMetadataValidator 131 : : * \brief A validator for the native QGIS layer metadata schema definition. 132 : : * \since QGIS 3.0 133 : : */ 134 : : 135 : 0 : class CORE_EXPORT QgsNativeMetadataValidator : public QgsNativeMetadataBaseValidator 136 : : { 137 : : 138 : : public: 139 : : 140 : : /** 141 : : * Constructor for QgsNativeMetadataValidator. 142 : : */ 143 : : QgsNativeMetadataValidator() = default; 144 : : 145 : : bool validate( const QgsAbstractMetadataBase *metadata, QList< QgsAbstractMetadataBaseValidator::ValidationResult > &results SIP_OUT ) const override; 146 : : 147 : : }; 148 : : 149 : : /** 150 : : * \ingroup core 151 : : * \class QgsNativeProjectMetadataValidator 152 : : * \brief A validator for the native QGIS project metadata schema definition. 153 : : * \since QGIS 3.2 154 : : */ 155 : : 156 : 0 : class CORE_EXPORT QgsNativeProjectMetadataValidator : public QgsNativeMetadataBaseValidator 157 : : { 158 : : 159 : : public: 160 : : 161 : : /** 162 : : * Constructor for QgsNativeProjectMetadataValidator. 163 : : */ 164 : : QgsNativeProjectMetadataValidator() = default; 165 : : 166 : : bool validate( const QgsAbstractMetadataBase *metadata, QList< QgsAbstractMetadataBaseValidator::ValidationResult > &results SIP_OUT ) const override; 167 : : 168 : : }; 169 : : 170 : : #endif // QGSLAYERMETADATAVALIDATOR_H