|
QGIS API Documentation 3.99.0-Master (752b475928d)
|
Manages joined fields for a vector layer. More...
#include <qgsvectorlayerjoinbuffer.h>

Signals | |
| void | joinedFieldsChanged () |
| Emitted whenever the list of joined fields changes (e.g. | |
Public Member Functions | |
| QgsVectorLayerJoinBuffer (QgsVectorLayer *layer=nullptr) | |
| virtual bool | addFeatures (QgsFeatureIterator &iterator, QgsFeatureSink::Flags flags=QgsFeatureSink::Flags()) |
| Adds all features from the specified iterator to the sink. | |
| bool | addFeatures (QgsFeatureList &features, QgsFeatureSink::Flags flags=QgsFeatureSink::Flags()) override |
| Adds a list of features in joined layers. | |
| bool | addJoin (const QgsVectorLayerJoinInfo &joinInfo) |
| Joins another vector layer to this layer. | |
| bool | changeAttributeValue (QgsFeatureId fid, int field, const QVariant &newValue, const QVariant &oldValue=QVariant()) |
| Changes attribute value in joined layers. | |
| bool | changeAttributeValues (QgsFeatureId fid, const QgsAttributeMap &newValues, const QgsAttributeMap &oldValues=QgsAttributeMap()) |
| Changes attributes' values in joined layers. | |
| QgsVectorLayerJoinBuffer * | clone () const |
| Create a copy of the join buffer. | |
| bool | containsJoins () const |
| Quick way to test if there is any join at all. | |
| void | createJoinCaches () |
| Calls cacheJoinLayer() for all vector joins. | |
| bool | deleteFeature (QgsFeatureId fid, QgsVectorLayer::DeleteContext *context=nullptr) const |
| Deletes a feature from joined layers. | |
| bool | deleteFeatures (const QgsFeatureIds &fids, QgsVectorLayer::DeleteContext *context=nullptr) const |
| Deletes a list of features from joined layers. | |
| bool | isAuxiliaryJoin (const QgsVectorLayerJoinInfo &info) const |
Returns true if the join information is about auxiliary layer, false otherwise. | |
| QgsFeature | joinedFeatureOf (const QgsVectorLayerJoinInfo *info, const QgsFeature &feature) const |
| Returns the joined feature corresponding to the feature. | |
| int | joinedFieldsOffset (const QgsVectorLayerJoinInfo *info, const QgsFields &fields) |
| Find out what is the first index of the join within fields. | |
| const QgsVectorLayerJoinInfo * | joinForFieldIndex (int index, const QgsFields &fields, int &sourceFieldIndex) const |
| Finds the vector join for a layer field index. | |
| QList< const QgsVectorLayerJoinInfo * > | joinsWhereFieldIsId (const QgsField &field) const |
| Returns joins where the field of a target layer is considered as an id. | |
| void | readXml (const QDomNode &layer_node) |
| Reads joins from project file. | |
| bool | removeJoin (const QString &joinLayerId) |
| Removes a vector layer join. | |
| void | resolveReferences (QgsProject *project) |
| Resolves layer IDs of joined layers using given project's available layers. | |
| QgsFeature | targetedFeatureOf (const QgsVectorLayerJoinInfo *info, const QgsFeature &feature) const |
| Returns the targeted feature corresponding to the joined feature. | |
| void | updateFields (QgsFields &fields) |
| Updates field map with joined attributes. | |
| const QgsVectorJoinList & | vectorJoins () const |
| void | writeXml (QDomNode &layer_node, QDomDocument &document) const |
| Saves mVectorJoins to xml under the layer node. | |
| Public Member Functions inherited from QgsFeatureSink | |
| virtual | ~QgsFeatureSink ()=default |
| virtual bool | addFeature (QgsFeature &feature, QgsFeatureSink::Flags flags=QgsFeatureSink::Flags()) |
| Adds a single feature to the sink. | |
| virtual void | finalize () |
| Finalizes the sink, flushing any buffered features to the destination. | |
| virtual bool | flushBuffer () |
| Flushes any internal buffer which may exist in the sink, causing any buffered features to be added to the sink's destination. | |
| virtual QString | lastError () const |
| Returns the most recent error encountered by the sink, e.g. | |
Static Public Member Functions | |
| static QVector< int > | joinSubsetIndices (const QgsFields &joinLayerFields, const QStringList &joinFieldsSubset) |
| Returns a vector of indices for use in join based on field names from the join layer's fields. | |
| static QVector< int > | joinSubsetIndices (QgsVectorLayer *joinLayer, const QStringList &joinFieldsSubset) |
| Returns a vector of indices for use in join based on field names from the layer. | |
Additional Inherited Members | |
| Public Types inherited from QgsFeatureSink | |
| enum | Flag { FastInsert = 1 << 1 , RollBackOnErrors = 1 << 2 } |
| Flags controlling how features are added to a sink. More... | |
| typedef QFlags< Flag > | Flags |
| enum | SinkFlag { RegeneratePrimaryKey = 1 << 1 } |
| Flags that can be set on a QgsFeatureSink. More... | |
| typedef QFlags< SinkFlag > | SinkFlags |
Manages joined fields for a vector layer.
Definition at line 36 of file qgsvectorlayerjoinbuffer.h.
| QgsVectorLayerJoinBuffer::QgsVectorLayerJoinBuffer | ( | QgsVectorLayer * | layer = nullptr | ) |
Definition at line 30 of file qgsvectorlayerjoinbuffer.cpp.
|
virtual |
Adds all features from the specified iterator to the sink.
Feature addition behavior is controlled by the specified flags.
true if all features were added successfully, or false if any feature could not be added Reimplemented from QgsFeatureSink.
Definition at line 108 of file qgsfeaturesink.cpp.
|
overridevirtual |
Adds a list of features in joined layers.
Features given in parameter are those added in target layer. If a corresponding joined feature yet exists in a joined layer, then this feature is just updated. Note that if a corresponding joined feature has only empty fields, then it's not created nor added.
| features | The list of features added in the target layer |
| flags | Unused parameter |
false if an error happened, true otherwise Implements QgsFeatureSink.
Definition at line 564 of file qgsvectorlayerjoinbuffer.cpp.
| bool QgsVectorLayerJoinBuffer::addJoin | ( | const QgsVectorLayerJoinInfo & | joinInfo | ) |
Joins another vector layer to this layer.
| joinInfo | join object containing join layer id, target and source field |
Definition at line 66 of file qgsvectorlayerjoinbuffer.cpp.
| bool QgsVectorLayerJoinBuffer::changeAttributeValue | ( | QgsFeatureId | fid, |
| int | field, | ||
| const QVariant & | newValue, | ||
| const QVariant & | oldValue = QVariant() ) |
Changes attribute value in joined layers.
The feature id given in parameter is the one added in target layer. If the corresponding joined feature does not exist in a joined layer, then it's automatically created if its fields are not empty.
| fid | The feature id |
| field | The field to update |
| newValue | The new value of the attribute |
| oldValue | The old value of the attribute |
false if an error happened, true otherwise Definition at line 651 of file qgsvectorlayerjoinbuffer.cpp.
| bool QgsVectorLayerJoinBuffer::changeAttributeValues | ( | QgsFeatureId | fid, |
| const QgsAttributeMap & | newValues, | ||
| const QgsAttributeMap & | oldValues = QgsAttributeMap() ) |
Changes attributes' values in joined layers.
The feature id given in parameter is the one added in target layer. If the corresponding joined feature does not exist in a joined layer, then it's automatically created if its fields are not empty.
| fid | The feature id |
| newValues | The new values for attributes |
| oldValues | The old values for attributes |
false if an error happened, true otherwise Definition at line 679 of file qgsvectorlayerjoinbuffer.cpp.
| QgsVectorLayerJoinBuffer * QgsVectorLayerJoinBuffer::clone | ( | ) | const |
Create a copy of the join buffer.
Definition at line 506 of file qgsvectorlayerjoinbuffer.cpp.
|
inline |
Quick way to test if there is any join at all.
Definition at line 79 of file qgsvectorlayerjoinbuffer.h.
| void QgsVectorLayerJoinBuffer::createJoinCaches | ( | ) |
Calls cacheJoinLayer() for all vector joins.
Definition at line 287 of file qgsvectorlayerjoinbuffer.cpp.
| bool QgsVectorLayerJoinBuffer::deleteFeature | ( | QgsFeatureId | fid, |
| QgsVectorLayer::DeleteContext * | context = nullptr ) const |
Deletes a feature from joined layers.
The feature id given in parameter is the one coming from the target layer.
| fid | The feature id from the target layer to delete |
| context | The chain of features which will be deleted for feedback and to avoid infinite recursions. Can be nullptr. |
false if an error happened, true otherwise Definition at line 698 of file qgsvectorlayerjoinbuffer.cpp.
| bool QgsVectorLayerJoinBuffer::deleteFeatures | ( | const QgsFeatureIds & | fids, |
| QgsVectorLayer::DeleteContext * | context = nullptr ) const |
Deletes a list of features from joined layers.
Feature ids given in a parameter are those coming from the target layer.
| fids | Feature ids from the target layer to delete |
| context | The chain of features who will be deleted for feedback and to avoid infinite recursions. Can be nullptr. |
false if an error happened, true otherwise Definition at line 703 of file qgsvectorlayerjoinbuffer.cpp.
| bool QgsVectorLayerJoinBuffer::isAuxiliaryJoin | ( | const QgsVectorLayerJoinInfo & | info | ) | const |
Returns true if the join information is about auxiliary layer, false otherwise.
| info | The join information |
true if the join information is about auxiliary layer, false otherwise Definition at line 726 of file qgsvectorlayerjoinbuffer.cpp.
| QgsFeature QgsVectorLayerJoinBuffer::joinedFeatureOf | ( | const QgsVectorLayerJoinInfo * | info, |
| const QgsFeature & | feature ) const |
Returns the joined feature corresponding to the feature.
| info | the vector join information |
| feature | the feature of the target layer |
Definition at line 462 of file qgsvectorlayerjoinbuffer.cpp.
|
signal |
Emitted whenever the list of joined fields changes (e.g.
added join or joined layer's fields change)
| int QgsVectorLayerJoinBuffer::joinedFieldsOffset | ( | const QgsVectorLayerJoinInfo * | info, |
| const QgsFields & | fields ) |
Find out what is the first index of the join within fields.
Returns -1 if join is not present
Definition at line 410 of file qgsvectorlayerjoinbuffer.cpp.
| const QgsVectorLayerJoinInfo * QgsVectorLayerJoinBuffer::joinForFieldIndex | ( | int | index, |
| const QgsFields & | fields, | ||
| int & | sourceFieldIndex ) const |
Finds the vector join for a layer field index.
| index | this layers attribute index |
| fields | fields of the vector layer (including joined fields) |
| sourceFieldIndex | Output: field's index in source layer |
Definition at line 430 of file qgsvectorlayerjoinbuffer.cpp.
|
static |
Returns a vector of indices for use in join based on field names from the join layer's fields.
Definition at line 217 of file qgsvectorlayerjoinbuffer.cpp.
|
static |
Returns a vector of indices for use in join based on field names from the layer.
Definition at line 212 of file qgsvectorlayerjoinbuffer.cpp.
| QList< const QgsVectorLayerJoinInfo * > QgsVectorLayerJoinBuffer::joinsWhereFieldIsId | ( | const QgsField & | field | ) | const |
Returns joins where the field of a target layer is considered as an id.
| field | the field of a target layer |
Definition at line 445 of file qgsvectorlayerjoinbuffer.cpp.
| void QgsVectorLayerJoinBuffer::readXml | ( | const QDomNode & | layer_node | ) |
Reads joins from project file.
Does not resolve layer IDs to layers - call resolveReferences() afterwards
Definition at line 348 of file qgsvectorlayerjoinbuffer.cpp.
| bool QgsVectorLayerJoinBuffer::removeJoin | ( | const QString & | joinLayerId | ) |
Removes a vector layer join.
true if join was found and successfully removed Definition at line 109 of file qgsvectorlayerjoinbuffer.cpp.
| void QgsVectorLayerJoinBuffer::resolveReferences | ( | QgsProject * | project | ) |
Resolves layer IDs of joined layers using given project's available layers.
Definition at line 390 of file qgsvectorlayerjoinbuffer.cpp.
| QgsFeature QgsVectorLayerJoinBuffer::targetedFeatureOf | ( | const QgsVectorLayerJoinInfo * | info, |
| const QgsFeature & | feature ) const |
Returns the targeted feature corresponding to the joined feature.
| info | the vector join information |
| feature | the feature of the joined layer |
Definition at line 486 of file qgsvectorlayerjoinbuffer.cpp.
| void QgsVectorLayerJoinBuffer::updateFields | ( | QgsFields & | fields | ) |
Updates field map with joined attributes.
| fields | map to append joined attributes |
Definition at line 237 of file qgsvectorlayerjoinbuffer.cpp.
|
inline |
Definition at line 81 of file qgsvectorlayerjoinbuffer.h.
| void QgsVectorLayerJoinBuffer::writeXml | ( | QDomNode & | layer_node, |
| QDomDocument & | document ) const |
Saves mVectorJoins to xml under the layer node.
Definition at line 299 of file qgsvectorlayerjoinbuffer.cpp.