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.
bool isValid() const
Returns the validity of this relation.
QDomNodeList elementsByTagName(const QString &tagname) const
Base class for all map layer types.
QgsMapLayer::LayerType type() const
Get the type of the layer.
QString referencedField() const
Get the name of the referenced field.
QDomNode appendChild(const QDomNode &newChild)
QString attribute(const QString &name, const QString &defValue) const
QgsFields fields() const
Returns the list of fields of this layer.
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 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...
QgsVectorLayer * referencedLayer() const
Access the referenced (parent) layer.
static QgsRelation createFromXML(const QDomNode &node)
Creates a relation from an XML structure.
QString join(const QString &separator) const
QString name() const
Returns a human readable name for this relation.
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
QString referencingLayerId() const
Access the referencing (child) layer's id This is the layer which has the field(s) which point to ano...
QgsAttributeList referencedFields() const
Returns a list of attributes used to form the referenced fields (most likely primary key) on the refe...
QgsFeatureRequest getReferencedFeatureRequest(const QgsAttributes &attributes) const
Creates a request to return the feature on the referenced (parent) layer which is referenced by the p...
QString id() const
A (project-wide) unique id for this relation.
void writeXML(QDomNode &node, QDomDocument &doc) const
Writes a relation to an XML structure.
QDomElement toElement() const
QgsFeatureRequest & setFilterExpression(const QString &expression)
Set the filter expression.
Defines a relation between matching fields of the two involved tables of a relation.
QgsFeature getReferencedFeature(const QgsFeature &feature) const
Creates a request to return the feature on the referenced (parent) layer which is referenced by the p...
QString referencingField() const
Get the name of the referencing field.
QgsAttributes attributes() const
Returns the feature's attributes.
void setAttribute(const QString &name, const QString &value)
void setRelationName(const QString &name)
Set a name for this relation.
QgsVectorLayer * referencingLayer() const
Access the referencing (child) layer This is the layer which has the field(s) which point to another ...
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...
const QgsField & at(int i) const
Get field at particular index (must be in range 0..N-1)
QString referencedLayerId() const
Access the referenced (parent) layer's id.
int indexFromName(const QString &name) const
Look up field's index from name. Returns -1 on error.
void setReferencedLayer(const QString &id)
Set the referenced layer id.
QgsAttributeList referencingFields() const
Returns a list of attributes used to form the referencing fields (foreign key) on the referencing lay...
const T & at(int i) const
static QgsMapLayerRegistry * instance()
Returns the instance pointer, creating the object on the first call.
QVariant attribute(const QString &name) const
Lookup attribute value from attribute name.
void setRelationId(const QString &id)
Set a name for this relation.
QgsFeatureIterator getRelatedFeatures(const QgsFeature &feature) const
Creates an iterator which returns all the features on the referencing (child) layer which have a fore...
QString translate(const char *context, const char *sourceText, const char *disambiguation, Encoding encoding)
const QMap< QString, QgsMapLayer * > & mapLayers()
Retrieve the mapLayers collection (mainly intended for use by projection)
QList< FieldPair > fieldPairs() const
Returns the field pairs which form this relation The first element of each pair are the field names f...
QDomElement createElement(const QString &tagName)
bool nextFeature(QgsFeature &f)
Represents a vector layer which manages a vector based data sets.
int fieldNameIndex(const QString &fieldName) const
Returns the index of a field name or -1 if the field does not exist.
QString arg(qlonglong a, int fieldWidth, int base, const QChar &fillChar) const
void updateRelationStatus()
Updates the validity status of this relation.
QDomNode at(int index) const
QVariant::Type type() const
Gets variant type of the field as it will be retrieved from data source.