Loading...
Searching...
No Matches
DataSetAdapter.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/dataset/DataSetAdapter.h
22
23 \brief An adapter for DataSet.
24*/
25
26#ifndef __TERRALIB_DATAACCESS_INTERNAL_DATASETADAPTER_H
27#define __TERRALIB_DATAACCESS_INTERNAL_DATASETADAPTER_H
28
29// TerraLib
30#include "../../common/Holder.h"
31#include "../Config.h"
32#include "AttributeConverters.h"
33#include "DataSet.h"
34
35// STL
36#include <vector>
37
38namespace te
39{
40 namespace da
41 {
42// Forward declarations
43 class DataSourceCapabilities;
44
45 /*!
46 \class DataSetAdapter
47
48 \brief An adapter for DataSet.
49
50 \sa DataSet
51 */
53 {
54 public:
55
56 /** @name Constructor/Destructor
57 * Initilizer methods.
58 */
59 //@{
60
61 /*!
62 \brief Constructor.
63
64 \param dataset A pointer to the DataSet that will be handled by adapter.
65 \param isOwner If true the DataSetAdapter will have the ownership of the given data set pointer.
66
67 \note Here no automatic property adaptation will be made. i.e. The adapater is invalid.
68 \note The method "adapt" can be used to do manual adaptations.
69 */
70 DataSetAdapter(DataSet* dataset, bool isOwner = false);
71
72 /*! \brief Destructor. */
74
75 //@}
76
78
80
81 std::unique_ptr<te::gm::Envelope> getExtent(std::size_t i);
82
83 std::size_t getNumProperties() const;
84
85 int getPropertyDataType(std::size_t pos) const;
86
87 std::string getPropertyName(std::size_t pos) const;
88
89 std::string getDatasetNameOfProperty(std::size_t pos) const;
90
91 bool isEmpty() const;
92
93 bool isConnected() const;
94
95 std::size_t size() const;
96
97 bool moveNext();
98
100
102
103 bool moveFirst();
104
105 bool moveLast();
106
107 bool move(std::size_t i);
108
109 bool isAtBegin() const;
110
111 bool isBeforeBegin() const;
112
113 bool isAtEnd() const;
114
115 bool isAfterEnd() const;
116
117 bool isPositionValid() const;
118
119 char getChar(std::size_t i) const;
120
121 unsigned char getUChar(std::size_t i) const;
122
123 boost::int16_t getInt16(std::size_t i) const;
124
125 boost::int32_t getInt32(std::size_t i) const;
126
127 boost::int64_t getInt64(std::size_t i) const;
128
129 bool getBool(std::size_t i) const;
130
131 float getFloat(std::size_t i) const;
132
133 double getDouble(std::size_t i) const;
134
135 std::string getNumeric(std::size_t i) const;
136
137 std::string getString(std::size_t i) const;
138
139 std::unique_ptr<te::dt::ByteArray> getByteArray(std::size_t i) const;
140
141 std::unique_ptr<te::gm::Geometry> getGeometry(std::size_t i) const;
142
143 std::unique_ptr<te::rst::Raster> getRaster(std::size_t i) const;
144
145 std::unique_ptr<te::dt::DateTime> getDateTime(std::size_t i) const;
146
147 std::unique_ptr<te::dt::Array> getArray(std::size_t i) const;
148
149 bool isNull(std::size_t i) const;
150
151 /** @name DataSet Adapter Extended Methods
152 * Methods that exists only in the DataSet Adapter implementation.
153 */
154 //@{
155
156 /*!
157 \brief This method returns the pointer to the DataSet that is handled by adapter.
158
159 \return The pointer to the DataSet that is handled by adapter.
160
161 \note The caller will NOT take the ownership of the returned pointer.
162 */
164
165 void add(const std::string& newPropertyName,
166 int newPropertyType,
167 const std::vector<std::size_t>& adaptedPropertyPos,
168 AttributeConverter conv);
169 //@}
170
171 private:
172
173 /** @name DataSet Adapter Internal Methods
174 * DataSet Adapter Internal Methods implementation.
175 */
176 //@{
177
179
180 //@}
181
182 private:
183
184 std::vector<int> m_datatypes; //!< The datatype for each property.
185 std::vector<std::string> m_pnames; //!< The name for each property.
186 te::common::Holder<DataSet> m_ds; //!< A pointer to the DataSet that will be handled by adapter
187 std::vector<std::vector<std::size_t> > m_propertyIndexes; //!< A vector that stores the adapted property indexes.
188 std::vector<AttributeConverter> m_converters; //!< A vector that stores the attribute converters functions.
189 };
190
191 } // end namespace da
192} // end namespace te
193
194#endif // __TERRALIB_DATAACCESS_INTERNAL_DATASETADAPTER_H
Definition of attribute converter and a set of them.
An adapter for DataSet.
void add(const std::string &newPropertyName, int newPropertyType, const std::vector< std::size_t > &adaptedPropertyPos, AttributeConverter conv)
char getChar(std::size_t i) const
Method for retrieving a signed character attribute value (1 byte long).
DataSetAdapter(DataSet *dataset, bool isOwner=false)
Constructor.
std::string getPropertyName(std::size_t pos) const
It returns the property name at position pos.
boost::int16_t getInt16(std::size_t i) const
Method for retrieving a 16-bit integer attribute value (2 bytes long).
bool isConnected() const
It returns true if the dataset is connected and false if it is disconnected. A dataset can be connect...
std::unique_ptr< te::dt::DateTime > getDateTime(std::size_t i) const
Method for retrieving a date and time attribute value.
std::vector< int > m_datatypes
The datatype for each property.
bool moveFirst()
It moves the internal pointer to the first item in the collection.
bool isBeforeBegin() const
It tells if the dataset internal pointer is in a position before the first element of the collection ...
std::vector< AttributeConverter > m_converters
A vector that stores the attribute converters functions.
bool moveLast()
It sets the dataset internal pointer to the last item in the collection.
te::common::AccessPolicy getAccessPolicy() const
It returns the read and write permission associated to the dataset.
bool isEmpty() const
It returns true if the collection is empty.
int getPropertyDataType(std::size_t pos) const
It returns the underlying data type of the property at position pos.
bool isNull(std::size_t i) const
It checks if the attribute value is NULL.
std::unique_ptr< te::gm::Envelope > getExtent(std::size_t i)
It computes the bounding rectangle for a spatial property of the dataset.
std::unique_ptr< te::dt::Array > getArray(std::size_t i) const
Method for retrieving an array.
unsigned char getUChar(std::size_t i) const
Method for retrieving an unsigned character attribute value (1 byte long).
te::dt::AbstractData * getAdaptedValue(std::size_t i) const
~DataSetAdapter()
Destructor.
te::da::DataSet * getAdaptee() const
This method returns the pointer to the DataSet that is handled by adapter.
std::unique_ptr< te::gm::Geometry > getGeometry(std::size_t i) const
Method for retrieving a geometric attribute value.
std::size_t getNumProperties() const
It returns the number of properties that composes an item of the dataset.
bool moveBeforeFirst()
It moves the internal pointer to a position before the first item in the collection.
bool move(std::size_t i)
It moves the dataset internal pointer to a given position.
bool movePrevious()
It moves the internal pointer to the previous item of the collection.
std::unique_ptr< te::rst::Raster > getRaster(std::size_t i) const
Method for retrieving a raster attribute value.
std::string getString(std::size_t i) const
Method for retrieving a string value attribute.
bool isAtEnd() const
It tells if the dataset internal pointer is on the last element of the collection.
std::string getNumeric(std::size_t i) const
Method for retrieving a numeric attribute value.
std::unique_ptr< te::dt::ByteArray > getByteArray(std::size_t i) const
Method for retrieving a byte array.
bool getBool(std::size_t i) const
Method for retrieving a boolean attribute value.
double getDouble(std::size_t i) const
Method for retrieving a double attribute value.
bool isAfterEnd() const
It tells if the dataset internal pointer is on the sentinel position after the last element of the co...
boost::int32_t getInt32(std::size_t i) const
Method for retrieving a 32-bit integer attribute value (4 bytes long).
std::size_t size() const
It returns the collection size, if it is known.
float getFloat(std::size_t i) const
Method for retrieving a float attribute value.
te::common::Holder< DataSet > m_ds
A pointer to the DataSet that will be handled by adapter.
te::common::TraverseType getTraverseType() const
It returns the traverse type associated to the dataset.
std::vector< std::vector< std::size_t > > m_propertyIndexes
A vector that stores the adapted property indexes.
std::vector< std::string > m_pnames
The name for each property.
bool isAtBegin() const
It tells if the dataset internal pointer is on the first element of the collection or not.
std::string getDatasetNameOfProperty(std::size_t pos) const
It returns the underlying dataset name of the property at position pos.
bool isPositionValid() const
It tells if the dataset internal pointer is on a valid position.
boost::int64_t getInt64(std::size_t i) const
Method for retrieving a 64-bit integer attribute value (8 bytes long).
bool moveNext()
It moves the internal pointer to the next item of the collection.
A dataset is the unit of information manipulated by the data access module of TerraLib.
Definition: DataSet.h:114
A base class for values that can be retrieved from the data access module.
Definition: AbstractData.h:56
TraverseType
A dataset can be traversed in two ways:
Definition: Enums.h:54
AccessPolicy
Supported data access policies (can be used as bitfield).
Definition: Enums.h:41
boost::function3< te::dt::AbstractData *, DataSet *, const std::vector< std::size_t > &, int > AttributeConverter
The type of attribute converter functions.
TerraLib.
Implementation of an in-memory data set that contains spatiotemporal observations indexed by time and...
An auxiliary data structure for helping to control the garbage collection of C++ objects.
Definition: Holder.h:44
#define TEDATAACCESSEXPORT
You can use this macro in order to export/import classes and functions from this module.
Definition: Config.h:97