DataSourceCapabilities.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/dataaccess/datasource/DataSourceCapabilities.h
22 
23  \brief A class that represents the known capabilities of a specific data source.
24 */
25 
26 #ifndef __TERRALIB_DATAACCESS_INTERNAL_DATASOURCECAPABILITIES_H
27 #define __TERRALIB_DATAACCESS_INTERNAL_DATASOURCECAPABILITIES_H
28 
29 // TerraLib
30 #include "../../common/Enums.h"
31 #include "../dataset/DataSetCapabilities.h"
32 #include "../dataset/DataSetTypeCapabilities.h"
33 #include "../query/QueryCapabilities.h"
34 #include "../Config.h"
35 #include "DataTypeCapabilities.h"
36 
37 // STL
38 #include <map>
39 #include <string>
40 
41 namespace te
42 {
43  namespace da
44  {
45  /*!
46  \class DataSourceCapabilities
47 
48  \brief A class that represents the known capabilities of a specific data source,
49  i.e. this class informs all information about what the data source can perform.
50  Here you will find if the data source implementation supports primary keys,
51  foreign keys, if it can be used in a thread environment and much more information.
52 
53  \ingroup dataaccess
54  */
56  {
57  public:
58 
59  /*! \brief Constructor. */
61 
62  /*! \brief Destructor. */
64 
65  public:
66 
68 
69  void setAccessPolicy(const te::common::AccessPolicy& accessPolicy);
70 
71  bool supportsTransactions() const;
72 
73  void setSupportTransactions(const bool& support);
74 
76 
77  void setSupportDataSetPesistenceAPI(const bool& support);
78 
80 
81  void setSupportDataSetTypePesistenceAPI(const bool& support);
82 
84 
85  void setSupportPreparedQueryAPI(const bool& support);
86 
88 
89  void setSupportBatchExecutorAPI(const bool& support);
90 
92 
94 
96 
98 
100 
102 
104 
106 
107  const std::map<std::string, std::string>& getSpecificCapabilities() const;
108 
109  void addSpecificCapability(const std::string& key, const std::string& value);
110 
112 
113  private:
114 
115  te::common::AccessPolicy m_accessPolicy; //!< A value that indicates the data source access policy.
116  bool m_supportTransactions; //!< A flag that indicates if the data source supports ACID transactions.
117  bool m_supportDataSetPesistenceAPI; //!< A flag that indicates if the data source supports the DataSetPersistence API.
118  bool m_supportDataSetTypePesistenceAPI; //!< A flag that indicates if the data source supports the DataSetTypePersistence API.
119  bool m_supportPreparedQueryAPI; //!< A flag that indicates if the data source supports the PreparedQuery API.
120  bool m_supportBatchExecutorAPI; //!< A flag that indicates if the data source supports the BatchExecutor API.
121 
122  DataTypeCapabilities m_dataTypeCapabilities; //!< The DataType Capabilities.
123  DataSetTypeCapabilities m_dataSetTypeCapabilities; //!< The DataSetType Capabilities.
124  DataSetCapabilities m_dataSetCapabilities; //!< The DataSet Capabilities.
125  QueryCapabilities m_queryCapabilities; //!< The Query Capabilities.
126 
127  std::map<std::string, std::string> m_specificCapabilities; //!< A list of key-value-pairs that data source driver can supply with specifics capabilities.
128  };
129 
130  } // end namespace da
131 } // end namespace te
132 
133 #endif // __TERRALIB_DATAACCESS_INTERNAL_DATASOURCECAPABILITIES_H
te::da::DataSourceCapabilities::m_supportDataSetPesistenceAPI
bool m_supportDataSetPesistenceAPI
A flag that indicates if the data source supports the DataSetPersistence API.
Definition: DataSourceCapabilities.h:117
te::da::DataSourceCapabilities::supportsDataSetTypePesistenceAPI
bool supportsDataSetTypePesistenceAPI() const
te::da::DataSourceCapabilities::getDataSetTypeCapabilities
const DataSetTypeCapabilities & getDataSetTypeCapabilities() const
te
TerraLib.
Definition: AddressGeocodingOp.h:52
te::da::DataSourceCapabilities::supportsDataSetPesistenceAPI
bool supportsDataSetPesistenceAPI() const
te::da::DataSourceCapabilities::getQueryCapabilities
const QueryCapabilities & getQueryCapabilities() const
te::da::DataSourceCapabilities::getSpecificCapabilities
const std::map< std::string, std::string > & getSpecificCapabilities() const
te::da::DataSourceCapabilities::supportsPreparedQueryAPI
bool supportsPreparedQueryAPI() const
te::da::DataSourceCapabilities::supportsBatchExecutorAPI
bool supportsBatchExecutorAPI() const
te::da::DataSourceCapabilities::supportsTransactions
bool supportsTransactions() const
te::da::DataSourceCapabilities::m_specificCapabilities
std::map< std::string, std::string > m_specificCapabilities
A list of key-value-pairs that data source driver can supply with specifics capabilities.
Definition: DataSourceCapabilities.h:127
te::da::DataSourceCapabilities::setSupportDataSetPesistenceAPI
void setSupportDataSetPesistenceAPI(const bool &support)
te::da::DataSetTypeCapabilities
A class that informs what kind of constraint and index is supported by a given data source.
Definition: DataSetTypeCapabilities.h:44
te::da::DataTypeCapabilities
A class that represents the supported data types of a specific data source.
Definition: DataTypeCapabilities.h:46
te::da::DataSourceCapabilities::m_dataTypeCapabilities
DataTypeCapabilities m_dataTypeCapabilities
The DataType Capabilities.
Definition: DataSourceCapabilities.h:122
te::da::DataSourceCapabilities::addSpecificCapability
void addSpecificCapability(const std::string &key, const std::string &value)
te::da::DataSourceCapabilities::m_dataSetCapabilities
DataSetCapabilities m_dataSetCapabilities
The DataSet Capabilities.
Definition: DataSourceCapabilities.h:124
te::da::DataSourceCapabilities::setAccessPolicy
void setAccessPolicy(const te::common::AccessPolicy &accessPolicy)
te::da::DataSourceCapabilities::m_supportBatchExecutorAPI
bool m_supportBatchExecutorAPI
A flag that indicates if the data source supports the BatchExecutor API.
Definition: DataSourceCapabilities.h:120
te::da::DataSourceCapabilities::m_supportDataSetTypePesistenceAPI
bool m_supportDataSetTypePesistenceAPI
A flag that indicates if the data source supports the DataSetTypePersistence API.
Definition: DataSourceCapabilities.h:118
te::da::DataSourceCapabilities::setSupportAll
void setSupportAll()
te::da::DataSourceCapabilities::setQueryCapabilities
void setQueryCapabilities(const QueryCapabilities &capabilities)
TEDATAACCESSEXPORT
#define TEDATAACCESSEXPORT
You can use this macro in order to export/import classes and functions from this module.
Definition: Config.h:97
te::da::DataSourceCapabilities::m_supportPreparedQueryAPI
bool m_supportPreparedQueryAPI
A flag that indicates if the data source supports the PreparedQuery API.
Definition: DataSourceCapabilities.h:119
te::da::DataSourceCapabilities::getAccessPolicy
te::common::AccessPolicy getAccessPolicy() const
te::da::DataSourceCapabilities::setSupportBatchExecutorAPI
void setSupportBatchExecutorAPI(const bool &support)
capabilities
te::da::DataSourceCapabilities capabilities
Definition: PostGISCapabilities.h:129
te::da::DataSourceCapabilities::getDataSetCapabilities
const DataSetCapabilities & getDataSetCapabilities() const
te::da::DataSourceCapabilities::m_supportTransactions
bool m_supportTransactions
A flag that indicates if the data source supports ACID transactions.
Definition: DataSourceCapabilities.h:116
te::da::DataSourceCapabilities::setSupportPreparedQueryAPI
void setSupportPreparedQueryAPI(const bool &support)
te::da::DataSourceCapabilities::m_queryCapabilities
QueryCapabilities m_queryCapabilities
The Query Capabilities.
Definition: DataSourceCapabilities.h:125
te::da::DataSourceCapabilities::~DataSourceCapabilities
~DataSourceCapabilities()
Destructor.
te::da::DataSourceCapabilities::setDataSetCapabilities
void setDataSetCapabilities(const DataSetCapabilities &capabilities)
te::da::DataSourceCapabilities::setDataTypeCapabilities
void setDataTypeCapabilities(const DataTypeCapabilities &capabilities)
te::da::DataSourceCapabilities::setSupportDataSetTypePesistenceAPI
void setSupportDataSetTypePesistenceAPI(const bool &support)
te::da::DataSourceCapabilities::DataSourceCapabilities
DataSourceCapabilities()
Constructor.
te::da::DataSourceCapabilities
A class that represents the known capabilities of a specific data source, i.e. this class informs all...
Definition: DataSourceCapabilities.h:56
te::da::DataSetCapabilities
A class that informs what the dataset implementation of a given data source can perform.
Definition: DataSetCapabilities.h:44
te::da::DataSourceCapabilities::setDataSetTypeCapabilities
void setDataSetTypeCapabilities(const DataSetTypeCapabilities &capabilities)
te::da::DataSourceCapabilities::m_accessPolicy
te::common::AccessPolicy m_accessPolicy
A value that indicates the data source access policy.
Definition: DataSourceCapabilities.h:115
te::da::DataSourceCapabilities::setSupportTransactions
void setSupportTransactions(const bool &support)
DataTypeCapabilities.h
A class that represents the supported data types of a specific data source.
te::da::DataSourceCapabilities::getDataTypeCapabilities
const DataTypeCapabilities & getDataTypeCapabilities() const
te::da::DataSourceCapabilities::m_dataSetTypeCapabilities
DataSetTypeCapabilities m_dataSetTypeCapabilities
The DataSetType Capabilities.
Definition: DataSourceCapabilities.h:123
te::da::QueryCapabilities
A class that informs the query support of a given data source.
Definition: QueryCapabilities.h:49
te::common::AccessPolicy
AccessPolicy
Supported data access policies (can be used as bitfield).
Definition: Enums.h:41