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"
50 #include <boost/ptr_container/ptr_vector.hpp>
51 #include <boost/cstdint.hpp>
52 #include <boost/noncopyable.hpp>
53 #include <boost/shared_ptr.hpp>
70 class DataSetTypeCapabilities;
71 class DataSourceCapabilities;
72 class DataSourceTransactor;
77 class CheckConstraint;
133 const std::string& getId()
const;
140 void setId(
const std::string&
id);
156 virtual std::string getType()
const = 0;
173 virtual const std::map<std::string, std::string>& getConnectionInfo()
const = 0;
180 virtual void setConnectionInfo(
const std::map<std::string, std::string>& connInfo) = 0;
197 virtual std::auto_ptr<DataSourceTransactor> getTransactor() = 0;
212 virtual void open() = 0;
223 virtual void close() = 0;
237 virtual bool isOpened()
const = 0;
250 virtual bool isValid()
const = 0;
272 virtual const SQLDialect* getDialect()
const = 0;
298 virtual std::auto_ptr<DataSet> getDataSet(
const std::string& name,
325 virtual std::auto_ptr<DataSet> getDataSet(
const std::string& name,
326 const std::string& propertyName,
349 virtual std::auto_ptr<DataSet> getDataSet(
const std::string& name,
350 const std::string& propertyName,
375 std::auto_ptr<te::da::DataSet> getDataSet(
const std::string& name,
402 virtual std::auto_ptr<DataSet> query(
const Select& q,
425 virtual std::auto_ptr<DataSet> query(
const std::string& query,
443 virtual void execute(
const Query& command);
454 virtual void execute(
const std::string& command);
470 virtual std::string escape(
const std::string& value);
481 virtual bool isDataSetNameValid(
const std::string& datasetName);
492 virtual bool isPropertyNameValid(
const std::string& propertyName);
511 virtual std::vector<std::string> getDataSetNames();
522 virtual std::size_t getNumberOfDataSets();
545 virtual std::auto_ptr<te::da::DataSetType> getDataSetType(
const std::string& name);
554 std::auto_ptr<te::da::DataSetTypeCapabilities> getCapabilities(
const std::string& name);
567 virtual boost::ptr_vector<te::dt::Property> getProperties(
const std::string& datasetName);
581 virtual std::auto_ptr<te::dt::Property> getProperty(
const std::string& datasetName,
const std::string& name);
595 virtual std::auto_ptr<te::dt::Property> getProperty(
const std::string& datasetName, std::size_t propertyPos);
611 virtual std::vector<std::string> getPropertyNames(
const std::string& datasetName);
624 virtual std::size_t getNumberOfProperties(
const std::string& datasetName);
638 virtual bool propertyExists(
const std::string& datasetName,
const std::string& name);
651 virtual void addProperty(
const std::string& datasetName,
te::dt::Property* p);
663 virtual void dropProperty(
const std::string& datasetName,
const std::string& name);
676 virtual void renameProperty(
const std::string& datasetName,
677 const std::string& propertyName,
678 const std::string& newPropertyName);
680 virtual void changePropertyDefinition(
const std::string& datasetName,
const std::string& propName,
te::dt::Property* newProp);
682 virtual void changePropertiesDefinitions(
const std::string& datasetName,
const std::vector<std::string>& propsNames,
const std::vector<te::dt::Property*> newProps);
695 virtual std::auto_ptr<te::da::PrimaryKey> getPrimaryKey(
const std::string& datasetName);
709 virtual bool primaryKeyExists(
const std::string& datasetName,
const std::string& name);
722 virtual void addPrimaryKey(
const std::string& datasetName,
PrimaryKey* pk);
733 virtual void dropPrimaryKey(
const std::string& datasetName);
747 virtual std::auto_ptr<ForeignKey> getForeignKey(
const std::string& datasetName,
const std::string& name);
760 virtual std::vector<std::string> getForeignKeyNames(
const std::string& datasetName);
772 virtual bool foreignKeyExists(
const std::string& datasetName,
const std::string& name);
785 virtual void addForeignKey(
const std::string& datasetName,
ForeignKey* fk);
797 virtual void dropForeignKey(
const std::string& datasetName,
const std::string& fkName);
811 virtual std::auto_ptr<te::da::UniqueKey> getUniqueKey(
const std::string& datasetName,
const std::string& name);
824 virtual std::vector<std::string> getUniqueKeyNames(
const std::string& datasetName);
838 virtual bool uniqueKeyExists(
const std::string& datasetName,
const std::string& name);
851 virtual void addUniqueKey(
const std::string& datasetName,
UniqueKey* uk);
863 virtual void dropUniqueKey(
const std::string& datasetName,
const std::string& name);
877 virtual std::auto_ptr<te::da::CheckConstraint> getCheckConstraint(
const std::string& datasetName,
const std::string& name);
890 virtual std::vector<std::string> getCheckConstraintNames(
const std::string& datasetName);
904 virtual bool checkConstraintExists(
const std::string& datasetName,
const std::string& name);
917 virtual void addCheckConstraint(
const std::string& datasetName,
CheckConstraint* cc);
929 virtual void dropCheckConstraint(
const std::string& datasetName,
const std::string& name);
943 virtual std::auto_ptr<te::da::Index> getIndex(
const std::string& datasetName,
const std::string& name);
956 virtual std::vector<std::string> getIndexNames(
const std::string& datasetName);
970 virtual bool indexExists(
const std::string& datasetName,
const std::string& name);
984 virtual void addIndex(
const std::string& datasetName,
Index* idx,
985 const std::map<std::string, std::string>& options);
997 virtual void dropIndex(
const std::string& datasetName,
const std::string& idxName);
1010 virtual std::auto_ptr<Sequence> getSequence(
const std::string& name);
1024 virtual std::vector<std::string> getSequenceNames();
1037 virtual bool sequenceExists(
const std::string& name);
1047 virtual void addSequence(
Sequence* sequence);
1058 virtual void dropSequence(
const std::string& name);
1072 virtual std::auto_ptr<te::gm::Envelope> getExtent(
const std::string& datasetName,
1073 const std::string& propertyName);
1087 virtual std::auto_ptr<te::gm::Envelope> getExtent(
const std::string& datasetName, std::size_t propertyPos);
1100 virtual std::size_t getNumberOfItems(
const std::string& datasetName);
1111 virtual bool hasDataSets();
1124 virtual bool dataSetExists(
const std::string& name);
1155 virtual void createDataSet(
DataSetType* dt,
const std::map<std::string, std::string>& options);
1168 virtual void cloneDataSet(
const std::string& name,
1169 const std::string& cloneName,
1170 const std::map<std::string, std::string>& options);
1181 virtual void dropDataSet(
const std::string& name);
1193 virtual void renameDataSet(
const std::string& name,
const std::string& newName);
1217 virtual void add(
const std::string& datasetName,
1219 const std::map<std::string, std::string>& options,
1220 std::size_t limit = 0);
1262 virtual void update(
const std::string& datasetName,
1264 const std::vector<std::size_t>& properties,
1266 const std::map<std::string, std::string>& options,
1267 std::size_t limit = 0);
1281 virtual void update(
const std::string& datasetName,
1283 const std::vector< std::set<int> >& properties,
1284 const std::vector<size_t>& ids);
1305 static std::auto_ptr<DataSource> create(
const std::string& dsType,
const std::map<std::string, std::string>& dsInfo);
1319 static void drop(
const std::string& dsType,
const std::map<std::string, std::string>& dsInfo);
1333 static bool exists(
const std::string& dsType,
const std::map<std::string, std::string>& dsInfo);
1347 static std::vector<std::string> getDataSourceNames(
const std::string& dsType,
const std::map<std::string, std::string>& info);
1359 static std::vector<te::common::CharEncoding> getEncodings(
const std::string& dsType,
const std::map<std::string, std::string>& info);
1378 virtual void create(
const std::map<std::string, std::string>& dsInfo) = 0;
1389 virtual void drop(
const std::map<std::string, std::string>& dsInfo) = 0;
1402 virtual bool exists(
const std::map<std::string, std::string>& dsInfo) = 0;
1415 virtual std::vector<std::string> getDataSourceNames(
const std::map<std::string, std::string>& dsInfo) = 0;
1427 virtual std::vector<te::common::CharEncoding> getEncodings(
const std::map<std::string, std::string>& dsInfo) = 0;
1440 #endif // __TERRALIB_DATAACCESS_DATASOURCE_INTERNAL_DATASOURCE_H
CharEncoding
Supported charsets (character encoding).
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.
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 dataset is the unit of information manipulated by the data access module of TerraLib.
It describes a primary key (pk) constraint.
#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.