27 #include "../common/Globals.h" 
   28 #include "../common/Translator.h" 
   29 #include "../dataaccess/dataset/PrimaryKey.h" 
   30 #include "../dataaccess/datasource/ScopedTransaction.h" 
   31 #include "../dataaccess/query/Select.h" 
   32 #include "../dataaccess/utils/Utils.h" 
   33 #include "../geometry/Envelope.h" 
   34 #include "../geometry/GeometryProperty.h" 
   35 #include "../memory/DataSet.h" 
   48 #include <boost/algorithm/string/case_conv.hpp> 
   49 #include <boost/format.hpp> 
   50 #include <boost/lexical_cast.hpp> 
   71     m_isInTransaction(false)
 
   79   int ret = sqlite3_prepare_v2(m_db, query.c_str(), -1, &stmt, 0);
 
   84       sqlite3_finalize(stmt);
 
   86     throw te::common::Exception((boost::format(
TR_COMMON(
"Could not excute the given query due to the following error: %1%.")) % sqlite3_errmsg(m_db)).str());
 
  105   return m_pImpl->m_parent;
 
  110   execute(
"BEGIN TRANSACTION");
 
  111   m_pImpl->m_isInTransaction = 
true;
 
  116   m_pImpl->m_isInTransaction = 
false;
 
  117   execute(
"COMMIT TRANSACTION");
 
  122   m_pImpl->m_isInTransaction = 
false;
 
  126   sqlite3_exec(m_pImpl->m_db, 
"ROLLBACK TRANSACTION", 0, 0, &errmsg);
 
  131   return m_pImpl->m_isInTransaction;
 
  134 std::auto_ptr<te::da::DataSet>
 
  140   std::string sql(
"SELECT * FROM ");
 
  143   return query(sql, travType, connected, accessPolicy);
 
  146 std::auto_ptr<te::da::DataSet>
 
  148                                              const std::string& propertyName,
 
  158   if(propertyName.empty())
 
  162   std::string sql (
"SELECT * FROM ");
 
  164               sql += 
" WHERE ROWID IN (SELECT rowid FROM SpatialIndex WHERE f_table_name = '";
 
  165               sql += boost::to_lower_copy(name) + 
"' AND f_geometry_column = '";
 
  166               sql += boost::to_lower_copy(propertyName) + 
"' AND ";
 
  167               sql += 
"search_frame = BuildMbr(" + boost::lexical_cast<std::string>(e->
m_llx);
 
  168               sql += 
", " + boost::lexical_cast<std::string>(e->
m_lly);
 
  169               sql += 
", " + boost::lexical_cast<std::string>(e->
m_urx);
 
  170               sql += 
", " + boost::lexical_cast<std::string>(e->
m_ury);
 
  173   return query(sql, travType, connected, accessPolicy);
 
  176 std::auto_ptr<te::da::DataSet>
 
  178                                              const std::string& propertyName,
 
  188   if(propertyName.empty())
 
  194   std::string sql (
"SELECT * FROM ");
 
  198               sql += 
" AND ROWID IN (SELECT rowid FROM SpatialIndex WHERE f_table_name = '";
 
  199               sql += boost::to_lower_copy(name) + 
"' AND f_geometry_column = '";
 
  200               sql += boost::to_lower_copy(propertyName) + 
"' AND ";
 
  201               sql += 
"search_frame = BuildMbr(" + boost::lexical_cast<std::string>(e->
m_llx);
 
  202               sql += 
", " + boost::lexical_cast<std::string>(e->
m_lly);
 
  203               sql += 
", " + boost::lexical_cast<std::string>(e->
m_urx);
 
  204               sql += 
", " + boost::lexical_cast<std::string>(e->
m_ury);
 
  211   unsigned char* ewkb = 
