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
A class that represents the supported data types of a specific data source.
te::da::DataSourceCapabilities capabilities
A class that informs what the dataset implementation of a given data source can perform.
A class that informs what kind of constraint and index is supported by a given data source.
A class that represents the known capabilities of a specific data source, i.e. this class informs all...
DataSetCapabilities m_dataSetCapabilities
The DataSet Capabilities.
void addSpecificCapability(const std::string &key, const std::string &value)
void setSupportBatchExecutorAPI(const bool &support)
void setSupportPreparedQueryAPI(const bool &support)
void setSupportTransactions(const bool &support)
bool m_supportTransactions
A flag that indicates if the data source supports ACID transactions.
const DataTypeCapabilities & getDataTypeCapabilities() const
bool m_supportDataSetPesistenceAPI
A flag that indicates if the data source supports the DataSetPersistence API.
std::map< std::string, std::string > m_specificCapabilities
A list of key-value-pairs that data source driver can supply with specifics capabilities.
te::common::AccessPolicy getAccessPolicy() const
const std::map< std::string, std::string > & getSpecificCapabilities() const
void setSupportDataSetPesistenceAPI(const bool &support)
void setAccessPolicy(const te::common::AccessPolicy &accessPolicy)
void setDataTypeCapabilities(const DataTypeCapabilities &capabilities)
void setSupportDataSetTypePesistenceAPI(const bool &support)
bool supportsDataSetTypePesistenceAPI() const
bool m_supportDataSetTypePesistenceAPI
A flag that indicates if the data source supports the DataSetTypePersistence API.
const DataSetTypeCapabilities & getDataSetTypeCapabilities() const
const DataSetCapabilities & getDataSetCapabilities() const
const QueryCapabilities & getQueryCapabilities() const
DataSetTypeCapabilities m_dataSetTypeCapabilities
The DataSetType Capabilities.
void setQueryCapabilities(const QueryCapabilities &capabilities)
bool supportsDataSetPesistenceAPI() const
void setDataSetCapabilities(const DataSetCapabilities &capabilities)
QueryCapabilities m_queryCapabilities
The Query Capabilities.
bool m_supportPreparedQueryAPI
A flag that indicates if the data source supports the PreparedQuery API.
DataTypeCapabilities m_dataTypeCapabilities
The DataType Capabilities.
te::common::AccessPolicy m_accessPolicy
A value that indicates the data source access policy.
bool m_supportBatchExecutorAPI
A flag that indicates if the data source supports the BatchExecutor API.
void setDataSetTypeCapabilities(const DataSetTypeCapabilities &capabilities)
DataSourceCapabilities()
Constructor.
A class that represents the supported data types of a specific data source.
A class that informs the query support of a given data source.
AccessPolicy
Supported data access policies (can be used as bitfield).
Definition: Enums.h:41
TerraLib.
#define TEDATAACCESSEXPORT
You can use this macro in order to export/import classes and functions from this module.
Definition: Config.h:97