24 : mReferencingLayer( nullptr )
25 , mReferencedLayer( nullptr )
34 if ( elem.
tagName() !=
"relation" )
51 if ( !referencingLayer )
60 if ( !referencedLayer )
73 relation.mRelationId =
id;
74 relation.mRelationName =
name;
77 for (
int i = 0; i < references.
size(); ++i )
84 relation.
addFieldPair( referencingField, referencedField );
97 elem.
setAttribute(
"referencingLayer", mReferencingLayerId );
98 elem.
setAttribute(
"referencedLayer", mReferencedLayerId );
100 Q_FOREACH (
const FieldPair& fields, mFieldPairs )
103 referenceElem.
setAttribute(
"referencingField", fields.first );
104 referenceElem.
setAttribute(
"referencedField", fields.second );
120 mRelationName =
name;
125 mReferencingLayerId =
id;
132 mReferencedLayerId =
id;
139 mFieldPairs <<
FieldPair( referencingField, referencedField );
145 mFieldPairs << fieldPair;
163 if ( referencingField.
type() == QVariant::String )
195 if ( referencedField.
type() == QVariant::String )
232 return mRelationName;
242 return mReferencingLayerId;
247 return mReferencingLayer;
252 return mReferencedLayerId;
257 return mReferencedLayer;
269 Q_FOREACH (
const FieldPair& pair, mFieldPairs )
280 Q_FOREACH (
const FieldPair& pair, mFieldPairs )
297 mReferencingLayer = qobject_cast<
QgsVectorLayer*>( mapLayers[mReferencingLayerId] );
298 mReferencedLayer = qobject_cast<
QgsVectorLayer*>( mapLayers[mReferencedLayerId] );
305 if ( !mReferencedLayer || !mReferencingLayer )
311 if ( mFieldPairs.count() < 1 )
316 Q_FOREACH (
const FieldPair& fieldPair, mFieldPairs )
319 || -1 == mReferencedLayer->fieldNameIndex( fieldPair.second ) )
Wrapper for iterator of features from vector data provider or vector layer.
QDomNodeList elementsByTagName(const QString &tagname) const
bool isValid() const
Returns the validity of this relation.
Base class for all map layer types.
QgsAttributes attributes() const
Returns the feature's attributes.
QgsAttributeList referencingFields() const
Returns a list of attributes used to form the referencing fields (foreign key) on the referencing lay...
QDomNode appendChild(const QDomNode &newChild)
QString attribute(const QString &name, const QString &defValue) const
static void warning(const QString &msg)
Goes to qWarning.
QgsFeatureIterator getFeatures(const QgsFeatureRequest &request=QgsFeatureRequest())
Query the provider for features specified in request.
void setReferencingLayer(const QString &id)
Set the referencing layer id.
QgsRelation()
Default constructor.
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 pairs which is part of this relation The first element of each pair are the field names f...
static QgsRelation createFromXML(const QDomNode &node)
Creates a relation from an XML structure.
QString join(const QString &separator) const
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
QgsMapLayer::LayerType type() const
Get the type of the layer.
QString id() const
A (project-wide) unique id for this relation.
const QgsField & at(int i) const
Get field at particular index (must be in range 0..N-1)
QgsFields fields() const
Returns the list of fields of this layer.
QDomElement toElement() const
QgsAttributeList referencedFields() const
Returns a list of attributes used to form the referenced fields (most likely primary key) on the refe...
QgsFeatureRequest & setFilterExpression(const QString &expression)
Set the filter expression.
QgsFeatureRequest getReferencedFeatureRequest(const QgsAttributes &attributes) const
Creates a request to return the feature on the referenced (parent) layer which is referenced by the p...
Defines a relation between matching fields of the two involved tables of a relation.
void setAttribute(const QString &name, const QString &value)
void setRelationName(const QString &name)
Set a name for this relation.
This class wraps a request for features to a vector layer (or directly its vector data provider)...
Encapsulate a field in an attribute table or data source.
QgsFeatureRequest getRelatedFeaturesRequest(const QgsFeature &feature) const
Creates a request to return all the features on the referencing (child) layer which have a foreign ke...
void setReferencedLayer(const QString &id)
Set the referenced layer id.
QList< FieldPair > fieldPairs() const
Returns the field pairs which form this relation The first element of each pair are the field names f...
QgsVectorLayer * referencedLayer() const
Access the referenced (parent) layer.
QgsFeatureIterator getRelatedFeatures(const QgsFeature &feature) const
Creates an iterator which returns all the features on the referencing (child) layer which have a fore...
QString referencingLayerId() const
Access the referencing (child) layer's id This is the layer which has the field(s) which point to ano...
const T & at(int i) const
QgsVectorLayer * referencingLayer() const
Access the referencing (child) layer This is the layer which has the field(s) which point to another ...
int indexFromName(const QString &name) const
Look up field's index from name. Returns -1 on error.
static QgsMapLayerRegistry * instance()
Returns the instance pointer, creating the object on the first call.
void setRelationId(const QString &id)
Set a name for this relation.
QString translate(const char *context, const char *sourceText, const char *disambiguation, Encoding encoding)
QString referencedField() const
Get the name of the referenced field.
const QMap< QString, QgsMapLayer * > & mapLayers()
Retrieve the mapLayers collection (mainly intended for use by projection)
QDomElement createElement(const QString &tagName)
bool nextFeature(QgsFeature &f)
QgsFeature getReferencedFeature(const QgsFeature &feature) const
Creates a request to return the feature on the referenced (parent) layer which is referenced by the p...
Represents a vector layer which manages a vector based data sets.
QVariant::Type type() const
Gets variant type of the field as it will be retrieved from data source.
QVariant attribute(const QString &name) const
Lookup attribute value from attribute name.
QString referencedLayerId() const
Access the referenced (parent) layer's id.
QString referencingField() const
Get the name of the referencing field.
QString arg(qlonglong a, int fieldWidth, int base, const QChar &fillChar) const
int fieldNameIndex(const QString &fieldName) const
Returns the index of a field name or -1 if the field does not exist.
QString name() const
Returns a human readable name for this relation.
void updateRelationStatus()
Updates the validity status of this relation.
QDomNode at(int index) const