new unsigned char[ewkbSize];
 
  215   int retval = sqlite3_bind_blob(stmt, 1, ewkb, ewkbSize, SQLITE_TRANSIENT);
 
  219   if(retval != SQLITE_OK)
 
  221     sqlite3_finalize(stmt);
 
  226   std::auto_ptr<te::da::DataSet> litedataset(
new FwDataSet(stmt, 
this));
 
  231   std::auto_ptr<te::da::DataSet> fatdataset(
new te::mem::DataSet(*litedataset, 
true));
 
  236 std::auto_ptr<te::da::DataSet>
 
  244   SQLVisitor visitor(*(m_pImpl->m_parent->getDialect()), sql);
 
  247   return query(sql, travType, connected);
 
  250 std::auto_ptr<te::da::DataSet>
 
  258   std::auto_ptr<te::da::DataSet> litedataset(
new FwDataSet(result, 
this));
 
  263   std::auto_ptr<te::da::DataSet> fatdataset(
new te::mem::DataSet(*litedataset, 
true));
 
  272   SQLVisitor visitor(*(m_pImpl->m_parent->getDialect()), sql);
 
  282   int rc = sqlite3_exec(m_pImpl->m_db, command.c_str(), 0, 0, &errmsg);
 
  286     boost::format msg(
TR_COMMON(
"Could not execute the SQL command due to the following error: %1%."));
 
  290     sqlite3_free(errmsg);
 
  296 std::auto_ptr<te::da::PreparedQuery>
 
  299   return std::auto_ptr<te::da::PreparedQuery>(
new PreparedQuery(
this, m_pImpl->m_db));
 
  304   return std::auto_ptr<te::da::BatchExecutor>(
new BatchExecutor(
this));
 
  309   sqlite3_interrupt(m_pImpl->m_db);
 
  332 std::vector<std::string>
 
  342   return getDataSetNames().size();
 
  345 std::auto_ptr<te::da::DataSetType>
 
  350   return std::auto_ptr<te::da::DataSetType>(cloader.
getDataSetType(name));
 
  353 boost::ptr_vector<te::dt::Property>
 
  361 std::auto_ptr<te::dt::Property>
 
  363                                               const std::string& name)
 
  367   std::auto_ptr<te::da::DataSetType> dt(cloader.
getDataSetType(datasetName));
 
  371   return std::auto_ptr<te::dt::Property>(p->clone());
 
  378   std::auto_ptr<te::da::DataSetType> dt(cloader.
getDataSetType(datasetName));
 
  382   return std::auto_ptr<te::dt::Property>(p->clone());
 
  389   std::auto_ptr<te::da::DataSetType> dt(cloader.
getDataSetType(datasetName));
 
  391   std::vector<std::string> pnames;
 
  393   for(std::size_t i = 0; i != dt->size(); ++i)
 
  394     pnames.push_back(dt->getProperty(i)->getName());
 
  403   std::auto_ptr<te::da::DataSetType> dt(cloader.
getDataSetType(datasetName));
 
  412   std::auto_ptr<te::da::DataSetType> dt(cloader.
getDataSetType(datasetName));
 
  414   return dt->getProperty(name) != 0;
 
  430     sql  = 
"SELECT AddGeometryColumn('";
 
  432     sql += boost::to_lower_copy(datasetName);
 
  434     sql += boost::to_lower_copy(p->
getName());
 
  436     sql += boost::lexical_cast<std::string>(gp->
getSRID());
 
  449     sql = 
"ALTER TABLE ";
 
  450     sql += boost::to_lower_copy(datasetName);
 
  451     sql += 
" ADD COLUMN ";
 
  452     sql += boost::to_lower_copy(p->
getName());
 
  466                                                       const std::string& propertyName,
 
  467                                                       const std::string& newPropertyName)
 
  476   std::auto_ptr<te::da::DataSetType> dt(cloader.
getDataSetType(datasetName));
 
  478   return std::auto_ptr<te::da::PrimaryKey>(
static_cast<te::da::PrimaryKey*
>(dt->getPrimaryKey()->clone()));
 
  483   std::string sql  =  
"PRAGMA table_info(";
 
  487   std::auto_ptr<te::da::DataSet> attributes(query(sql));
 
  489   while(attributes->moveNext())
 
  491     bool isPK = attributes->getInt32(5) != 0;
 
  513   std::string sql(
"PRAGMA foreign_key_list(");
 
  517   std::auto_ptr<te::da::DataSet> result(query(sql));
 
  519   int id = boost::lexical_cast<
