16 #ifndef QGSVECTORDATAPROVIDER_H
17 #define QGSVECTORDATAPROVIDER_H
61 DeleteFeatures = 1 << 1,
63 ChangeAttributeValues = 1 << 2,
65 AddAttributes = 1 << 3,
67 DeleteAttributes = 1 << 4,
69 SaveAsShapefile = 1 << 5,
71 CreateSpatialIndex = 1 << 6,
75 ChangeGeometries = 1 << 8,
77 SelectGeometryAtId = 1 << 9,
79 RandomSelectGeometryAtId = 1 << 10,
81 SequentialSelectGeometryAtId = 1 << 11,
82 CreateAttributeIndex = 1 << 12,
84 SetEncoding = 1 << 13,
88 const static int EditingCapabilities = AddFeatures | DeleteFeatures |
89 ChangeAttributeValues | ChangeGeometries | AddAttributes | DeleteAttributes;
105 virtual QString storageType()
const;
116 bool fetchGeometry =
true,
117 bool useIntersect =
false ) = 0;
123 virtual long updateFeatureCount();
136 virtual bool featureAtId(
int featureId,
138 bool fetchGeometry =
true,
146 virtual bool nextFeature(
QgsFeature& feature ) = 0;
159 virtual long featureCount()
const = 0;
165 virtual uint fieldCount()
const = 0;
178 virtual QString dataComment()
const;
181 virtual void rewind() = 0;
191 virtual QVariant minimumValue(
int index );
201 virtual QVariant maximumValue(
int index );
211 virtual void uniqueValues(
int index, QList<QVariant> &uniqueValues,
int limit = -1 );
218 virtual void enumValues(
int index, QStringList& enumList ) { Q_UNUSED( index ); enumList.clear(); }
239 virtual bool addAttributes(
const QList<QgsField> &attributes );
247 Q_DECL_DEPRECATED
virtual bool addAttributes(
const QMap<QString, QString> &attributes );
266 virtual QVariant defaultValue(
int fieldId );
275 virtual bool changeGeometryValues(
QgsGeometryMap & geometry_map );
281 virtual bool createSpatialIndex();
284 virtual bool createAttributeIndex(
int field );
291 virtual int capabilities()
const;
296 QString capabilitiesString()
const;
301 virtual void setEncoding(
const QString& e );
306 QString encoding()
const;
311 int fieldNameIndex(
const QString& fieldName )
const;
314 QMap<QString, int> fieldNameMap()
const;
325 void enableGeometrylessFeatures(
bool fetch );
331 bool supportedType(
const QgsField &field )
const;
335 NativeType( QString typeDesc, QString typeName, QVariant::Type type,
int minLen = 0,
int maxLen = 0,
int minPrec = 0,
int maxPrec = 0 ) :
336 mTypeDesc( typeDesc ), mTypeName( typeName ), mType( type ), mMinLen( minLen ), mMaxLen( maxLen ), mMinPrec( minPrec ), mMaxPrec( maxPrec ) {};
350 const QList< NativeType > &nativeTypes()
const;
357 Q_DECL_DEPRECATED
const QMap<QString, QVariant::Type> &supportedNativeTypes()
const;
365 static const QStringList &availableEncodings();
380 QStringList errors();
384 QVariant convertValue( QVariant::Type type, QString value );
386 void clearMinMaxCache();
387 void fillMinMaxCache();
407 void pushError( QString msg );