Loading...
Searching...
No Matches
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
38namespace 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
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
A class that informs what the dataset implementation of a given data source can perform.
te::da::DataSourceCapabilities capabilities
A class that informs what the dataset implementation of a given data source can perform.
A dataset is the unit of information manipulated by the data access module of TerraLib.
Definition: DataSet.h:114
This class represents a filtered data set.
bool isConnected() const
It returns true if the dataset is connected and false if it is disconnected. A dataset can be connect...
bool getBool(std::size_t i) const
Method for retrieving a boolean attribute value.
te::common::Holder< DataSet > m_ds
A pointer to the DataSet that will be filtered.
FilteredDataSet(DataSet *dataset, const std::vector< std::size_t > &positions, bool isOwner=false)
Constructor.
bool isAfterEnd() const
It tells if the dataset internal pointer is on the sentinel position after the last element of the co...
std::unique_ptr< te::dt::ByteArray > getByteArray(std::size_t i) const
Method for retrieving a byte array.
te::common::AccessPolicy getAccessPolicy() const
It returns the read and write permission associated to the dataset.
std::string getPropertyName(std::size_t i) const
It returns the property name at position pos.
char getChar(std::size_t i) const
Method for retrieving a signed character attribute value (1 byte long).
FilteredDataSet(DataSet *dataset, const DataSetCapabilities &capabilities, const std::vector< std::size_t > &positions, bool isOwner=false)
Constructor.
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 movePrevious()
It moves the internal pointer to the previous item of the collection.
~FilteredDataSet()
Destructor.
boost::int32_t getInt32(std::size_t i) const
Method for retrieving a 32-bit integer attribute value (4 bytes long).
DataSetCapabilities m_capabilites
bool moveNext()
It moves the internal pointer to the next item of the collection.
bool moveFirst()
It moves the internal pointer to the first item in the collection.
bool moveLast()
It sets the dataset internal pointer to the last item in the collection.
bool isNull(std::size_t i) const
It checks if the attribute value is NULL.
std::unique_ptr< te::gm::Geometry > getGeometry(std::size_t i) const
Method for retrieving a geometric attribute value.
int getPropertyDataType(std::size_t i) const
It returns the underlying data type of the property at position pos.
boost::int16_t getInt16(std::size_t i) const
Method for retrieving a 16-bit integer attribute value (2 bytes long).
unsigned char getUChar(std::size_t i) const
Method for retrieving an unsigned character attribute value (1 byte long).
float getFloat(std::size_t i) const
Method for retrieving a float attribute value.
std::unique_ptr< te::gm::Envelope > getExtent(std::size_t i)
It computes the bounding rectangle for a spatial property of the dataset.
std::vector< std::size_t > m_positions
The data set positions that actually will be accessed.
bool isEmpty() const
It returns true if the collection is empty.
boost::int64_t getInt64(std::size_t i) const
Method for retrieving a 64-bit integer attribute value (8 bytes long).
bool isAtBegin() const
It tells if the dataset internal pointer is on the first element of the collection or not.
bool isPositionValid() const
It tells if the dataset internal pointer is on a valid position.
std::string getDatasetNameOfProperty(std::size_t i) const
It returns the underlying dataset name of the property at position pos.
bool isBeforeBegin() const
It tells if the dataset internal pointer is in a position before the first element of the collection ...
te::common::TraverseType getTraverseType() const
It returns the traverse type associated to the dataset.
double getDouble(std::size_t i) const
Method for retrieving a double attribute value.
std::unique_ptr< te::dt::DateTime > getDateTime(std::size_t i) const
Method for retrieving a date and time attribute value.
bool move(std::size_t i)
It moves the dataset internal pointer to a given position.
std::string getNumeric(std::size_t i) const
Method for retrieving a numeric attribute value.
std::unique_ptr< te::rst::Raster > getRaster(std::size_t i) const
Method for retrieving a raster attribute value.
std::size_t size() const
It returns the collection size, if it is known.
bool isAtEnd() const
It tells if the dataset internal pointer is on the last element of the collection.
std::string getString(std::size_t i) const
Method for retrieving a string value attribute.
std::unique_ptr< te::dt::Array > getArray(std::size_t i) const
Method for retrieving an array.
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
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