FilteredDataSet.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/FilteredDataSet.h
22 
23  \brief This class represents a filtered data set.
24 */
25 
26 #ifndef __TERRALIB_DATAACCESS_INTERNAL_FILTEREDDATASET_H
27 #define __TERRALIB_DATAACCESS_INTERNAL_FILTEREDDATASET_H
28 
29 // TerraLib
30 #include "../../common/Holder.h"
31 #include "../Config.h"
32 #include "DataSet.h"
33 #include "DataSetCapabilities.h"
34 
35 // STL
36 #include <vector>
37 
38 namespace te
39 {
40  namespace da
41  {
42  /*!
43  \class FilteredDataSet
44 
45  \brief This class represents a filtered data set.
46 
47  \sa DataSet
48  */
50  {
51  public:
52 
53  /** @name Constructor/Destructor
54  * Initilizer methods.
55  */
56  //@{
57 
58  /*!
59  \brief Constructor.
60 
61  \param dataset A pointer to the DataSet that will be filtered.
62  \param positions The data set positions that actually will be accessed.
63  \param isOwner If true the FilteredDataSet will have the ownership of the given data set pointer.
64  */
65  FilteredDataSet(DataSet* dataset, const std::vector<std::size_t>& positions, bool isOwner = false);
66 
67  /*!
68  \brief Constructor.
69 
70  \param dataset A pointer to the DataSet that will be filtered.
71  \param capabilities The capabilities of the DataSet that will be filtered.
72  \param positions The data set positions that actually will be accessed.
73  \param isOwner If true the FilteredDataSet will have the ownership of the given data set pointer.
74  */
76  const std::vector<std::size_t>& positions, bool isOwner = false);
77 
78  /*! \brief Destructor. */
80 
81  //@}
82 
84 
86 
87  std::unique_ptr<te::gm::Envelope> getExtent(std::size_t i);
88 
89  std::size_t getNumProperties() const;
90 
91  int getPropertyDataType(std::size_t i) const;
92 
93  std::string getPropertyName(std::size_t i) const;
94 
95  std::string getDatasetNameOfProperty(std::size_t i) const;
96 
97  bool isEmpty() const;
98 
99  bool isConnected() const;
100 
101  std::size_t size() const;
102 
103  bool moveNext();
104 
105  bool movePrevious();
106 
108 
109  bool moveFirst();
110 
111  bool moveLast();
112 
113  bool move(std::size_t i);
114 
115  bool isAtBegin() const;
116 
117  bool isBeforeBegin() const;
118 
119  bool isAtEnd() const;
120 
121  bool isAfterEnd() const;
122 
123  bool isPositionValid() const;
124 
125  char getChar(std::size_t i) const;
126 
127  unsigned char getUChar(std::size_t i) const;
128 
129  boost::int16_t getInt16(std::size_t i) const;
130 
131  boost::int32_t getInt32(std::size_t i) const;
132 
133  boost::int64_t getInt64(std::size_t i) const;
134 
135  bool getBool(std::size_t i) const;
136 
137  float getFloat(std::size_t i) const;
138 
139  double getDouble(std::size_t i) const;
140 
141  std::string getNumeric(std::size_t i) const;
142 
143  std::string getString(std::size_t i) const;
144 
145  std::unique_ptr<te::dt::ByteArray> getByteArray(std::size_t i) const;
146 
147  std::unique_ptr<te::gm::Geometry> getGeometry(std::size_t i) const;
148 
149  std::unique_ptr<te::rst::Raster> getRaster(std::size_t i) const;
150 
151  std::unique_ptr<te::dt::DateTime> getDateTime(std::size_t i) const;
152 
153  std::unique_ptr<te::dt::Array> getArray(std::size_t i) const;
154 
155  bool isNull(std::size_t i) const;
156 
157  private:
158 
159  te::common::Holder<DataSet> m_ds; //!< A pointer to the DataSet that will be filtered.
160  DataSetCapabilities m_capabilites; //<! The capabilities of the DataSet that will be filtered.
161  std::vector<std::size_t> m_positions; //!< The data set positions that actually will be accessed.
162  std::size_t m_i; //<! The current position.
163  };
164 
165  } // end namespace da
166 } // end namespace te
167 
168 #endif // __TERRALIB_DATAACCESS_INTERNAL_FILTEREDDATASET_H
te::da::FilteredDataSet::m_i
std::size_t m_i
Definition: FilteredDataSet.h:162
te
TerraLib.
Definition: AddressGeocodingOp.h:52
te::da::FilteredDataSet::isBeforeBegin
bool isBeforeBegin() const
It tells if the dataset internal pointer is in a position before the first element of the collection ...
te::da::FilteredDataSet::getNumeric
std::string getNumeric(std::size_t i) const
Method for retrieving a numeric attribute value.
DataSetCapabilities.h
A class that informs what the dataset implementation of a given data source can perform.
te::da::FilteredDataSet::isAtBegin
bool isAtBegin() const
It tells if the dataset internal pointer is on the first element of the collection or not.
te::da::FilteredDataSet::moveLast
bool moveLast()
It sets the dataset internal pointer to the last item in the collection.
te::da::FilteredDataSet::move
bool move(std::size_t i)
It moves the dataset internal pointer to a given position.
te::da::FilteredDataSet::getInt16
boost::int16_t getInt16(std::size_t i) const
Method for retrieving a 16-bit integer attribute value (2 bytes long).
te::da::FilteredDataSet::getInt64
boost::int64_t getInt64(std::size_t i) const
Method for retrieving a 64-bit integer attribute value (8 bytes long).
te::da::FilteredDataSet::getNumProperties
std::size_t getNumProperties() const
It returns the number of properties that composes an item of the dataset.
te::common::TraverseType
TraverseType
A dataset can be traversed in two ways:
Definition: Enums.h:54
te::da::FilteredDataSet::FilteredDataSet
FilteredDataSet(DataSet *dataset, const std::vector< std::size_t > &positions, bool isOwner=false)
Constructor.
te::da::FilteredDataSet::getByteArray
std::unique_ptr< te::dt::ByteArray > getByteArray(std::size_t i) const
Method for retrieving a byte array.
te::da::FilteredDataSet::getDouble
double getDouble(std::size_t i) const
Method for retrieving a double attribute value.
te::da::FilteredDataSet::isNull
bool isNull(std::size_t i) const
It checks if the attribute value is NULL.
te::da::FilteredDataSet::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::FilteredDataSet::getString
std::string getString(std::size_t i) const
Method for retrieving a string value attribute.
te::da::FilteredDataSet::getTraverseType
te::common::TraverseType getTraverseType() const
It returns the traverse type associated to the dataset.
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::FilteredDataSet::moveFirst
bool moveFirst()
It moves the internal pointer to the first item in the collection.
te::da::FilteredDataSet::getDateTime
std::unique_ptr< te::dt::DateTime > getDateTime(std::size_t i) const
Method for retrieving a date and time attribute value.
te::da::FilteredDataSet::getInt32
boost::int32_t getInt32(std::size_t i) const
Method for retrieving a 32-bit integer attribute value (4 bytes long).
capabilities
te::da::DataSourceCapabilities capabilities
Definition: PostGISCapabilities.h:129
te::da::FilteredDataSet::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::FilteredDataSet::m_positions
std::vector< std::size_t > m_positions
The data set positions that actually will be accessed.
Definition: FilteredDataSet.h:161
te::da::FilteredDataSet::isPositionValid
bool isPositionValid() const
It tells if the dataset internal pointer is on a valid position.
te::da::FilteredDataSet::getArray
std::unique_ptr< te::dt::Array > getArray(std::size_t i) const
Method for retrieving an array.
te::da::FilteredDataSet::movePrevious
bool movePrevious()
It moves the internal pointer to the previous item of the collection.
te::da::FilteredDataSet::m_capabilites
DataSetCapabilities m_capabilites
Definition: FilteredDataSet.h:160
te::da::FilteredDataSet::isAtEnd
bool isAtEnd() const
It tells if the dataset internal pointer is on the last element of the collection.
te::da::FilteredDataSet::getBool
bool getBool(std::size_t i) const
Method for retrieving a boolean attribute value.
te::da::FilteredDataSet::getPropertyName
std::string getPropertyName(std::size_t i) const
It returns the property name at position pos.
te::da::FilteredDataSet::moveNext
bool moveNext()
It moves the internal pointer to the next item of the collection.
te::da::FilteredDataSet::~FilteredDataSet
~FilteredDataSet()
Destructor.
te::da::FilteredDataSet
This class represents a filtered data set.
Definition: FilteredDataSet.h:50
te::da::FilteredDataSet::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::FilteredDataSet::getAccessPolicy
te::common::AccessPolicy getAccessPolicy() const
It returns the read and write permission associated to the dataset.
te::da::FilteredDataSet::size
std::size_t size() const
It returns the collection size, if it is known.
te::da::FilteredDataSet::getGeometry
std::unique_ptr< te::gm::Geometry > getGeometry(std::size_t i) const
Method for retrieving a geometric attribute value.
te::da::FilteredDataSet::getFloat
float getFloat(std::size_t i) const
Method for retrieving a float attribute value.
te::da::FilteredDataSet::getPropertyDataType
int getPropertyDataType(std::size_t i) const
It returns the underlying data type of the property at position pos.
te::common::Holder
An auxiliary data structure for helping to control the garbage collection of C++ objects.
Definition: Holder.h:44
te::da::FilteredDataSet::getDatasetNameOfProperty
std::string getDatasetNameOfProperty(std::size_t i) const
It returns the underlying dataset name of the property at position pos.
te::da::FilteredDataSet::moveBeforeFirst
bool moveBeforeFirst()
It moves the internal pointer to a position before the first item in the collection.
te::da::FilteredDataSet::isEmpty
bool isEmpty() const
It returns true if the collection is empty.
te::da::DataSetCapabilities
A class that informs what the dataset implementation of a given data source can perform.
Definition: DataSetCapabilities.h:44
te::da::DataSet
A dataset is the unit of information manipulated by the data access module of TerraLib.
Definition: DataSet.h:114
te::da::FilteredDataSet::getRaster
std::unique_ptr< te::rst::Raster > getRaster(std::size_t i) const
Method for retrieving a raster attribute value.
te::da::FilteredDataSet::getChar
char getChar(std::size_t i) const
Method for retrieving a signed character attribute value (1 byte long).
te::da::FilteredDataSet::FilteredDataSet
FilteredDataSet(DataSet *dataset, const DataSetCapabilities &capabilities, const std::vector< std::size_t > &positions, bool isOwner=false)
Constructor.
te::common::AccessPolicy
AccessPolicy
Supported data access policies (can be used as bitfield).
Definition: Enums.h:41
te::da::FilteredDataSet::m_ds
te::common::Holder< DataSet > m_ds
A pointer to the DataSet that will be filtered.
Definition: FilteredDataSet.h:159
DataSet.h
Implementation of an in-memory data set that contains spatiotemporal observations indexed by time and...
te::da::FilteredDataSet::getUChar
unsigned char getUChar(std::size_t i) const
Method for retrieving an unsigned character attribute value (1 byte long).