26#ifndef __TERRALIB_POSTGIS_INTERNAL_TRANSACTOR_H
27#define __TERRALIB_POSTGIS_INTERNAL_TRANSACTOR_H
30#include "../dataaccess/datasource/DataSourceTransactor.h"
42 namespace dt {
class Property; }
43 namespace gm {
class Envelope;
class Geometry; }
54 class ScopedConnection;
106 std::unique_ptr<te::da::DataSet>
getDataSet(
const std::string& name,
108 bool isConnected =
false,
111 std::unique_ptr<te::da::DataSet>
getDataSet(
const std::string& name,
112 const std::string& propertyName,
116 bool isConnected =
false,
119 std::unique_ptr<te::da::DataSet>
getDataSet(
const std::string& name,
120 const std::string& propertyName,
124 bool isConnected =
false,
129 bool connected =
false,
133 std::unique_ptr<te::da::DataSet>
query(
const std::string& query,
135 bool connected =
false,
142 std::unique_ptr<te::da::PreparedQuery>
getPrepared(
const std::string& qName = std::string(
""));
150 std::string
escape(
const std::string& value);
158 boost::ptr_vector<te::dt::Property>
getProperties(
const std::string& datasetName);
160 std::unique_ptr<te::dt::Property>
getProperty(
const std::string& datasetName,
const std::string& name);
162 std::unique_ptr<te::dt::Property>
getProperty(
const std::string& datasetName, std::size_t propertyPos);
172 void dropProperty(
const std::string& datasetName,
const std::string& name);
175 const std::string& propertyName,
176 const std::string& newPropertyName);
184 std::unique_ptr<te::da::PrimaryKey>
getPrimaryKey(
const std::string& datasetName);
192 std::unique_ptr<te::da::ForeignKey>
getForeignKey(
const std::string& datasetName,
const std::string& name);
202 std::unique_ptr<te::da::UniqueKey>
getUniqueKey(
const std::string& datasetName,
const std::string& name);
210 void dropUniqueKey(
const std::string& datasetName,
const std::string& name);
212 std::unique_ptr<te::da::CheckConstraint>
getCheckConstraint(
const std::string& datasetName,
const std::string& name);
222 std::unique_ptr<te::da::Index>
getIndex(
const std::string& datasetName,
const std::string& name);
226 bool indexExists(
const std::string& datasetName,
const std::string& name);
229 const std::map<std::string, std::string>& options);
231 void dropIndex(
const std::string& datasetName,
const std::string& idxName);
233 std::unique_ptr<te::da::Sequence>
getSequence(
const std::string& name);
243 std::unique_ptr<te::gm::Envelope>
getExtent(
const std::string& datasetName,
244 const std::string& propertyName);
246 std::unique_ptr<te::gm::Envelope>
getExtent(
const std::string& datasetName,
247 std::size_t propertyPos);
258 const std::string& cloneName,
259 const std::map<std::string, std::string>& options);
265 void add(
const std::string& datasetName,
267 const std::map<std::string, std::string>& options,
268 std::size_t limit = 0,
269 bool enableProgress =
true);
273 void update(
const std::string& datasetName,
275 const std::vector<std::size_t>& properties,
277 const std::map<std::string, std::string>& options,
278 std::size_t limit = 0);
280 void update(
const std::string& datasetName,
282 const std::vector< std::set<int> >& properties,
283 const std::vector<size_t>& ids);
285 void optimize(
const std::map<std::string, std::string>& opInfo);
421 std::unique_ptr<te::dt::Property>
getProperty(
unsigned int pid,
const std::string& datasetName);
459 std::unique_ptr<te::da::DataSet>
getConstraints(
const std::string& datasetName,
char conType =
'\0');
A class that describes a check constraint.
A class that models the description of a dataset.
A dataset is the unit of information manipulated by the data access module of TerraLib.
A DataSourceTransactor can be viewed as a connection to the data source for reading/writing things in...
An abstract class for data providers like a DBMS, Web Services or a regular file.
It models a foreign key constraint for a DataSetType.
It describes an index associated to a DataSetType.
This class represents a set of unique ids created in the same context. i.e. from the same data set.
It describes a primary key (pk) constraint.
A Query is independent from the data source language/dialect.
A Select models a query to be used when retrieving data from a DataSource.
It describes a sequence (a number generator).
It describes a unique key (uk) constraint.
It models a property definition.
An Envelope defines a 2D rectangular region.
Geometry is the root class of the geometries hierarchy, it follows OGC and ISO standards.
A class that implements a connection to a PostgreSQL database.
The transactor class for the PostGIS driver.
std::unique_ptr< te::da::PrimaryKey > getPrimaryKey(const std::string &datasetName)
It retrieves the primary key of the dataset.
Connection * getConnection(const int &id=-1) const
It returns the underlying connection.
std::vector< std::string > getForeignKeyNames(const std::string &datasetName)
It gets the foreign key names of the given dataset.
void update(const std::string &datasetName, te::da::DataSet *dataset, const std::vector< std::set< int > > &properties, const std::vector< size_t > &ids)
It updates the contents of a dataset.
void optimize(const std::map< std::string, std::string > &opInfo)
For some data access drivers, this method will perform some operations to optimize the data storage.
bool m_getConstraints
Flag that defines if the method getConstraints must be called.
std::string getDataSetName(unsigned int id)
It looks for a dataset name with the given id in the PostgreSQL.
bool propertyExists(const std::string &datasetName, const std::string &name)
It checks if a property with the given name exists in the dataset.
void getConstraints(te::da::DataSetType *dt)
It gets the information about all the dataset constraints(primary, foreign and unique keys,...
bool uniqueKeyExists(const std::string &datasetName, const std::string &name)
It checks if a unique key with the given name exists in the dataset.
void dropCheckConstraint(const std::string &datasetName, const std::string &name)
It removes the check constraint from the dataset.
DataSource * m_ds
The PostGIS data source associated to this transactor.
std::string getFullName(const std::string &name)
It gets the full name of the given name including the schema name.
te::da::DataSource * getDataSource() const
It returns the parent data source of the transactor.
const int m_fetchSize
The size of cursor fetch.
void addForeignKey(const std::string &datasetName, te::da::ForeignKey *fk)
It adds a foreign key constraint to a dataset.
void getRasterInfo(const std::string &datasetName, te::rst::RasterProperty *rp)
It loads information about a given raster column.
unsigned int getGeomTypeId()
It will check in the database catalog the number that identifies the PostGIS Geometry type.
void getDatabaseInfo(std::string ¤tSchema)
It retrieves some information about the database such as the default schema used when no one is provi...
std::unique_ptr< te::gm::Envelope > getExtent(const std::string &datasetName, const std::string &propertyName)
It retrieves the bounding rectangle of the spatial property for the given dataset.
std::unique_ptr< te::da::DataSet > getDataSet(const std::string &name, te::common::TraverseType travType=te::common::FORWARDONLY, bool isConnected=false, const te::common::AccessPolicy accessPolicy=te::common::RAccess)
It gets the dataset identified by the given name. A dataset can be connected or disconnected....
std::size_t getNumberOfDataSets()
It retrieves the number of data sets available in the data source.
int m_connectionId
The connection id used by this transactor.
std::vector< std::string > getDataSetNames()
It It gets the dataset names available in the data source.
void begin()
It starts a new transaction.
void rollBack()
It aborts the transaction. Any changes will be rolled-back.
std::string getGeometryTypeName(te::gm::GeomType type)
It gets the datasource geometry type name equivalent to terralib.
std::unique_ptr< te::da::DataSet > getPropertiesInfo(const std::string &datasetName)
It gets the information about the given dataset.
std::unique_ptr< te::da::PreparedQuery > getPrepared(const std::string &qName=std::string(""))
It creates a prepared query object that may be used for query commands (select, insert,...
bool foreignKeyExists(const std::string &datasetName, const std::string &name)
It checks if a foreign key with the given name exists in the data source.
bool dataSetExists(const std::string &name)
It checks if a dataset with the given name exists in the data source.
std::unique_ptr< te::da::UniqueKey > getUniqueKey(const std::string &datasetName, const std::string &name)
It gets the unique key in the dataset with the given name.
std::unique_ptr< te::da::CheckConstraint > getCheckConstraint(const std::string &datasetName, const std::string &name)
It gets the check constraint of the dataset with the given name.
void addProperty(const std::string &datasetName, te::dt::Property *p)
It adds a new property to the dataset schema.
std::unique_ptr< te::da::BatchExecutor > getBatchExecutor()
It creates a batch command executor.
unsigned int getRasterTypeId()
It will check in the database catalog the number that identifies the PostGIS Raster type.
void getPropertyId(te::dt::Property *p)
It sets the property id from the PostgreSQL system.
std::unique_ptr< te::da::DataSet > getDataSet(const std::string &name, const std::string &propertyName, const te::gm::Geometry *g, te::gm::SpatialRelation r, te::common::TraverseType travType=te::common::FORWARDONLY, bool isConnected=false, const te::common::AccessPolicy accessPolicy=te::common::RAccess)
It gets the dataset identified by the given name using a spatial filter over the given geometric prop...
std::unique_ptr< te::da::DataSet > getConstraints(const std::string &datasetName, char conType='\0')
It gets the dataset containing information about one of the constraints(primary, foreign or u...
std::vector< std::string > getPropertyNames(const std::string &datasetName)
It gets the property names of the given dataset.
~Transactor()
The destructor will automatically release the connection to the pool.
void execute(const te::da::Query &command)
It executes the specified command using a generic query representation.
void dropPrimaryKey(const std::string &datasetName)
It removes the primary key constraint from the dataset schema.
void dropUniqueKey(const std::string &datasetName, const std::string &name)
It removes the unique key constraint from the dataset.
int m_transactionCount
Counter used to control the number of begin transaction called.
std::vector< std::string > getIndexNames(const std::string &datasetName)
It gets the index names of the given dataset.
bool primaryKeyExists(const std::string &datasetName, const std::string &name)
It checks if a primary key exists in the dataset.
std::unique_ptr< te::da::ForeignKey > getForeignKey(const std::string &datasetName, const std::string &name)
It retrieves the foreign key from the given dataset.
void update(const std::string &datasetName, te::da::DataSet *dataset, const std::vector< std::size_t > &properties, const te::da::ObjectIdSet *oids, const std::map< std::string, std::string > &options, std::size_t limit=0)
It updates the contents of a dataset for the set of data items.
void cancel()
It requests that the data source stop the processing of the current command.
int getConnectionID() const
It returns the underlying connection ID.
std::unique_ptr< te::dt::Property > getProperty(unsigned int pid, const std::string &datasetName)
It retrieves a property with the given id from the given dataset.
void getIndexes(te::da::DataSetType *dt)
It gets all the indexes of the given dataset and adds them to the dummy schema.
void addSequence(te::da::Sequence *sequence)
It creates a new sequence in the data source.
void dropSequence(const std::string &name)
It removes the sequence from the data source.
void addUniqueKey(const std::string &datasetName, te::da::UniqueKey *uk)
It adds a unique key constraint to the dataset.
void execute(const std::string &command)
It executes the specifed command in the data source native language.
std::unique_ptr< te::da::Sequence > getSequence(const std::string &name)
It gets the sequence with the given name in the data source.
void add(const std::string &datasetName, te::da::DataSet *d, const std::map< std::string, std::string > &options, std::size_t limit=0, bool enableProgress=true)
It adds data items to the dataset in the data source.
std::unique_ptr< te::dt::Property > getProperty(const std::string &datasetName, std::size_t propertyPos)
It retrieves the property lying in the given position from the dataset.
std::vector< te::da::Sequence * > getSequences()
It gets information about all the sequences in the datasource.
std::vector< std::string > getUniqueKeyNames(const std::string &datasetName)
It gets the unique key names of the given dataset.
std::vector< std::string > getSequenceNames()
It gets the sequence names available in the data source.
std::unique_ptr< te::da::DataSet > query(const std::string &query, te::common::TraverseType travType=te::common::FORWARDONLY, bool connected=false, const te::common::AccessPolicy accessPolicy=te::common::RAccess)
It executes a query that may return some data using the data source native language....
bool isInTransaction() const
It returns true if a transaction is in progress, otherwise, it returns false.
void addCheckConstraint(const std::string &datasetName, te::da::CheckConstraint *cc)
It adds a check constraint to the dataset.
void dropDataSet(const std::string &name)
It removes the dataset schema from the data source.
std::unique_ptr< te::da::DataSet > query(const te::da::Select &q, te::common::TraverseType travType=te::common::FORWARDONLY, bool connected=false, const te::common::AccessPolicy accessPolicy=te::common::RAccess)
It executes a query that may return some data using a generic query. A dataset can be connected or di...
bool indexExists(const std::string &datasetName, const std::string &name)
It checks if an index with the given name exists in the dataset.
std::size_t getNumberOfItems(const std::string &datasetName)
It retrieves the number of items of the given dataset.
void addPrimaryKey(const std::string &datasetName, te::da::PrimaryKey *pk)
It adds a primary key constraint to the dataset schema.
bool checkConstraintExists(const std::string &datasetName, const std::string &name)
It checks if a check-constraint with the given name exists in the data source.
std::vector< std::string > getCheckConstraintNames(const std::string &datasetName)
It gets the check constraint names of the given dataset.
std::size_t getNumberOfProperties(const std::string &datasetName)
It gets the number of properties of the given dataset.
unsigned int getDataSetId(const std::string &datasetName)
It looks for the dataset id in the PostgreSQL system.
std::unique_ptr< te::da::Index > getIndex(const std::string &datasetName, const std::string &name)
It gets the index with the given name from the dataset.
bool hasDataSets()
It checks if the data source has any dataset.
void addIndex(const std::string &datasetName, te::da::Index *idx, const std::map< std::string, std::string > &options)
It adds an index to the dataset.
void dropIndex(const std::string &datasetName, const std::string &idxName)
It removes the index from the dataset schema.
void changePropertyDefinition(const std::string &datasetName, const std::string &propName, te::dt::Property *newProp)
std::unique_ptr< te::da::DataSet > getDataSet(const std::string &name, const std::string &propertyName, const te::gm::Envelope *e, te::gm::SpatialRelation r, te::common::TraverseType travType=te::common::FORWARDONLY, bool isConnected=false, const te::common::AccessPolicy accessPolicy=te::common::RAccess)
It gets the dataset identified by the given name using a spatial filter over the specified property....
void commit()
It commits the transaction.
std::string escape(const std::string &value)
It escapes a string for using in commands and queries.
void getGeometryInfo(const std::string &datasetName, te::gm::GeometryProperty *gp)
It loads information about a given geometry column.
boost::int64_t getLastGeneratedId()
It returns the last id generated by an insertion command.
void dropProperty(const std::string &datasetName, const std::string &name)
It removes a property from the given dataset.
std::unique_ptr< te::dt::Property > getProperty(const std::string &datasetName, const std::string &name)
It retrieves the property with the given name from the dataset.
void renameDataSet(const std::string &name, const std::string &newName)
It renames a dataset.
bool sequenceExists(const std::string &name)
It checks if a sequence with the given name exists in the data source.
Transactor(DataSource *ds, const int &connectionId=-1)
Constructor.
void cloneDataSet(const std::string &name, const std::string &cloneName, const std::map< std::string, std::string > &options)
It clones the dataset in the data source.
void getGeometryFirstGeomType(const std::string &datasetName, te::gm::GeometryProperty *gp)
It loads geometry type getting it from first row geometry using PostGIS function.
boost::ptr_vector< te::dt::Property > getProperties(const std::string &datasetName)
It retrieves the properties of the dataset.
void remove(const std::string &datasetName, const te::da::ObjectIdSet *oids=0)
It removes all the informed items from the dataset.
std::unique_ptr< te::gm::Envelope > getExtent(const std::string &datasetName, std::size_t propertyPos)
It retrieves the bounding rectangle for the spatial property lying in the given position in the datas...
std::unique_ptr< te::da::DataSetType > getDataSetType(const std::string &name)
It gets information about the given dataset.
void dropForeignKey(const std::string &datasetName, const std::string &fkName)
It removes the foreign key constraint from the dataset schema.
void renameProperty(const std::string &datasetName, const std::string &propertyName, const std::string &newPropertyName)
It renames a property of the given dataset.
void createDataSet(te::da::DataSetType *dt, const std::map< std::string, std::string > &options)
It creates the dataset schema definition in the target data source.
TraverseType
A dataset can be traversed in two ways:
AccessPolicy
Supported data access policies (can be used as bitfield).
GeomType
Each enumerated type is compatible with a Well-known Binary (WKB) type code.
SpatialRelation
Spatial relations between geometric objects.
boost::shared_ptr< Transactor > TransactorPtr
#define TEPGISEXPORT
You can use this macro in order to export/import classes and functions from this module.
Proxy configuration file for TerraView (see terraview_config.h).
Data Source for WS OGC WMS.