26 #ifndef __TERRALIB_DATAACCESS_DATASOURCE_INTERNAL_DATASOURCE_H
27 #define __TERRALIB_DATAACCESS_DATASOURCE_INTERNAL_DATASOURCE_H
30 #include "../../common/Enums.h"
31 #include "../../geometry/Enums.h"
32 #include "../dataset/CheckConstraint.h"
33 #include "../dataset/DataSet.h"
34 #include "../dataset/DataSetType.h"
35 #include "../dataset/ForeignKey.h"
36 #include "../dataset/Index.h"
37 #include "../dataset/PrimaryKey.h"
38 #include "../dataset/Sequence.h"
39 #include "../dataset/UniqueKey.h"
40 #include "../Config.h"
49 #include <boost/ptr_container/ptr_vector.hpp>
50 #include <boost/cstdint.hpp>
51 #include <boost/noncopyable.hpp>
52 #include <boost/shared_ptr.hpp>
69 class DataSourceCapabilities;
70 class DataSourceTransactor;
75 class CheckConstraint;
131 const std::string& getId()
const;
138 void setId(
const std::string&
id);
154 virtual std::string getType()
const = 0;
171 virtual const std::map<std::string, std::string>& getConnectionInfo()
const = 0;
178 virtual void setConnectionInfo(
const std::map<std::string, std::string>& connInfo) = 0;
195 virtual std::auto_ptr<DataSourceTransactor> getTransactor() = 0;
210 virtual void open() = 0;
221 virtual void close() = 0;
235 virtual bool isOpened()
const = 0;
248 virtual bool isValid()
const = 0;
270 virtual const SQLDialect* getDialect()
const = 0;
296 virtual std::auto_ptr<DataSet> getDataSet(
const std::string& name,
323 virtual std::auto_ptr<DataSet> getDataSet(
const std::string& name,
324 const std::string& propertyName,
347 virtual std::auto_ptr<DataSet> getDataSet(
const std::string& name,
348 const std::string& propertyName,
373 std::auto_ptr<te::da::DataSet> getDataSet(
const std::string& name,
400 virtual std::auto_ptr<DataSet> query(
const Select& q,
423 virtual std::auto_ptr<DataSet> query(
const std::string& query,
441 virtual void execute(
const Query& command);
452 virtual void execute(
const std::string& command);
468 virtual std::string escape(
const std::string& value);
479 virtual bool isDataSetNameValid(
const std::string& datasetName);
490 virtual bool isPropertyNameValid(
const std::string& propertyName);
509 virtual std::vector<std::string> getDataSetNames();
520 virtual std::size_t getNumberOfDataSets();
543 virtual std::auto_ptr<te::da::DataSetType> getDataSetType(
const std::string& name);
556 virtual boost::ptr_vector<te::dt::Property> getProperties(
const std::string& datasetName);
570 virtual std::auto_ptr<te::dt::Property> getProperty(
const std::string& datasetName,
const std::string& name);
584 virtual std::auto_ptr<te::dt::Property> getProperty(
const std::string& datasetName, std::size_t propertyPos);
600 virtual std::vector<std::string> getPropertyNames(
const std::string& datasetName);
613 virtual std::size_t getNumberOfProperties(
const std::string& datasetName);
627 virtual bool propertyExists(
const std::string& datasetName,
const std::string& name);
640 virtual void addProperty(
const std::string& datasetName,
te::dt::Property* p);
652 virtual void dropProperty(
const std::string& datasetName,
const std::string& name);
665 virtual void renameProperty(
const std::string& datasetName,
666 const std::string& propertyName,
667 const std::string& newPropertyName);
680 virtual std::auto_ptr<te::da::PrimaryKey> getPrimaryKey(
const std::string& datasetName);
694 virtual bool primaryKeyExists(
const std::string& datasetName,
const std::string& name);
707 virtual void addPrimaryKey(
const std::string& datasetName,
PrimaryKey* pk);
718 virtual void dropPrimaryKey(
const std::string& datasetName);
732 virtual std::auto_ptr<ForeignKey> getForeignKey(
const std::string& datasetName,
const std::string& name);
745 virtual std::vector<std::string> getForeignKeyNames(
const std::string& datasetName);
757 virtual bool foreignKeyExists(
const std::string& datasetName,
const std::string& name);
770 virtual void addForeignKey(
const std::string& datasetName,
ForeignKey* fk);
782 virtual void dropForeignKey(
const std::string& datasetName,
const std::string& fkName);
796 virtual std::auto_ptr<te::da::UniqueKey> getUniqueKey(
const std::string& datasetName,
const std::string& name);
809 virtual std::vector<std::string> getUniqueKeyNames(
const std::string& datasetName);
823 virtual bool uniqueKeyExists(
const std::string& datasetName,
const std::string& name);
836 virtual void addUniqueKey(
const std::string& datasetName,
UniqueKey* uk);
848 virtual void dropUniqueKey(
const std::string& datasetName,
const std::string& name);
862 virtual std::auto_ptr<te::da::CheckConstraint> getCheckConstraint(
const std::string& datasetName,
const std::string& name);
875 virtual std::vector<std::string> getCheckConstraintNames(
const std::string& datasetName);
889 virtual bool checkConstraintExists(
const std::string& datasetName,
const std::string& name);
902 virtual void addCheckConstraint(
const std::string& datasetName,
CheckConstraint* cc);
914 virtual void dropCheckConstraint(
const std::string& datasetName,
const std::string& name);
928 virtual std::auto_ptr<te::da::Index> getIndex(
const std::string& datasetName,
const std::string& name);
941 virtual std::vector<std::string> getIndexNames(
const std::string& datasetName);
955 virtual bool indexExists(
const std::string& datasetName,
const std::string& name);
969 virtual void addIndex(
const std::string& datasetName,
Index* idx,
970 const std::map<std::string, std::string>& options);
982 virtual void dropIndex(
const std::string& datasetName,
const std::string& idxName);
995 virtual std::auto_ptr<Sequence> getSequence(
const std::string& name);
1009 virtual std::vector<std::string> getSequenceNames();
1022 virtual bool sequenceExists(
const std::string& name);
1032 virtual void addSequence(
Sequence* sequence);
1043 virtual void dropSequence(
const std::string& name);
1057 virtual std::auto_ptr<te::gm::Envelope> getExtent(
const std::string& datasetName,
1058 const std::string& propertyName);
1072 virtual std::auto_ptr<te::gm::Envelope> getExtent(
const std::string& datasetName, std::size_t propertyPos);
1085 virtual std::size_t getNumberOfItems(
const std::string& datasetName);
1096 virtual bool hasDataSets();
1109 virtual bool dataSetExists(
const std::string& name);
1140 virtual void createDataSet(
DataSetType* dt,
const std::map<std::string, std::string>& options);
1153 virtual void cloneDataSet(
const std::string& name,
1154 const std::string& cloneName,
1155 const std::map<std::string, std::string>& options);
1166 virtual void dropDataSet(
const std::string& name);
1178 virtual void renameDataSet(
const std::string& name,
const std::string& newName);
1202 virtual void add(
const std::string& datasetName,
1204 const std::map<std::string, std::string>& options,
1205 std::size_t limit = 0);
1240 virtual void update(
const std::string& datasetName,
1242 const std::vector<std::size_t>& properties,
1244 const std::map<std::string, std::string>& options,
1245 std::size_t limit = 0);
1265 static std::auto_ptr<DataSource> create(
const std::string& dsType,
const std::map<std::string, std::string>& dsInfo);
1279 static void drop(
const std::string& dsType,
const std::map<std::string, std::string>& dsInfo);
1293 static bool exists(
const std::string& dsType,
const std::map<std::string, std::string>& dsInfo);
1307 static std::vector<std::string> getDataSourceNames(
const std::string& dsType,
const std::map<std::string, std::string>& info);
1319 static std::vector<std::string> getEncodings(
const std::string& dsType,
const std::map<std::string, std::string>& info);
1338 virtual void create(
const std::map<std::string, std::string>& dsInfo) = 0;
1349 virtual void drop(
const std::map<std::string, std::string>& dsInfo) = 0;
1362 virtual bool exists(
const std::map<std::string, std::string>& dsInfo) = 0;
1375 virtual std::vector<std::string> getDataSourceNames(
const std::map<std::string, std::string>& dsInfo) = 0;
1387 virtual std::vector<std::string> getEncodings(
const std::map<std::string, std::string>& dsInfo) = 0;
1400 #endif // __TERRALIB_DATAACCESS_DATASOURCE_INTERNAL_DATASOURCE_H
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...
A Select models a query to be used when retrieving data from a DataSource.
It describes a primary key (pk) constraint.
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...
SpatialRelation
Spatial relations between geometric objects.
It models a foreign key constraint for a DataSetType.
AccessPolicy
Supported data access policies (can be used as bitfield).
#define TEDATAACCESSEXPORT
You can use this macro in order to export/import classes and functions from this module.
It represents the SQL query dialect accepted by a given data source.
A Query is independent from the data source language/dialect.
Geometry is the root class of the geometries hierarchy, it follows OGC and ISO standards.
It describes a unique key (uk) constraint.
boost::shared_ptr< DataSource > DataSourcePtr
TraverseType
A dataset can be traversed in two ways:
An abstract class for data providers like a DBMS, Web Services or a regular file. ...
A class that models the description of a dataset.
It models a property definition.
std::string m_id
The data source identification.
A class that describes a check constraint.
An Envelope defines a 2D rectangular region.
A dataset is the unit of information manipulated by the data access module of TerraLib.