QGIS API Documentation 3.99.0-Master (26c88405ac0)
Loading...
Searching...
No Matches
qgspolymorphicrelation.h
Go to the documentation of this file.
1/***************************************************************************
2 qgspolymorphicrelation.h
3 --------------------------------------
4 Date : December 2020
5 Copyright : (C) 2020 Ivan Ivanov
6 Email : ivan at opengis dot ch
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16#ifndef QGSPOLYMORPHICRELATION_H
17#define QGSPOLYMORPHICRELATION_H
18
19#include "qgis_core.h"
20#include "qgis_sip.h"
21#include "qgsfields.h"
22#include "qgsreadwritecontext.h"
23#include "qgsrelation.h"
24#include "qgsrelationcontext.h"
25
26#include <QDomNode>
27#include <QList>
28#include <QPair>
29
31class QgsFeature;
33class QgsAttributes;
34class QgsVectorLayer;
35class QgsPolymorphicRelationPrivate;
37
51class CORE_EXPORT QgsPolymorphicRelation
52{
53 Q_GADGET
54
55 Q_PROPERTY( QString id READ id WRITE setId )
57 Q_PROPERTY( QString referencedLayerField READ referencedLayerField )
59 Q_PROPERTY( QString name READ name WRITE setName )
60 Q_PROPERTY( bool isValid READ isValid )
61
62 public:
63
69
74
82
88 QgsPolymorphicRelation &operator=( const QgsPolymorphicRelation &other );
90
100 static QgsPolymorphicRelation createFromXml( const QDomNode &node, QgsReadWriteContext &context, const QgsRelationContext &relationContext = QgsRelationContext() );
101
108 void writeXml( QDomNode &node, QDomDocument &doc ) const;
109
113 void setId( const QString &id );
114
118 void setName( const QString &name );
119
123 void setReferencingLayer( const QString &id );
124
133 void addFieldPair( const QString &referencingField, const QString &referencedField );
134
143 void addFieldPair( const QgsRelation::FieldPair &fieldPair ) SIP_SKIP;
144
152 QString name() const;
153
159 QString id() const;
160
164 void generateId();
165
172 QString referencingLayerId() const;
173
181
189#ifndef SIP_RUN
190 QList< QgsRelation::FieldPair > fieldPairs() const;
191#else
192 QMap< QString, QString > fieldPairs() const;
193 % MethodCode
194 const QList< QgsRelation::FieldPair > &pairs = sipCpp->fieldPairs();
195 sipRes = new QMap< QString, QString >();
196 for ( const QgsRelation::FieldPair &pair : pairs )
197 {
198 sipRes->insert( pair.first, pair.second );
199 }
200 % End
201#endif
202
209 QgsAttributeList referencedFields( const QString &layerId ) const;
210
217 QgsAttributeList referencingFields() const;
218
225 bool isValid() const;
226
233 bool hasEqualDefinition( const QgsPolymorphicRelation &other ) const;
234
239 void updateRelationStatus();
240
244 void setReferencedLayerField( const QString &referencedLayerField );
245
249 QString referencedLayerField() const;
250
254 void setReferencedLayerExpression( const QString &expression );
255
259 QString referencedLayerExpression() const;
260
264 void setReferencedLayerIds( const QStringList &childRelationIds );
265
269 QStringList referencedLayerIds() const;
270
274 QList<QgsRelation> generateRelations() const;
275
279 QString layerRepresentation( const QgsVectorLayer *layer ) const;
280
284 Qgis::RelationshipStrength strength() const;
285
289 void setRelationStrength( Qgis::RelationshipStrength relationStrength );
290
291 private:
292 friend class QgsRelationManager;
293
295 QString upgradeGeneratedRelationId( const QString &oldRelationId ) const;
296
297 QExplicitlySharedDataPointer<QgsPolymorphicRelationPrivate> d;
298
299 QgsRelationContext mContext;
300
301};
302
303// Register QgsPolymorphicRelation for usage with QVariant
305
306#endif // QGSPOLYMORPHICRELATION_H
RelationshipStrength
Relationship strength.
Definition qgis.h:4405
A vector of attributes.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
Wrapper for iterator of features from vector data provider or vector layer.
Wraps a request for features to a vector layer (or directly its vector data provider).
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
Definition qgsfeature.h:58
A relation where the referenced (parent) layer is calculated based on fields from the referencing (ch...
void generateId()
Generate a (project-wide) unique id for this relation.
void setReferencingLayer(const QString &id)
Set the referencing (child) layer id.
QList< QgsRelation::FieldPair > fieldPairs() const
Returns the field pairs which form this relation The first element of each pair are the field names o...
void writeXml(QDomNode &node, QDomDocument &doc) const
Writes a relation to an XML structure.
void addFieldPair(const QString &referencingField, const QString &referencedField)
Add a field pair which is part of this relation The first element of each pair are the field names of...
static QgsPolymorphicRelation createFromXml(const QDomNode &node, QgsReadWriteContext &context, const QgsRelationContext &relationContext=QgsRelationContext())
Creates a relation from an XML structure.
QString referencingLayerId() const
Access the referencing (child) layer's id This is the layer which has the field(s) which point to ano...
QgsPolymorphicRelation()
Default constructor.
void setName(const QString &name)
Set a name for this relation.
void setId(const QString &id)
Set an id for this relation.
A container for the context for various read/write operations on objects.
Context for relations.
Defines a relation between matching fields of the two involved tables of a relation.
Definition qgsrelation.h:72
Represents a relationship between two vector layers.
Definition qgsrelation.h:42
Represents a vector layer which manages a vector based dataset.
#define SIP_SKIP
Definition qgis_sip.h:134
Q_DECLARE_METATYPE(QgsDatabaseQueryLogEntry)
QList< int > QgsAttributeList
Definition qgsfield.h:28