int>(name);
 
  523   while(result->moveNext())
 
  525     if(
id != result->getInt32(0))
 
  528     std::string onUpdate = result->getString(5);
 
  529     std::string onDeletion = result->getString(6);
 
  531     fk->setOnUpdateAction(
GetAction(onUpdate));
 
  532     fk->setOnDeleteAction(
GetAction(onDeletion));
 
  549   std::string sql(
"PRAGMA foreign_key_list(");
 
  553   std::auto_ptr<te::da::DataSet> result(query(sql));
 
  557   std::vector<std::string> fkNames;
 
  559   while(result->moveNext())
 
  561     int fkid = result->getInt32(0);
 
  565       std::string fkname = boost::lexical_cast<std::string>(result->getInt32(0));
 
  567       fkNames.push_back(fkname);
 
  578   std::string sql(
"PRAGMA foreign_key_list(");
 
  582   std::auto_ptr<te::da::DataSet> result(query(sql));
 
  584   while(result->moveNext())
 
  586     if(name == boost::lexical_cast<std::string>(result->getInt32(0)))
 
  666   std::string ukname = uk->
getName();
 
  668   std::string sql =  
"CREATE UNIQUE INDEX IF NOT EXISTS ";
 
  676   for(std::size_t i = 0; i < size; ++i)
 
  691   std::string ukname = name;
 
  693   std::size_t pos = ukname.find(
".");
 
  695   if(pos != std::string::npos)
 
  696     ukname = ukname.substr(pos + 1);
 
  698   std::string sql = 
"DROP INDEX IF EXISTS ";
 
  799                                                 const std::map<std::string, std::string>& options)
 
  802   std::string idxname = idx->
getName();
 
  813     sql += 
"INDEX IF NOT EXISTS ";
 
  821     for(std::size_t i = 0; i < size; ++i)
 
  836     sql  = 
"SELECT CreateSpatialIndex('";
 
  901                                                                             const std::string& propertyName)
 
  905   return std::auto_ptr<te::gm::Envelope>(cloader.
getExtent(datasetName, propertyName));
 
  909                                                                             std::size_t propertyPos)
 
  913   std::auto_ptr<te::da::DataSetType> dt(cloader.
getDataSetType(datasetName));
 
  915   return std::auto_ptr<te::gm::Envelope>(cloader.
getExtent(datasetName, dt->getProperty(propertyPos)->getName()));
 
  936                                                      const std::map<std::string, std::string>& options)
 
  938   const std::size_t nproperties = dt->
size();
 
  943   std::string sql  = 
"CREATE TABLE ";
 
  947   for(std::size_t i = 0; i < nproperties; ++i)
 
  960     sql += 
", PRIMARY KEY(";
 
  964     for(std::size_t i = 0; i < nkeys; ++i)
 
  978   for(std::size_t i = 0; i < nfks; ++i)
 
  982     fk->
setName(dt->
getName() + 
"." + boost::lexical_cast<std::string>(i));
 
  987     sql += 
"FOREIGN KEY(";
 
  991     for(std::size_t j = 0; j < nkeys; ++j)
 
  999     sql += 
") REFERENCES ";
 
 1005     for(std::size_t j = 0; j < nkeys; ++j)
 
 1021   for(std::size_t i = 0; i < nproperties; ++i)
 
 1035     sql  = 
"SELECT RecoverGeometryColumn('";
 
 1040     sql += boost::lexical_cast<std::string>(gp->
getSRID());
 
 1070                                                     const std::string& cloneName,
 
 1071                                                     const std::map<std::string, std::string>& options)
 
 1088                                            const std::map<std::string, std::string>& options,
 
 1092     limit = std::string::npos;
 
 1094   std::string sql  = 
