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 
67  te::common::AccessPolicy getAccessPolicy() const;
68 
69  void setAccessPolicy(const te::common::AccessPolicy& accessPolicy);
70 
71  bool supportsTransactions() const;
72 
73  void setSupportTransactions(const bool& support);
74 
75  bool supportsDataSetPesistenceAPI() const;
76 
77  void setSupportDataSetPesistenceAPI(const bool& support);
78 
79  bool supportsDataSetTypePesistenceAPI() const;
80 
81  void setSupportDataSetTypePesistenceAPI(const bool& support);
82 
83  bool supportsPreparedQueryAPI() const;
84 
85  void setSupportPreparedQueryAPI(const bool& support);
86 
87  bool supportsBatchExecutorAPI() const;
88 
89  void setSupportBatchExecutorAPI(const bool& support);
90 
91  const DataTypeCapabilities& getDataTypeCapabilities() const;
92 
94 
95  const DataSetTypeCapabilities& getDataSetTypeCapabilities() const;
96 
97  void setDataSetTypeCapabilities(const DataSetTypeCapabilities& capabilities);
98 
99  const DataSetCapabilities& getDataSetCapabilities() const;
100 
101  void setDataSetCapabilities(const DataSetCapabilities& capabilities);
102 
103  const QueryCapabilities& getQueryCapabilities() const;
104 
105  void setQueryCapabilities(const QueryCapabilities& capabilities);
106 
107  const std::map<std::string, std::string>& getSpecificCapabilities() const;
108 
109  void addSpecificCapability(const std::string& key, const std::string& value);
110 
111  void setSupportAll();
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
DataSetCapabilities m_dataSetCapabilities
The DataSet Capabilities.
A class that informs what kind of constraint and index is supported by a given data source...
capabilities setAccessPolicy(te::common::RWAccess)
DataSetTypeCapabilities m_dataSetTypeCapabilities
The DataSetType Capabilities.
bool m_supportBatchExecutorAPI
A flag that indicates if the data source supports the BatchExecutor API.
A class that represents the known capabilities of a specific data source, i.e. this class informs all...
capabilities setDataTypeCapabilities(dataTypeCapabilities)
A class that informs what the dataset implementation of a given data source can perform.
bool m_supportTransactions
A flag that indicates if the data source supports ACID transactions.
A class that represents the supported data types of a specific data source.
AccessPolicy
Supported data access policies (can be used as bitfield).
Definition: Enums.h:40
bool m_supportPreparedQueryAPI
A flag that indicates if the data source supports the PreparedQuery API.
QueryCapabilities m_queryCapabilities
The Query Capabilities.
A class that informs the query support of a given data source.
te::da::DataSourceCapabilities capabilities
URI C++ Library.
capabilities setQueryCapabilities(queryCapabilities)
dataTypeCapabilities setSupportAll()
te::common::AccessPolicy m_accessPolicy
A value that indicates the data source access policy.
std::map< std::string, std::string > m_specificCapabilities
A list of key-value-pairs that data source driver can supply with specifics capabilities.
DataTypeCapabilities m_dataTypeCapabilities
The DataType Capabilities.
capabilities setDataSetTypeCapabilities(dataSetTypeCapabilities)
bool m_supportDataSetTypePesistenceAPI
A flag that indicates if the data source supports the DataSetTypePersistence API. ...
#define TEDATAACCESSEXPORT
You can use this macro in order to export/import classes and functions from this module.
Definition: Config.h:97
A class that represents the supported data types of a specific data source.
capabilities setDataSetCapabilities(dataSetCapabilities)
bool m_supportDataSetPesistenceAPI
A flag that indicates if the data source supports the DataSetPersistence API.