26 #ifndef __TERRALIB_DATAACCESS_DATASOURCE_INTERNAL_DATASOURCE_H
27 #define __TERRALIB_DATAACCESS_DATASOURCE_INTERNAL_DATASOURCE_H
30 #include "../../common/Enums.h"
31 #include "../../core/uri/URI.h"
32 #include "../../geometry/Enums.h"
33 #include "../dataset/CheckConstraint.h"
34 #include "../dataset/DataSet.h"
35 #include "../dataset/DataSetType.h"
36 #include "../dataset/ForeignKey.h"
37 #include "../dataset/Index.h"
38 #include "../dataset/PrimaryKey.h"
39 #include "../dataset/Sequence.h"
40 #include "../dataset/UniqueKey.h"
41 #include "../Config.h"
51 #include <boost/ptr_container/ptr_vector.hpp>
52 #include <boost/cstdint.hpp>
53 #include <boost/noncopyable.hpp>
54 #include <boost/shared_ptr.hpp>
71 class DataSetTypeCapabilities;
72 class DataSourceCapabilities;
73 class DataSourceTransactor;
78 class CheckConstraint;
138 const std::string& getId()
const;
145 void setId(
const std::string&
id);
168 virtual std::string getType()
const = 0;
209 virtual std::auto_ptr<DataSourceTransactor> getTransactor() = 0;
224 virtual void open() = 0;
235 virtual void close() = 0;
249 virtual bool isOpened()
const = 0;
262 virtual bool isValid()
const = 0;
284 virtual const SQLDialect* getDialect()
const = 0;
310 virtual std::auto_ptr<DataSet> getDataSet(
const std::string& name,
337 virtual std::auto_ptr<DataSet> getDataSet(
const std::string& name,
338 const std::string& propertyName,
361 virtual std::auto_ptr<DataSet> getDataSet(
const std::string& name,
362 const std::string& propertyName,
387 std::auto_ptr<te::da::DataSet> getDataSet(
const std::string& name,
414 virtual std::auto_ptr<DataSet> query(
const Select& q,
437 virtual std::auto_ptr<DataSet> query(
const std::string& query,
455 virtual void execute(
const Query& command);
466 virtual void execute(
const std::string& command);
482 virtual std::string escape(
const std::string& value);
493 virtual bool isDataSetNameValid(
const std::string& datasetName);
504 virtual bool isPropertyNameValid(
const std::string& propertyName);
523 virtual std::vector<std::string> getDataSetNames();
534 virtual std::size_t getNumberOfDataSets();
557 virtual std::auto_ptr<te::da::DataSetType> getDataSetType(
const std::string& name);
566 std::auto_ptr<te::da::DataSetTypeCapabilities> getCapabilities(
const std::string& name);
579 virtual boost::ptr_vector<te::dt::Property> getProperties(
const std::string& datasetName);
593 virtual std::auto_ptr<te::dt::Property> getProperty(
const std::string& datasetName,
const std::string& name);
607 virtual std::auto_ptr<te::dt::Property> getProperty(
const std::string& datasetName, std::size_t propertyPos);
623 virtual std::vector<std::string> getPropertyNames(
const std::string& datasetName);
636 virtual std::size_t getNumberOfProperties(
const std::string& datasetName);
650 virtual bool propertyExists(
const std::string& datasetName,
const std::string& name);
663 virtual void addProperty(
const std::string& datasetName,
te::dt::Property* p);
675 virtual void dropProperty(
const std::string& datasetName,
const std::string& name);
688 virtual void renameProperty(
const std::string& datasetName,
689 const std::string& propertyName,
690 const std::string& newPropertyName);
692 virtual void changePropertyDefinition(
const std::string& datasetName,
const std::string& propName,
te::dt::Property* newProp);
694 virtual void changePropertiesDefinitions(
const std::string& datasetName,
const std::vector<std::string>& propsNames,
const std::vector<te::dt::Property*> newProps);
707 virtual std::auto_ptr<te::da::PrimaryKey> getPrimaryKey(
const std::string& datasetName);
721 virtual bool primaryKeyExists(
const std::string& datasetName,
const std::string& name);
734 virtual void addPrimaryKey(
const std::string& datasetName,
PrimaryKey* pk);
745 virtual void dropPrimaryKey(
const std::string& datasetName);
759 virtual std::auto_ptr<ForeignKey> getForeignKey(
const std::string& datasetName,
const std::string& name);
772 virtual std::vector<std::string> getForeignKeyNames(
const std::string& datasetName);
784 virtual bool foreignKeyExists(
const std::string& datasetName,
const std::string& name);
797 virtual void addForeignKey(
const std::string& datasetName,
ForeignKey* fk);
809 virtual void dropForeignKey(
const std::string& datasetName,
const std::string& fkName);
823 virtual std::auto_ptr<te::da::UniqueKey> getUniqueKey(
const std::string& datasetName,
const std::string& name);
836 virtual std::vector<std::string> getUniqueKeyNames(
const std::string& datasetName);
850 virtual bool uniqueKeyExists(
const std::string& datasetName,
const std::string& name);
863 virtual void addUniqueKey(
const std::string& datasetName,
UniqueKey* uk);
875 virtual void dropUniqueKey(
const std::string& datasetName,
const std::string& name);
889 virtual std::auto_ptr<te::da::CheckConstraint> getCheckConstraint(
const std::string& datasetName,
const std::string& name);
902 virtual std::vector<std::string> getCheckConstraintNames(
const std::string& datasetName);
916 virtual bool checkConstraintExists(
const std::string& datasetName,
const std::string& name);
929 virtual void addCheckConstraint(
const std::string& datasetName,
CheckConstraint* cc);
941 virtual void dropCheckConstraint(
const std::string& datasetName,
const std::string& name);
955 virtual std::auto_ptr<te::da::Index> getIndex(
const std::string& datasetName,
const std::string& name);
968 virtual std::vector<std::string> getIndexNames(
const std::string& datasetName);
982 virtual bool indexExists(
const std::string& datasetName,
const std::string& name);
996 virtual void addIndex(
const std::string& datasetName,
Index* idx,
997 const std::map<std::string, std::string>& options);
1009 virtual void dropIndex(
const std::string& datasetName,
const std::string& idxName);
1022 virtual std::auto_ptr<Sequence> getSequence(
const std::string& name);
1036 virtual std::vector<std::string> getSequenceNames();
1049 virtual bool sequenceExists(
const std::string& name);
1059 virtual void addSequence(
Sequence* sequence);
1070 virtual void dropSequence(
const std::string& name);
1084 virtual std::auto_ptr<te::gm::Envelope> getExtent(
const std::string& datasetName,
1085 const std::string& propertyName);
1099 virtual std::auto_ptr<te::gm::Envelope> getExtent(
const std::string& datasetName, std::size_t propertyPos);
1112 virtual std::size_t getNumberOfItems(
const std::string& datasetName);
1123 virtual bool hasDataSets();
1136 virtual bool dataSetExists(
const std::string& name);
1167 virtual void createDataSet(
DataSetType* dt,
const std::map<std::string, std::string>& options);
1180 virtual void cloneDataSet(
const std::string& name,
1181 const std::string& cloneName,
1182 const std::map<std::string, std::string>& options);
1193 virtual void dropDataSet(
const std::string& name);
1205 virtual void renameDataSet(
const std::string& name,
const std::string& newName);
1229 virtual void add(
const std::string& datasetName,
1231 const std::map<std::string, std::string>& options,
1232 std::size_t limit = 0);
1267 virtual void update(
const std::string& datasetName,
1269 const std::vector<std::size_t>& properties,
1271 const std::map<std::string, std::string>& options,
1272 std::size_t limit = 0);
1286 virtual void update(
const std::string& datasetName,
1288 const std::vector< std::set<int> >& properties,
1289 const std::vector<size_t>& ids);
1327 static std::unique_ptr<DataSource> create(
const std::string& dsType,
const std::string& connInfo);
1343 static void drop(
const std::string& dsType,
const std::string& connInfo);
1357 static bool exists(
const std::string& dsType,
const std::string& connInfo);
1371 static std::vector<std::string> getDataSourceNames(
const std::string& dsType,
const std::string& connInfo);
1391 virtual void create(
const std::string& connInfo) = 0;
1402 virtual void drop(
const std::string& connInfo) = 0;
1415 virtual bool exists(
const std::string& connInfo) = 0;
1428 virtual std::vector<std::string> getDataSourceNames(
const std::string& connInfo) = 0;
1443 #endif // __TERRALIB_DATAACCESS_DATASOURCE_INTERNAL_DATASOURCE_H
boost::shared_ptr< DataSource > DataSourcePtr
A class that models the description of a dataset.
It represents the SQL query dialect accepted by a given data source.
SpatialRelation
Spatial relations between geometric objects.
It describes a sequence (a number generator).
A class that represents the known capabilities of a specific data source, i.e. this class informs all...
A class that describes a check constraint.
An abstract class for data providers like a DBMS, Web Services or a regular file. ...
It models a property definition.
EncodingType
Supported character encodings.
AccessPolicy
Supported data access policies (can be used as bitfield).
TraverseType
A dataset can be traversed in two ways:
An Envelope defines a 2D rectangular region.
This class represents a set of unique ids created in the same context. i.e. from the same data set...
It models a foreign key constraint for a DataSetType.
It describes a unique key (uk) constraint.
Geometry is the root class of the geometries hierarchy, it follows OGC and ISO standards.
A Select models a query to be used when retrieving data from a DataSource.
std::string m_id
The data source identification.
A class for representing an Uniform Resource Identifier (URI).
A dataset is the unit of information manipulated by the data access module of TerraLib.
It describes a primary key (pk) constraint.
te::core::URI m_uri
The URI used to describe the datasource connection;.
#define TEDATAACCESSEXPORT
You can use this macro in order to export/import classes and functions from this module.
A Query is independent from the data source language/dialect.
It describes an index associated to a DataSetType.