QGIS API Documentation 4.1.0-Master (31622b25bb0)
Loading...
Searching...
No Matches
qgsauxiliarystorage.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsauxiliarystorage.h - description
3 -------------------
4 begin : Aug 28, 2017
5 copyright : (C) 2017 by Paul Blottiere
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#ifndef QGSAUXILIARYSTORAGE_H
19#define QGSAUXILIARYSTORAGE_H
20
21#include "qgis_core.h"
22#include "qgscallout.h"
23#include "qgsdatasourceuri.h"
24#include "qgsdiagramrenderer.h"
25#include "qgspallabeling.h"
26#include "qgsproperty.h"
27#include "qgssqliteutils.h"
28#include "qgssymbollayer.h"
29#include "qgsvectorlayer.h"
31
32#include <QString>
33
34using namespace Qt::StringLiterals;
35
36class QgsProject;
37
64class CORE_EXPORT QgsAuxiliaryLayer : public QgsVectorLayer
65{
66 Q_OBJECT
67
68 public:
77 QgsAuxiliaryLayer( const QString &pkField, const QString &filename, const QString &table, QgsVectorLayer *vlayer );
78
79 QgsAuxiliaryLayer( const QgsAuxiliaryLayer &rhs ) = delete;
80
82
83#ifdef SIP_RUN
84 // clang-format off
85 SIP_PYOBJECT __repr__();
86 % MethodCode
87 QString str = u"<QgsAuxiliaryLayer: '%1'>"_s.arg( sipCpp->name() );
88 sipRes = PyUnicode_FromString( str.toUtf8().constData() );
89 % End
90// clang-format on
91#endif
92
93#ifndef SIP_RUN
95#endif
96
105
113
120 bool clear();
121
126
135 bool exists( const QgsPropertyDefinition &definition ) const;
136
146 bool addAuxiliaryField( const QgsPropertyDefinition &definition );
147
152
158 bool save();
159
168 bool deleteAttribute( int attr ) override;
169
176 bool isHiddenProperty( int index ) const;
177
186 int indexOfPropertyDefinition( const QgsPropertyDefinition &definition ) const;
187
196 int propertyFromIndex( int index ) const;
197
204
215 static int createProperty( QgsPalLayerSettings::Property property, QgsVectorLayer *vlayer, bool overwriteExisting = true );
216
227 static int createProperty( QgsDiagramLayerSettings::Property property, QgsVectorLayer *vlayer, bool overwriteExisting = true );
228
240 static int createProperty( QgsCallout::Property property, QgsVectorLayer *vlayer, bool overwriteExisting = true );
241
254 static int createProperty( QgsSymbolLayer::Property propertyKey, QgsVectorLayer *layer, QgsSymbolLayer *symbolLayer, bool overwriteExisting = true );
255
262
268 static QgsField createAuxiliaryField( const QgsField &field );
269
276 static QString nameFromProperty( const QgsPropertyDefinition &def, bool joined = false );
277
284
285 private:
286 QgsVectorLayerJoinInfo mJoinInfo;
287 QString mFileName;
288 QString mTable;
289 QgsVectorLayer *mLayer = nullptr;
290};
291
292
301class CORE_EXPORT QgsAuxiliaryStorage
302{
303 public:
315 QgsAuxiliaryStorage( const QgsProject &project, bool copy = true );
316
338 QgsAuxiliaryStorage( const QString &filename = QString(), bool copy = true );
339
341
347 bool isValid() const;
348
352 QString fileName() const;
353
358 QString currentFileName() const;
359
366 QString errorString() const;
367
373 bool saveAs( const QString &filename );
374
382 bool saveAs( const QgsProject &project );
383
389 bool save() const;
390
402
410 static bool deleteTable( const QgsDataSourceUri &uri );
411
420 static bool duplicateTable( const QgsDataSourceUri &uri, const QString &newTable );
421
425 static QString extension();
426
434 static bool exists( const QgsProject &project );
435
436 private:
437 sqlite3_database_unique_ptr open( const QString &filename = QString() );
438 sqlite3_database_unique_ptr open( const QgsProject &project );
439
440 void initTmpFileName();
441
442 static QString filenameForProject( const QgsProject &project );
443 static sqlite3_database_unique_ptr createDB( const QString &filename );
444 static sqlite3_database_unique_ptr openDB( const QString &filename );
445 static bool tableExists( const QString &table, sqlite3 *handler );
446 static bool createTable( const QString &type, const QString &table, sqlite3 *handler, QString &errorMsg );
447
448 static bool exec( const QString &sql, sqlite3 *handler );
449 static QString debugMsg( const QString &sql, sqlite3 *handler );
450
451 static QgsDataSourceUri parseOgrUri( const QgsDataSourceUri &uri );
452
453 bool mValid = false;
454 QString mFileName; // original filename
455 QString mTmpFileName; // temporary filename used in copy mode
456 bool mCopy = false;
457 mutable QString mErrorString;
458};
459
460#endif
Allows managing the auxiliary storage for a vector layer.
static QString nameFromProperty(const QgsPropertyDefinition &def, bool joined=false)
Returns the name of the auxiliary field for a property definition.
static QgsField createAuxiliaryField(const QgsPropertyDefinition &definition)
Creates a new auxiliary field from a property definition.
static QgsPropertyDefinition propertyDefinitionFromField(const QgsField &field)
Returns the property definition from an auxiliary field.
bool clear()
Deletes all features from the layer.
bool addAuxiliaryField(const QgsPropertyDefinition &definition)
Adds an auxiliary field for the given property.
bool isHiddenProperty(int index) const
Returns true if the underlying field has to be hidden from editing tools like attribute table,...
QgsVectorLayer * toSpatialLayer() const
An auxiliary layer is not spatial.
bool deleteAttribute(int attr) override
Removes attribute from the layer and commits changes.
QgsFields auxiliaryFields() const
Returns a list of all auxiliary fields currently managed by the layer.
QgsAuxiliaryLayer(const QString &pkField, const QString &filename, const QString &table, QgsVectorLayer *vlayer)
Constructor.
bool save()
Commits changes and starts editing then.
int propertyFromIndex(int index) const
Returns the underlying property key for the field index.
static int createProperty(QgsDiagramLayerSettings::Property property, QgsVectorLayer *vlayer, bool overwriteExisting=true)
Creates if necessary a new auxiliary field for a diagram's property and activates this property in se...
QgsVectorLayerJoinInfo joinInfo() const
Returns information to use for joining with primary key and so on.
QgsPropertyDefinition propertyDefinitionFromIndex(int index) const
Returns the property definition for the underlying field index.
bool exists(const QgsPropertyDefinition &definition) const
Returns true if the property is stored in the layer already, false otherwise.
static int createProperty(QgsCallout::Property property, QgsVectorLayer *vlayer, bool overwriteExisting=true)
Creates if necessary a new auxiliary field for a callout's property and activates this property in se...
static int createProperty(QgsPalLayerSettings::Property property, QgsVectorLayer *vlayer, bool overwriteExisting=true)
Creates if necessary a new auxiliary field for a PAL property and activates this property in settings...
QgsAuxiliaryLayer & operator=(QgsAuxiliaryLayer const &rhs)=delete
QgsAuxiliaryLayer * clone(QgsVectorLayer *layer) const
Returns a new instance equivalent to this one.
static QgsField createAuxiliaryField(const QgsField &field)
Creates a new auxiliary field from a field.
static int createProperty(QgsSymbolLayer::Property propertyKey, QgsVectorLayer *layer, QgsSymbolLayer *symbolLayer, bool overwriteExisting=true)
Creates if necessary a new auxiliary field for a symbol layer 's property and activates this property...
int indexOfPropertyDefinition(const QgsPropertyDefinition &definition) const
Returns the index of the auxiliary field for a specific property definition.
QgsAuxiliaryLayer(const QgsAuxiliaryLayer &rhs)=delete
QgsAuxiliaryStorage(const QString &filename=QString(), bool copy=true)
Constructor.
static QString extension()
Returns the extension used for auxiliary databases.
QString errorString() const
Returns the underlying error string describing potential errors happening in saveAs().
bool save() const
Saves the current database.
static bool exists(const QgsProject &project)
Returns true if the auxiliary database yet exists for a project, false otherwise.
QgsAuxiliaryLayer * createAuxiliaryLayer(const QgsField &field, QgsVectorLayer *layer) const
Creates an auxiliary layer for a vector layer.
virtual ~QgsAuxiliaryStorage()
bool saveAs(const QString &filename)
Saves the current database to a new path.
bool isValid() const
Returns the status of the auxiliary storage currently defined.
QString currentFileName() const
Returns the path of the current database used.
QgsAuxiliaryStorage(const QgsProject &project, bool copy=true)
Constructor.
QString fileName() const
Returns the target filename of the database.
static bool deleteTable(const QgsDataSourceUri &uri)
Removes a table from the auxiliary storage.
bool saveAs(const QgsProject &project)
Saves the current database to a new path for a specific project.
static bool duplicateTable(const QgsDataSourceUri &uri, const QString &newTable)
Duplicates a table and its content.
Property
Data definable properties.
Definition qgscallout.h:85
Stores the component parts of a data source URI (e.g.
Property
Data definable properties.
Encapsulate a field in an attribute table or data source.
Definition qgsfield.h:56
Container of fields for a vector layer.
Definition qgsfields.h:46
Property
Data definable properties.
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
Definition qgsproject.h:114
Definition for a property.
Definition qgsproperty.h:47
Abstract base class for symbol layers.
Property
Data definable properties.
Defines left outer join from our vector layer to some other vector layer.
Represents a vector layer which manages a vector based dataset.
QgsVectorLayer(const QString &path=QString(), const QString &baseName=QString(), const QString &providerLib="ogr", const QgsVectorLayer::LayerOptions &options=QgsVectorLayer::LayerOptions())
Constructor - creates a vector layer.
QgsVectorLayer * clone() const override
Returns a new instance equivalent to this one.
Unique pointer for sqlite3 databases, which automatically closes the database when the pointer goes o...
#define SIP_FACTORY
Definition qgis_sip.h:83
struct sqlite3 sqlite3