"INSERT INTO ";
 
 1102   std::auto_ptr<PreparedQuery> pq(
new PreparedQuery(
this, m_pImpl->m_db));
 
 1106   std::size_t nProcessedRows = 0;
 
 1128                                               const std::vector<std::size_t>& properties,
 
 1130                                               const std::map<std::string, std::string>& options,
 
std::auto_ptr< te::da::PrimaryKey > getPrimaryKey(const std::string &datasetName)
It retrieves the primary key of the dataset. 
 
void addUniqueKey(const std::string &datasetName, te::da::UniqueKey *uk)
It adds a unique key constraint to the dataset. 
 
void dropSequence(const std::string &name)
It removes the sequence from the data source. 
 
std::auto_ptr< te::da::DataSetType > getDataSetType(const std::string &name)
It gets information about the given dataset. 
 
bool isRequired() const 
It returns true if the attribute is required, otherwise it returns false. 
 
Implementation of the BatchExecutor class for the TerraLib SQLite Data Access driver. 
 
It describes an index associated to a DataSetType. 
 
void dropProperty(const std::string &datasetName, const std::string &name)
It removes a property from the given dataset. 
 
void rollBack()
It aborts the transaction. Any changes will be rolled-back. 
 
This class is designed to declare objects to be thrown as exceptions by TerraLib. ...
 
This class represents a set of unique ids created in the same context. i.e. from the same data set...
 
Property * getProperty(std::size_t i) const 
It returns the i-th property. 
 
std::size_t size() const 
It returns the number of properties of the CompositeProperty. 
 
An implementation of DataSourceTransactor class for the TerraLib SQLite Data Access Driver...
 
std::auto_ptr< te::da::BatchExecutor > getBatchExecutor()
It creates a batch command executor. 
 
A visitor for building an SQL statement using SQLite dialect. 
 
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. 
 
Implementation of a random-access dataset class for the TerraLib In-Memory Data Access driver...
 
std::auto_ptr< te::da::Sequence > getSequence(const std::string &name)
It gets the sequence with the given name in the data source. 
 
A Select models a query to be used when retrieving data from a DataSource. 
 
void Convert2SpatiaLiteGeom(const te::gm::GeomType t, std::string &geomType, std::string &dimension)
 
int getSRID() const 
It returns the spatial reference system identifier associated to this property. 
 
A class that implements a prepared query for the TerraLib SQLite Data Access Driver. 
 
An utility class to coordinate transactions. 
 
Impl(DataSource *parent, sqlite3 *db)
 
te::da::FKActionType GetAction(const std::string &action)
 
Implements the DataSource class for the SQLite Data Access Driver. 
 
void dropDataSet(const std::string &name)
It removes the dataset schema from the data source. 
 
std::vector< std::string > getPropertyNames(const std::string &datasetName)
It gets the property names of the given dataset. 
 
ForeignKey * getForeignKey(std::size_t i) const 
It returns the i-th foreign key associated to the dataset type. 
 
virtual bool moveNext()=0
It moves the internal pointer to the next item of the collection. 
 
It describes a primary key (pk) constraint. 
 
void dropUniqueKey(const std::string &datasetName, const std::string &name)
It removes the unique key constraint from the dataset. 
 
std::vector< std::string > getUniqueKeyNames(const std::string &datasetName)
It gets the unique key names of the given dataset. 
 
const std::string & getName() const 
It returns the property name. 
 
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...
 
It describes a sequence (a number generator). 
 
void commit()
It commits the transaction. 
 
const std::vector< te::dt::Property * > & getProperties() const 
It returns the properties that take part of the index. 
 
te::da::DataSetType * getDataSetType(const std::string &datasetName)
 
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. 
 
DataSourceTransactor()
Default constructor that can be called by subclasses. 
 
A visitor for building an SQL statement using SQLite dialect. 
 
SpatialRelation
Spatial relations between geometric objects. 
 
It models a foreign key constraint for a DataSetType. 
 
const std::vector< te::dt::Property * > & getProperties() const 
It returns the properties that take part of the primary key. 
 
void dropCheckConstraint(const std::string &datasetName, const std::string &name)
It removes the check constraint from the dataset. 
 
