Transactor.h
Go to the documentation of this file.
1 /* Copyright (C) 2008 National Institute For Space Research (INPE) - Brazil.
2 
3  This file is part of the TerraLib - a Framework for building GIS enabled applications.
4 
5  TerraLib is free software: you can redistribute it and/or modify
6  it under the terms of the GNU Lesser General Public License as published by
7  the Free Software Foundation, either version 3 of the License,
8  or (at your option) any later version.
9 
10  TerraLib is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU Lesser General Public License for more details.
14 
15  You should have received a copy of the GNU Lesser General Public License
16  along with TerraLib. See COPYING. If not, write to
17  TerraLib Team at <terralib-team@terralib.org>.
18  */
19 
20 /*!
21  \file terralib/ogr2/Transactor.h
22 
23  \brief A DataSourceTransactor can be viewed as a connection to the data source for reading/writing things into it.
24 */
25 
26 #ifndef __TERRALIB_GPKG_INTERNAL_TRANSACTOR_H
27 #define __TERRALIB_GPKG_INTERNAL_TRANSACTOR_H
28 
29 #include "../Config.h"
30 
31 #include "../../../../dataaccess/datasource/DataSourceTransactor.h"
32 
33 #include <memory.h>
34 
35 namespace te
36 {
37  namespace da { class DataSetType;}
38 
39  namespace gpkg
40  {
41  class DataSource;
42 
44  {
45  public:
46 
48 
50 
52 
53  void begin();
54 
55  void commit();
56 
57  void rollBack();
58 
59  bool isInTransaction() const;
60 
61  std::auto_ptr<te::da::DataSet> getDataSet(const std::string& name,
63  bool connected = false,
64  const te::common::AccessPolicy accessPolicy = te::common::RAccess);
65 
66  std::auto_ptr<te::da::DataSet> getDataSet(const std::string& name,
67  const std::string& propertyName,
68  const te::gm::Envelope* e,
71  bool connected = false,
72  const te::common::AccessPolicy accessPolicy = te::common::RAccess);
73 
74  std::auto_ptr<te::da::DataSet> getDataSet(const std::string& name,
75  const std::string& propertyName,
76  const te::gm::Geometry* g,
79  bool connected = false,
80  const te::common::AccessPolicy accessPolicy = te::common::RAccess);
81 
82  std::auto_ptr<te::da::DataSet> query(const te::da::Select& q,
84  bool connected = false,
85  const te::common::AccessPolicy accessPolicy = te::common::RAccess);
86 
87  std::auto_ptr<te::da::DataSet> query(const std::string& query,
89  bool connected = false,
90  const te::common::AccessPolicy accessPolicy = te::common::RAccess);
91 
92  void execute(const te::da::Query& command);
93 
94  void execute(const std::string& command);
95 
96  std::auto_ptr<te::da::PreparedQuery> getPrepared(const std::string& qName = std::string(""));
97 
98  std::auto_ptr<te::da::BatchExecutor> getBatchExecutor();
99 
100  void cancel();
101 
102  boost::int64_t getLastGeneratedId();
103 
104  std::string escape(const std::string& value);
105 
106  std::vector<std::string> getDataSetNames();
107 
108  std::size_t getNumberOfDataSets();
109 
110  std::auto_ptr<te::da::DataSetType> getDataSetType(const std::string& name);
111 
112  std::auto_ptr<te::da::DataSetTypeCapabilities> getCapabilities(const std::string& name);
113 
114  boost::ptr_vector<te::dt::Property> getProperties(const std::string& datasetName);
115 
116  std::auto_ptr<te::dt::Property> getProperty(const std::string& datasetName, const std::string& name);
117 
118  std::auto_ptr<te::dt::Property> getProperty(const std::string& datasetName, std::size_t propertyPos);
119 
120  std::vector<std::string> getPropertyNames(const std::string& datasetName);
121 
122  std::size_t getNumberOfProperties(const std::string& datasetName);
123 
124  bool propertyExists(const std::string& datasetName, const std::string& name);
125 
126  void addProperty(const std::string& datasetName, te::dt::Property* p);
127 
128  void dropProperty(const std::string& datasetName, const std::string& name);
129 
130  void renameProperty(const std::string& datasetName,
131  const std::string& propertyName,
132  const std::string& newPropertyName);
133 
134  void changePropertyDefinition(const std::string& datasetName, const std::string& propName, te::dt::Property* newProp);
135 
136  std::auto_ptr<te::da::PrimaryKey> getPrimaryKey(const std::string& datasetName);
137 
138  bool primaryKeyExists(const std::string& datasetName, const std::string& name);
139 
140  void addPrimaryKey(const std::string& datasetName, te::da::PrimaryKey* pk);
141 
142  void dropPrimaryKey(const std::string& datasetName);
143 
144  std::auto_ptr<te::da::ForeignKey> getForeignKey(const std::string& datasetName, const std::string& name);
145 
146  std::vector<std::string> getForeignKeyNames(const std::string& datasetName);
147 
148  bool foreignKeyExists(const std::string& datasetName, const std::string& name);
149 
150  void addForeignKey(const std::string& datasetName, te::da::ForeignKey* fk);
151 
152  void dropForeignKey(const std::string& datasetName, const std::string& fkName);
153 
154  std::auto_ptr<te::da::UniqueKey> getUniqueKey(const std::string& datasetName, const std::string& name);
155 
156  std::vector<std::string> getUniqueKeyNames(const std::string& datasetName);
157 
158  bool uniqueKeyExists(const std::string& datasetName, const std::string& name);
159 
160  void addUniqueKey(const std::string& datasetName, te::da::UniqueKey* uk);
161 
162  void dropUniqueKey(const std::string& datasetName, const std::string& name);
163 
164  std::auto_ptr<te::da::CheckConstraint> getCheckConstraint(const std::string& datasetName, const std::string& name);
165 
166  std::vector<std::string> getCheckConstraintNames(const std::string& datasetName);
167 
168  bool checkConstraintExists(const std::string& datasetName, const std::string& name);
169 
170  void addCheckConstraint(const std::string& datasetName, te::da::CheckConstraint* cc);
171 
172  void dropCheckConstraint(const std::string& datasetName, const std::string& name);
173 
174  std::auto_ptr<te::da::Index> getIndex(const std::string& datasetName, const std::string& name);
175 
176  std::vector<std::string> getIndexNames(const std::string& datasetName);
177 
178  bool indexExists(const std::string& datasetName, const std::string& name);
179 
180  void addIndex(const std::string& datasetName, te::da::Index* idx,
181  const std::map<std::string, std::string>& options);
182 
183  void dropIndex(const std::string& datasetName, const std::string& idxName);
184 
185  std::auto_ptr<te::da::Sequence> getSequence(const std::string& name);
186 
187  std::vector<std::string> getSequenceNames();
188 
189  bool sequenceExists(const std::string& name);
190 
191  void addSequence(te::da::Sequence* sequence);
192 
193  void dropSequence(const std::string& name);
194 
195  std::auto_ptr<te::gm::Envelope> getExtent(const std::string& datasetName,
196  const std::string& propertyName);
197 
198  std::auto_ptr<te::gm::Envelope> getExtent(const std::string& datasetName,
199  std::size_t propertyPos);
200 
201  std::size_t getNumberOfItems(const std::string& datasetName);
202 
203  bool hasDataSets();
204 
205  bool dataSetExists(const std::string& name);
206 
207  void createDataSet(te::da::DataSetType* dt, const std::map<std::string, std::string>& options);
208 
209  void cloneDataSet(const std::string& name,
210  const std::string& cloneName,
211  const std::map<std::string, std::string>& options);
212 
213  void dropDataSet(const std::string& name);
214 
215  void renameDataSet(const std::string& name, const std::string& newName);
216 
217  void add(const std::string& datasetName,
218  te::da::DataSet* d,
219  const std::map<std::string, std::string>& options,
220  std::size_t limit = 0);
221 
222  void remove(const std::string& datasetName, const te::da::ObjectIdSet* oids = 0);
223 
224  void update(const std::string& datasetName,
225  te::da::DataSet* dataset,
226  const std::vector<std::size_t>& properties,
227  const te::da::ObjectIdSet* oids,
228  const std::map<std::string, std::string>& options,
229  std::size_t limit = 0);
230 
231  virtual void update(const std::string& datasetName,
232  te::da::DataSet* dataset,
233  const std::vector< std::set<int> >& properties,
234  const std::vector<size_t>& ids);
235 
236 
237  void optimize(const std::map<std::string, std::string>& opInfo);
238 
240 
241  protected:
242 
244  long int m_fid;
245  };
246  }
247 }
248 
249 #endif //__TERRALIB_GPKG_INTERNAL_TRANSACTOR_H
te::gpkg::Transactor::getDataSet
std::auto_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 connected=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....
te::gpkg::Transactor::getSequence
std::auto_ptr< te::da::Sequence > getSequence(const std::string &name)
It gets the sequence with the given name in the data source.
te::gm::Envelope
An Envelope defines a 2D rectangular region.
Definition: Envelope.h:52
te::gpkg::Transactor::getPropertyNames
std::vector< std::string > getPropertyNames(const std::string &datasetName)
It gets the property names of the given dataset.
te::da::CheckConstraint
A class that describes a check constraint.
Definition: CheckConstraint.h:47
te::gpkg::Transactor::getUniqueKey
std::auto_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.
te::gpkg::Transactor::getIndex
std::auto_ptr< te::da::Index > getIndex(const std::string &datasetName, const std::string &name)
It gets the index with the given name from the dataset.
te
TerraLib.
Definition: AddressGeocodingOp.h:52
te::gpkg::Transactor::indexExists
bool indexExists(const std::string &datasetName, const std::string &name)
It checks if an index with the given name exists in the dataset.
te::gpkg::Transactor::query
std::auto_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....
te::gpkg::Transactor::addPrimaryKey
void addPrimaryKey(const std::string &datasetName, te::da::PrimaryKey *pk)
It adds a primary key constraint to the dataset schema.
te::gpkg::Transactor::getForeignKeyNames
std::vector< std::string > getForeignKeyNames(const std::string &datasetName)
It gets the foreign key names of the given dataset.
te::gpkg::Transactor::addIndex
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.
te::gpkg::Transactor::getDataSetNames
std::vector< std::string > getDataSetNames()
It It gets the dataset names available in the data source.
te::gpkg::Transactor::execute
void execute(const std::string &command)
It executes the specifed command in the data source native language.
te::gpkg::Transactor::execute
void execute(const te::da::Query &command)
It executes the specified command using a generic query representation.
te::gpkg::Transactor::Transactor
Transactor(DataSource *ds)
te::gpkg::Transactor::getPrepared
std::auto_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,...
te::common::RAccess
@ RAccess
Definition: Enums.h:43
te::gpkg::Transactor::getDataSet
std::auto_ptr< te::da::DataSet > getDataSet(const std::string &name, te::common::TraverseType travType=te::common::FORWARDONLY, bool connected=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....
te::da::Query
A Query is independent from the data source language/dialect.
Definition: Query.h:47
te::common::TraverseType
TraverseType
A dataset can be traversed in two ways:
Definition: Enums.h:54
te::gpkg::Transactor::dataSetExists
bool dataSetExists(const std::string &name)
It checks if a dataset with the given name exists in the data source.
te::da::Index
It describes an index associated to a DataSetType.
Definition: Index.h:53
te::gpkg::Transactor::getExtent
std::auto_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.
te::gpkg::Transactor::addSequence
void addSequence(te::da::Sequence *sequence)
It creates a new sequence in the data source.
te::gpkg::Transactor::rollBack
void rollBack()
It aborts the transaction. Any changes will be rolled-back.
te::gpkg::Transactor::getBatchExecutor
std::auto_ptr< te::da::BatchExecutor > getBatchExecutor()
It creates a batch command executor.
te::gpkg::Transactor::getCheckConstraintNames
std::vector< std::string > getCheckConstraintNames(const std::string &datasetName)
It gets the check constraint names of the given dataset.
te::gpkg::Transactor::escape
std::string escape(const std::string &value)
It escapes a string for using in commands and queries.
te::gpkg::Transactor::getLastGeneratedId
boost::int64_t getLastGeneratedId()
It returns the last id generated by an insertion command.
te::gpkg::Transactor::~Transactor
~Transactor()
te::gpkg::Transactor::m_fid
long int m_fid
Definition: Transactor.h:244
te::gpkg::Transactor::query
std::auto_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...
te::gpkg::Transactor::getDataSetType
std::auto_ptr< te::da::DataSetType > getDataSetType(const std::string &name)
It gets information about the given dataset.
te::gpkg::Transactor::dropForeignKey
void dropForeignKey(const std::string &datasetName, const std::string &fkName)
It removes the foreign key constraint from the dataset schema.
te::gpkg::Transactor::getDataSet
std::auto_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 connected=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...
te::gpkg::Transactor::foreignKeyExists
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.
te::gpkg::Transactor::getNumberOfItems
std::size_t getNumberOfItems(const std::string &datasetName)
It retrieves the number of items of the given dataset.
te::gpkg::Transactor::addProperty
void addProperty(const std::string &datasetName, te::dt::Property *p)
It adds a new property to the dataset schema.
te::gpkg::Transactor::hasDataSets
bool hasDataSets()
It checks if the data source has any dataset.
te::gpkg::Transactor::getNumberOfDataSets
std::size_t getNumberOfDataSets()
It retrieves the number of data sets available in the data source.
te::gpkg::Transactor::getCapabilities
std::auto_ptr< te::da::DataSetTypeCapabilities > getCapabilities(const std::string &name)
It gets capabilities about a data set.
te::gpkg::Transactor::cloneDataSet
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.
te::gpkg::Transactor::remove
void remove(const std::string &datasetName, const te::da::ObjectIdSet *oids=0)
It removes all the informed items from the dataset.
te::gpkg::Transactor::optimize
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.
te::gpkg::Transactor::primaryKeyExists
bool primaryKeyExists(const std::string &datasetName, const std::string &name)
It checks if a primary key exists in the dataset.
te::gpkg::Transactor::add
void add(const std::string &datasetName, te::da::DataSet *d, const std::map< std::string, std::string > &options, std::size_t limit=0)
te::gpkg::Transactor::checkConstraintExists
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.
te::gpkg::Transactor
Definition: Transactor.h:44
te::da::DataSourceTransactor
A DataSourceTransactor can be viewed as a connection to the data source for reading/writing things in...
Definition: DataSourceTransactor.h:89
te::gpkg::Transactor::commit
void commit()
It commits the transaction.
te::gpkg::Transactor::getProperties
boost::ptr_vector< te::dt::Property > getProperties(const std::string &datasetName)
It retrieves the properties of the dataset.
te::da::ForeignKey
It models a foreign key constraint for a DataSetType.
Definition: ForeignKey.h:49
te::gm::SpatialRelation
SpatialRelation
Spatial relations between geometric objects.
Definition: Enums.h:128
te::gpkg::Transactor::renameProperty
void renameProperty(const std::string &datasetName, const std::string &propertyName, const std::string &newPropertyName)
It renames a property of the given dataset.
te::gpkg::Transactor::getCheckConstraint
std::auto_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.
te::gpkg::Transactor::dropDataSet
void dropDataSet(const std::string &name)
It removes the dataset schema from the data source.
te::gpkg::Transactor::isInTransaction
bool isInTransaction() const
It returns true if a transaction is in progress, otherwise, it returns false.
te::gpkg::Transactor::addForeignKey
void addForeignKey(const std::string &datasetName, te::da::ForeignKey *fk)
It adds a foreign key constraint to a dataset.
te::gpkg::Transactor::getForeignKey
std::auto_ptr< te::da::ForeignKey > getForeignKey(const std::string &datasetName, const std::string &name)
It retrieves the foreign key from the given dataset.
te::gpkg::Transactor::getNumberOfProperties
std::size_t getNumberOfProperties(const std::string &datasetName)
It gets the number of properties of the given dataset.
te::gpkg::Transactor::getEncoding
te::core::EncodingType getEncoding()
te::gpkg::Transactor::dropProperty
void dropProperty(const std::string &datasetName, const std::string &name)
It removes a property from the given dataset.
te::gpkg::Transactor::getSequenceNames
std::vector< std::string > getSequenceNames()
It gets the sequence names available in the data source.
te::gpkg::Transactor::getProperty
std::auto_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.
te::gpkg::Transactor::dropPrimaryKey
void dropPrimaryKey(const std::string &datasetName)
It removes the primary key constraint from the dataset schema.
te::gpkg::Transactor::propertyExists
bool propertyExists(const std::string &datasetName, const std::string &name)
It checks if a property with the given name exists in the dataset.
te::gpkg::Transactor::update
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.
te::gpkg::Transactor::getDataSource
te::da::DataSource * getDataSource() const
It returns the parent data source of the transactor.
te::gpkg::Transactor::getProperty
std::auto_ptr< te::dt::Property > getProperty(const std::string &datasetName, const std::string &name)
It retrieves the property with the given name from the dataset.
te::gpkg::Transactor::begin
void begin()
It starts a new transaction.
te::gpkg::Transactor::uniqueKeyExists
bool uniqueKeyExists(const std::string &datasetName, const std::string &name)
It checks if a unique key with the given name exists in the dataset.
te::gpkg::Transactor::createDataSet
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.
te::gpkg::Transactor::getUniqueKeyNames
std::vector< std::string > getUniqueKeyNames(const std::string &datasetName)
It gets the unique key names of the given dataset.
te::gpkg::Transactor::addUniqueKey
void addUniqueKey(const std::string &datasetName, te::da::UniqueKey *uk)
It adds a unique key constraint to the dataset.
te::da::Select
A Select models a query to be used when retrieving data from a DataSource.
Definition: Select.h:67
te::da::UniqueKey
It describes a unique key (uk) constraint.
Definition: UniqueKey.h:50
te::da::DataSource
An abstract class for data providers like a DBMS, Web Services or a regular file.
Definition: DataSource.h:120
te::gpkg::Transactor::getIndexNames
std::vector< std::string > getIndexNames(const std::string &datasetName)
It gets the index names of the given dataset.
te::gpkg::Transactor::dropIndex
void dropIndex(const std::string &datasetName, const std::string &idxName)
It removes the index from the dataset schema.
te::gpkg::Transactor::cancel
void cancel()
It requests that the data source stop the processing of the current command.
te::dt::Property
It models a property definition.
Definition: Property.h:60
te::da::DataSet
A dataset is the unit of information manipulated by the data access module of TerraLib.
Definition: DataSet.h:114
TERRAMOBILEPLUGINSDLLEXPORT
#define TERRAMOBILEPLUGINSDLLEXPORT
Definition: Config.h:89
te::da::Sequence
It describes a sequence (a number generator).
Definition: Sequence.h:57
te::core::EncodingType
EncodingType
Supported character encodings.
Definition: CharEncoding.h:51
te::gpkg::Transactor::addCheckConstraint
void addCheckConstraint(const std::string &datasetName, te::da::CheckConstraint *cc)
It adds a check constraint to the dataset.
te::gpkg::Transactor::changePropertyDefinition
void changePropertyDefinition(const std::string &datasetName, const std::string &propName, te::dt::Property *newProp)
te::gpkg::Transactor::renameDataSet
void renameDataSet(const std::string &name, const std::string &newName)
It renames a dataset.
te::gpkg::Transactor::getPrimaryKey
std::auto_ptr< te::da::PrimaryKey > getPrimaryKey(const std::string &datasetName)
It retrieves the primary key of the dataset.
te::gpkg::Transactor::dropCheckConstraint
void dropCheckConstraint(const std::string &datasetName, const std::string &name)
It removes the check constraint from the dataset.
te::da::PrimaryKey
It describes a primary key (pk) constraint.
Definition: PrimaryKey.h:49
te::da::DataSetType
A class that models the description of a dataset.
Definition: DataSetType.h:73
te::gpkg::Transactor::sequenceExists
bool sequenceExists(const std::string &name)
It checks if a sequence with the given name exists in the data source.
te::gpkg::DataSource
The OGR data source provider.
Definition: DataSource.h:50
te::gm::Geometry
Geometry is the root class of the geometries hierarchy, it follows OGC and ISO standards.
Definition: Geometry.h:78
te::gpkg::Transactor::dropSequence
void dropSequence(const std::string &name)
It removes the sequence from the data source.
te::gpkg::Transactor::getExtent
std::auto_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...
memory.h
This file contains include headers for the memory data source of TerraLib.
te::common::AccessPolicy
AccessPolicy
Supported data access policies (can be used as bitfield).
Definition: Enums.h:41
te::da::ObjectIdSet
This class represents a set of unique ids created in the same context. i.e. from the same data set.
Definition: ObjectIdSet.h:56
te::gpkg::Transactor::m_ogrDs
DataSource * m_ogrDs
Definition: Transactor.h:243
te::gpkg::Transactor::dropUniqueKey
void dropUniqueKey(const std::string &datasetName, const std::string &name)
It removes the unique key constraint from the dataset.
te::gpkg::Transactor::update
virtual 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.
te::common::FORWARDONLY
@ FORWARDONLY
Definition: Enums.h:55