Loading...
Searching...
No Matches
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
35namespace 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,
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,
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,
81
82 std::auto_ptr<te::da::DataSet> query(const te::da::Select& q,
84 bool connected = false,
86
87 std::auto_ptr<te::da::DataSet> query(const std::string& query,
89 bool connected = false,
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
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
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,
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
A class that describes a check constraint.
A class that models the description of a dataset.
Definition: DataSetType.h:73
A dataset is the unit of information manipulated by the data access module of TerraLib.
Definition: DataSet.h:114
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.
Definition: DataSource.h:120
It models a foreign key constraint for a DataSetType.
Definition: ForeignKey.h:49
It describes an index associated to a DataSetType.
Definition: Index.h:53
This class represents a set of unique ids created in the same context. i.e. from the same data set.
Definition: ObjectIdSet.h:56
It describes a primary key (pk) constraint.
Definition: PrimaryKey.h:49
A Query is independent from the data source language/dialect.
Definition: Query.h:47
A Select models a query to be used when retrieving data from a DataSource.
Definition: Select.h:67
It describes a sequence (a number generator).
Definition: Sequence.h:57
It describes a unique key (uk) constraint.
Definition: UniqueKey.h:50
It models a property definition.
Definition: Property.h:60
An Envelope defines a 2D rectangular region.
Definition: Envelope.h:52
Geometry is the root class of the geometries hierarchy, it follows OGC and ISO standards.
Definition: Geometry.h:78
The OGR data source provider.
Definition: DataSource.h:50
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.
DataSource * m_ogrDs
Definition: Transactor.h:243
void addSequence(te::da::Sequence *sequence)
It creates a new sequence in the data source.
void dropForeignKey(const std::string &datasetName, const std::string &fkName)
It removes the foreign key constraint from the dataset schema.
void renameDataSet(const std::string &name, const std::string &newName)
It renames a dataset.
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.
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::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.
void dropUniqueKey(const std::string &datasetName, const std::string &name)
It removes the unique key constraint from the dataset.
te::core::EncodingType getEncoding()
std::size_t getNumberOfDataSets()
It retrieves the number of data sets available in the data source.
void addUniqueKey(const std::string &datasetName, te::da::UniqueKey *uk)
It adds a unique key constraint to the dataset.
void changePropertyDefinition(const std::string &datasetName, const std::string &propName, te::dt::Property *newProp)
std::size_t getNumberOfItems(const std::string &datasetName)
It retrieves the number of items of the given dataset.
std::vector< std::string > getSequenceNames()
It gets the sequence names available in the data source.
void addProperty(const std::string &datasetName, te::dt::Property *p)
It adds a new property to the dataset schema.
std::auto_ptr< te::da::Sequence > getSequence(const std::string &name)
It gets the sequence with the given name in the data source.
void execute(const std::string &command)
It executes the specifed command in the data source native language.
void dropIndex(const std::string &datasetName, const std::string &idxName)
It removes the index from the dataset schema.
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.
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,...
std::vector< std::string > getDataSetNames()
It It gets the dataset names available in the data source.
std::vector< std::string > getForeignKeyNames(const std::string &datasetName)
It gets the foreign key names of the given dataset.
std::auto_ptr< te::da::ForeignKey > getForeignKey(const std::string &datasetName, const std::string &name)
It retrieves the foreign key from the given dataset.
std::vector< std::string > getPropertyNames(const std::string &datasetName)
It gets the property names of the given dataset.
void addForeignKey(const std::string &datasetName, te::da::ForeignKey *fk)
It adds a foreign key constraint to a dataset.
void addCheckConstraint(const std::string &datasetName, te::da::CheckConstraint *cc)
It adds a check constraint to the dataset.
bool dataSetExists(const std::string &name)
It checks if a dataset with the given name exists in the data source.
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.
std::vector< std::string > getIndexNames(const std::string &datasetName)
It gets the index names of the given dataset.
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.
void dropProperty(const std::string &datasetName, const std::string &name)
It removes a property from the given dataset.
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....
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.
std::vector< std::string > getUniqueKeyNames(const std::string &datasetName)
It gets the unique key names of the given dataset.
std::auto_ptr< te::da::BatchExecutor > getBatchExecutor()
It creates a batch command executor.
void execute(const te::da::Query &command)
It executes the specified command using a generic query representation.
bool uniqueKeyExists(const std::string &datasetName, const std::string &name)
It checks if a unique key with the given name exists in the dataset.
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.
void remove(const std::string &datasetName, const te::da::ObjectIdSet *oids=0)
It removes all the informed items from the dataset.
std::auto_ptr< te::da::DataSetType > getDataSetType(const std::string &name)
It gets information about the given dataset.
bool primaryKeyExists(const std::string &datasetName, const std::string &name)
It checks if a primary key exists in the dataset.
void commit()
It commits the transaction.
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.
void add(const std::string &datasetName, te::da::DataSet *d, const std::map< std::string, std::string > &options, std::size_t limit=0)
void dropDataSet(const std::string &name)
It removes the dataset schema from the data source.
Transactor(DataSource *ds)
boost::int64_t getLastGeneratedId()
It returns the last id generated by an insertion command.
boost::ptr_vector< te::dt::Property > getProperties(const std::string &datasetName)
It retrieves the properties of the dataset.
std::auto_ptr< te::da::PrimaryKey > getPrimaryKey(const std::string &datasetName)
It retrieves the primary key of the dataset.
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.
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...
bool indexExists(const std::string &datasetName, const std::string &name)
It checks if an index with the given name exists in the dataset.
std::vector< std::string > getCheckConstraintNames(const std::string &datasetName)
It gets the check constraint names of the given dataset.
void renameProperty(const std::string &datasetName, const std::string &propertyName, const std::string &newPropertyName)
It renames a property of the given dataset.
void begin()
It starts a new transaction.
bool isInTransaction() const
It returns true if a transaction is in progress, otherwise, it returns false.
bool sequenceExists(const std::string &name)
It checks if a sequence with the given name exists in the data source.
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...
std::size_t getNumberOfProperties(const std::string &datasetName)
It gets the number of properties of the given dataset.
void rollBack()
It aborts the transaction. Any changes will be rolled-back.
void dropSequence(const std::string &name)
It removes the sequence from the data source.
te::da::DataSource * getDataSource() const
It returns the parent data source of the transactor.
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.
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.
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.
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....
void addPrimaryKey(const std::string &datasetName, te::da::PrimaryKey *pk)
It adds a primary key constraint to the dataset schema.
bool propertyExists(const std::string &datasetName, const std::string &name)
It checks if a property 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.
bool hasDataSets()
It checks if the data source has any dataset.
void cancel()
It requests that the data source stop the processing of the current command.
std::auto_ptr< te::da::DataSetTypeCapabilities > getCapabilities(const std::string &name)
It gets capabilities about a data set.
std::string escape(const std::string &value)
It escapes a string for using in commands and queries.
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....
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...
void dropPrimaryKey(const std::string &datasetName)
It removes the primary key constraint from the dataset schema.
This file contains include headers for the memory data source of TerraLib.
TraverseType
A dataset can be traversed in two ways:
Definition: Enums.h:54
@ FORWARDONLY
Definition: Enums.h:55
AccessPolicy
Supported data access policies (can be used as bitfield).
Definition: Enums.h:41
@ RAccess
Definition: Enums.h:43
EncodingType
Supported character encodings.
Definition: CharEncoding.h:51
SpatialRelation
Spatial relations between geometric objects.
Definition: Enums.h:128
TerraLib.
#define TERRAMOBILEPLUGINSDLLEXPORT
Definition: Config.h:89