bool isPropertyNameValid(const std::string &propertyName)
It checks if the given property name is valid. 
 
std::vector< std::string > getSequenceNames()
It gets the sequence names available in the data source. 
 
std::vector< std::string > getCheckConstraintNames(const std::string &datasetName)
It gets the check constraint names of the given dataset. 
 
void addProperty(const std::string &datasetName, te::dt::Property *p)
It adds a new property to the dataset schema. 
 
AccessPolicy
Supported data access policies (can be used as bitfield). 
 
void begin()
It starts a new transaction. 
 
bool isInTransaction() const 
It returns true if a transaction is in progress, otherwise, it returns false. 
 
virtual void setName(const std::string &name)
It sets the constraint name. 
 
bool primaryKeyExists(const std::string &datasetName, const std::string &name)
It checks if a primary key exists in the dataset. 
 
std::size_t getNumberOfDataSets()
It retrieves the number of data sets available in the data source. 
 
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. 
 
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. 
 
void dropForeignKey(const std::string &datasetName, const std::string &fkName)
It removes the foreign key constraint from the dataset schema. 
 
GeomType getGeometryType() const 
It returns the geometry subtype allowed for the property. 
 
A class that helps to determine the size of a SpatiaLite geometry. 
 
std::size_t getNumberOfForeignKeys() const 
It returns the number of foreign keys defined for the dataset type. 
 
double m_lly
Lower left corner y-coordinate. 
 
static const MachineByteOrder sm_machineByteOrder
A flag that indicates the machine byte order (Big Endian or Little Endian). 
 
sqlite3_stmt * queryLite(const std::string &query)
 
void renameProperty(const std::string &datasetName, const std::string &propertyName, const std::string &newPropertyName)
It renames a property of the given dataset. 
 
bool indexExists(const std::string &datasetName, const std::string &name)
It checks if an index with the given name exists in the dataset. 
 
Utility functions for the data access module. 
 
A Query is independent from the data source language/dialect. 
 
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::vector< std::string > getDataSetNames()
 
std::string Convert2SQLCreate(const te::dt::Property *p)
 
static std::size_t getEWKBSize(const te::gm::Geometry *g)
 
std::string GetBindableSpatialRelation(const std::string &colName, const te::gm::SpatialRelation r)
 
double m_ury
Upper right corner y-coordinate. 
 
std::vector< std::string > getIndexNames(const std::string &datasetName)
It gets the index names of the given dataset. 
 
Geometry is the root class of the geometries hierarchy, it follows OGC and ISO standards. 
 
std::vector< std::string > getDataSetNames()
It It gets the dataset names available in the data source. 
 
const std::string & getName() const 
It returns the index name. 
 
void addCheckConstraint(const std::string &datasetName, te::da::CheckConstraint *cc)
It adds a check constraint to the dataset. 
 
It describes a unique key (uk) constraint. 
 
void execute(const te::da::Query &command)
It executes the specified command using a generic query representation. 
 
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. 
 
double m_urx
Upper right corner x-coordinate. 
 
std::string escape(const std::string &value)
It escapes a string for using in commands and queries. 
 
virtual const std::string & getName() const 
It returns the constraint name. 
 
TraverseType
A dataset can be traversed in two ways: 
 
void cancel()
It requests that the data source stop the processing of the current command. 
 
#define TR_COMMON(message)
It marks a string in order to get translated. This is the mark used in the Common module of TerraLib...
 
IndexType getIndexType() const 
It gets the index type. 
 
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 remove(const std::string &datasetName, const te::da::ObjectIdSet *oids=0)
It removes all the informed items from the 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. 
 
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, update and delete) that are used repeatedly. 
 
const std::vector< te::dt::Property * > & getProperties() const 
It returns the properties that take part of the foreign key constraint. 
 
std::auto_ptr< te::da::ForeignKey > getForeignKey(const std::string &datasetName, const std::string &name)
It retrieves the foreign key from the given dataset. 
 
An abstract class for data providers like a DBMS, Web Services or a regular file. ...
 
