24 : mReferencingLayer( NULL )
25 , mReferencedLayer( NULL )
34 if ( elem.
tagName() !=
"relation" )
51 if ( NULL == referencingLayer )
60 if ( NULL == 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 );
118 mRelationName =
name;
123 mReferencingLayerId =
id;
130 mReferencedLayerId =
id;
137 mFieldPairs <<
FieldPair( referencingField, referencedField );
143 mFieldPairs << fieldPair;
161 if ( referencingField.
type() == QVariant::String )
193 if ( referencedField.
type() == QVariant::String )
230 return mRelationName;
240 return mReferencingLayerId;
245 return mReferencingLayer;
250 return mReferencedLayerId;
255 return mReferencedLayer;
272 mReferencingLayer = qobject_cast<
QgsVectorLayer*>( mapLayers[mReferencingLayerId] );
273 mReferencedLayer = qobject_cast<
QgsVectorLayer*>( mapLayers[mReferencedLayerId] );
277 if ( !mReferencedLayer || !mReferencingLayer )
283 if ( mFieldPairs.count() < 1 )
288 Q_FOREACH (
const FieldPair& fieldPair, mFieldPairs )
291 || -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...
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 matchin 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.
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()
QDomNode at(int index) const
QVariant::Type type() const
Gets variant type of the field as it will be retrieved from data source.