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 
38 namespace 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 
99  bool movePrevious();
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 
178  te::dt::AbstractData* getAdaptedValue(std::size_t i) const;
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
te::da::DataSetAdapter::isPositionValid
bool isPositionValid() const
It tells if the dataset internal pointer is on a valid position.
te::da::DataSetAdapter::getUChar
unsigned char getUChar(std::size_t i) const
Method for retrieving an unsigned character attribute value (1 byte long).
te::da::DataSetAdapter::getRaster
std::unique_ptr< te::rst::Raster > getRaster(std::size_t i) const
Method for retrieving a raster attribute value.
te
TerraLib.
Definition: AddressGeocodingOp.h:52
te::da::DataSetAdapter::isAtBegin
bool isAtBegin() const
It tells if the dataset internal pointer is on the first element of the collection or not.
te::da::DataSetAdapter::isEmpty
bool isEmpty() const
It returns true if the collection is empty.
te::da::DataSetAdapter::getDatasetNameOfProperty
std::string getDatasetNameOfProperty(std::size_t pos) const
It returns the underlying dataset name of the property at position pos.
te::da::DataSetAdapter::getDouble
double getDouble(std::size_t i) const
Method for retrieving a double attribute value.
AttributeConverters.h
Definition of attribute converter and a set of them.
te::da::DataSetAdapter::m_propertyIndexes
std::vector< std::vector< std::size_t > > m_propertyIndexes
A vector that stores the adapted property indexes.
Definition: DataSetAdapter.h:187
te::da::DataSetAdapter::getAdaptedValue
te::dt::AbstractData * getAdaptedValue(std::size_t i) const
te::da::DataSetAdapter::getNumProperties
std::size_t getNumProperties() const
It returns the number of properties that composes an item of the dataset.
te::da::DataSetAdapter::getByteArray
std::unique_ptr< te::dt::ByteArray > getByteArray(std::size_t i) const
Method for retrieving a byte array.
te::da::DataSetAdapter::DataSetAdapter
DataSetAdapter(DataSet *dataset, bool isOwner=false)
Constructor.
te::da::DataSetAdapter::getArray
std::unique_ptr< te::dt::Array > getArray(std::size_t i) const
Method for retrieving an array.
te::da::DataSetAdapter::getInt64
boost::int64_t getInt64(std::size_t i) const
Method for retrieving a 64-bit integer attribute value (8 bytes long).
te::da::DataSetAdapter::getString
std::string getString(std::size_t i) const
Method for retrieving a string value attribute.
te::da::DataSetAdapter::getInt16
boost::int16_t getInt16(std::size_t i) const
Method for retrieving a 16-bit integer attribute value (2 bytes long).
te::da::DataSetAdapter::getInt32
boost::int32_t getInt32(std::size_t i) const
Method for retrieving a 32-bit integer attribute value (4 bytes long).
te::common::TraverseType
TraverseType
A dataset can be traversed in two ways:
Definition: Enums.h:54
te::da::DataSetAdapter::~DataSetAdapter
~DataSetAdapter()
Destructor.
te::da::DataSetAdapter::isAfterEnd
bool isAfterEnd() const
It tells if the dataset internal pointer is on the sentinel position after the last element of the co...
te::da::DataSetAdapter::size
std::size_t size() const
It returns the collection size, if it is known.
te::da::DataSetAdapter::m_ds
te::common::Holder< DataSet > m_ds
A pointer to the DataSet that will be handled by adapter.
Definition: DataSetAdapter.h:186
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::DataSetAdapter::isBeforeBegin
bool isBeforeBegin() const
It tells if the dataset internal pointer is in a position before the first element of the collection ...
te::da::DataSetAdapter::getBool
bool getBool(std::size_t i) const
Method for retrieving a boolean attribute value.
te::da::DataSetAdapter::getAdaptee
te::da::DataSet * getAdaptee() const
This method returns the pointer to the DataSet that is handled by adapter.
te::da::DataSetAdapter
An adapter for DataSet.
Definition: DataSetAdapter.h:53
te::da::DataSetAdapter::m_datatypes
std::vector< int > m_datatypes
The datatype for each property.
Definition: DataSetAdapter.h:184
te::da::DataSetAdapter::isConnected
bool isConnected() const
It returns true if the dataset is connected and false if it is disconnected. A dataset can be connect...
te::da::DataSetAdapter::isAtEnd
bool isAtEnd() const
It tells if the dataset internal pointer is on the last element of the collection.
te::da::DataSetAdapter::getDateTime
std::unique_ptr< te::dt::DateTime > getDateTime(std::size_t i) const
Method for retrieving a date and time attribute value.
te::da::DataSetAdapter::movePrevious
bool movePrevious()
It moves the internal pointer to the previous item of the collection.
te::da::DataSetAdapter::getChar
char getChar(std::size_t i) const
Method for retrieving a signed character attribute value (1 byte long).
te::da::DataSetAdapter::isNull
bool isNull(std::size_t i) const
It checks if the attribute value is NULL.
te::da::DataSetAdapter::getFloat
float getFloat(std::size_t i) const
Method for retrieving a float attribute value.
te::da::DataSetAdapter::moveNext
bool moveNext()
It moves the internal pointer to the next item of the collection.
te::da::DataSetAdapter::getAccessPolicy
te::common::AccessPolicy getAccessPolicy() const
It returns the read and write permission associated to the dataset.
te::dt::AbstractData
A base class for values that can be retrieved from the data access module.
Definition: AbstractData.h:56
te::da::DataSetAdapter::add
void add(const std::string &newPropertyName, int newPropertyType, const std::vector< std::size_t > &adaptedPropertyPos, AttributeConverter conv)
te::common::Holder
An auxiliary data structure for helping to control the garbage collection of C++ objects.
Definition: Holder.h:44
te::da::DataSetAdapter::getGeometry
std::unique_ptr< te::gm::Geometry > getGeometry(std::size_t i) const
Method for retrieving a geometric attribute value.
te::da::DataSet
A dataset is the unit of information manipulated by the data access module of TerraLib.
Definition: DataSet.h:114
te::da::DataSetAdapter::moveLast
bool moveLast()
It sets the dataset internal pointer to the last item in the collection.
te::da::DataSetAdapter::moveFirst
bool moveFirst()
It moves the internal pointer to the first item in the collection.
te::da::DataSetAdapter::getTraverseType
te::common::TraverseType getTraverseType() const
It returns the traverse type associated to the dataset.
te::da::DataSetAdapter::m_pnames
std::vector< std::string > m_pnames
The name for each property.
Definition: DataSetAdapter.h:185
te::da::DataSetAdapter::getNumeric
std::string getNumeric(std::size_t i) const
Method for retrieving a numeric attribute value.
te::da::AttributeConverter
boost::function3< te::dt::AbstractData *, DataSet *, const std::vector< std::size_t > &, int > AttributeConverter
The type of attribute converter functions.
Definition: AttributeConverters.h:51
te::da::DataSetAdapter::getExtent
std::unique_ptr< te::gm::Envelope > getExtent(std::size_t i)
It computes the bounding rectangle for a spatial property of the dataset.
te::da::DataSetAdapter::move
bool move(std::size_t i)
It moves the dataset internal pointer to a given position.
te::da::DataSetAdapter::getPropertyDataType
int getPropertyDataType(std::size_t pos) const
It returns the underlying data type of the property at position pos.
te::da::DataSetAdapter::moveBeforeFirst
bool moveBeforeFirst()
It moves the internal pointer to a position before the first item in the collection.
te::da::DataSetAdapter::getPropertyName
std::string getPropertyName(std::size_t pos) const
It returns the property name at position pos.
te::common::AccessPolicy
AccessPolicy
Supported data access policies (can be used as bitfield).
Definition: Enums.h:41
DataSet.h
Implementation of an in-memory data set that contains spatiotemporal observations indexed by time and...
te::da::DataSetAdapter::m_converters
std::vector< AttributeConverter > m_converters
A vector that stores the attribute converters functions.
Definition: DataSetAdapter.h:188