A class that implements a prepared query for the TerraLib SQLite Data Access Driver. 
 
Implementation of a forward-only dataset for the TerraLib SQLite Data Access driver. 
 
te::da::DataSource * getDataSource() const 
It returns the parent data source of the transactor. 
 
A class that models the description of a dataset. 
 
void renameDataSet(const std::string &name, const std::string &newName)
It renames a dataset. 
 
A class that serializes a geometry to the SpatiaLite EWKB format. 
 
It models a property definition. 
 
bool isDataSetNameValid(const std::string &datasetName)
It returns true if the given string is a valid dataset name. 
 
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. A connected dataset, after its creation through the data source transactor, continues to depend on the connection given by its associated data source. Differently, a disconnected dataset, after its creation, no more depends of the connection given by the data source, and it continues to live after the connection has been released to the data source. 
 
double m_llx
Lower left corner x-coordinate. 
 
virtual ReturnType accept(VisitorType &guest) const =0
It call the visit method from the guest object. 
 
std::vector< std::string > getForeignKeyNames(const std::string &datasetName)
It gets the foreign key names of the given dataset. 
 
const Envelope * getMBR() const 
It returns the minimum bounding rectangle for the geometry in an internal representation. 
 
void addSequence(te::da::Sequence *sequence)
It creates a new sequence in the data source. 
 
int getType() const 
It returns the property data type. 
 
void addForeignKey(const std::string &datasetName, te::da::ForeignKey *fk)
It adds a foreign key constraint to a dataset. 
 
boost::ptr_vector< te::dt::Property > getProperties(const std::string &datasetName)
 
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::Index > getIndex(const std::string &datasetName, const std::string &name)
It gets the index with the given name from the dataset. 
 
std::size_t getNumberOfProperties(const std::string &datasetName)
It gets the number of properties of the given dataset. 
 
te::gm::Envelope * getExtent(const std::string &tableName, const std::string &geomColName)
 
TEDATAACCESSEXPORT std::string GetSQLValueNames(const DataSetType *dt)
 
bool propertyExists(const std::string &datasetName, const std::string &name)
It checks if a property with the given name exists in the dataset. 
 
const std::vector< te::dt::Property * > & getReferencedProperties() const 
It returns the referenced properties (on the referenced DataSetType) of this foreign key constraint...
 
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 commit()
It commits the transaction. 
 
boost::int64_t getLastGeneratedId()
It returns the last id generated by an insertion command. 
 
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. 
 
std::string GetSQLType(const te::dt::Property *p)
 
PrimaryKey * getPrimaryKey() const 
It returns the primary key associated to the dataset type. 
 
A class that describes a check constraint. 
 
An Envelope defines a 2D rectangular region. 
 
~DataSourceTransactor()
Virtual destructor. 
 
void dropIndex(const std::string &datasetName, const std::string &idxName)
It removes the index from the dataset schema. 
 
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. 
 
DataSetType * getReferencedDataSetType() const 
It returns the referenced DataSetType of this foreign key constraint. 
 
const std::vector< te::dt::Property * > & getProperties() const 
It returns the properties that form the unique key. 
 
void add(const std::string &datasetName, te::da::DataSet *d, const std::map< std::string, std::string > &options, std::size_t limit=0)
It adds data items to the dataset in the data source. 
 
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...
 
bool hasDataSets()
It checks if the data source has any dataset. 
 
A dataset is the unit of information manipulated by the data access module of TerraLib. 
 
bool sequenceExists(const std::string &name)
It checks if a sequence with the given name exists in the data source. 
 
void dropPrimaryKey(const std::string &datasetName)
It removes the primary key constraint from the dataset schema. 
 
struct sqlite3_stmt sqlite3_stmt
 
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::string GetSQLBindValues(const te::da::DataSet *dataset)
 
boost::ptr_vector< te::dt::Property > getProperties(const std::string &datasetName)
It retrieves the properties of the dataset. 
 
DataSourceCatalogLoader manages metadata information for the TerraLib SQLite Data Access Driver...