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. */
79  ~FilteredDataSet();
80 
81  //@}
82 
83  te::common::TraverseType getTraverseType() const;
84 
85  te::common::AccessPolicy getAccessPolicy() const;
86 
87  std::auto_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 
107  bool moveBeforeFirst();
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  char getChar(std::size_t i) const;
124 
125  unsigned char getUChar(std::size_t i) const;
126 
127  boost::int16_t getInt16(std::size_t i) const;
128 
129  boost::int32_t getInt32(std::size_t i) const;
130 
131  boost::int64_t getInt64(std::size_t i) const;
132 
133  bool getBool(std::size_t i) const;
134 
135  float getFloat(std::size_t i) const;
136 
137  double getDouble(std::size_t i) const;
138 
139  std::string getNumeric(std::size_t i) const;
140 
141  std::string getString(std::size_t i) const;
142 
143  std::auto_ptr<te::dt::ByteArray> getByteArray(std::size_t i) const;
144 
145  std::auto_ptr<te::gm::Geometry> getGeometry(std::size_t i) const;
146 
147  std::auto_ptr<te::rst::Raster> getRaster(std::size_t i) const;
148 
149  std::auto_ptr<te::dt::DateTime> getDateTime(std::size_t i) const;
150 
151  std::auto_ptr<te::dt::Array> getArray(std::size_t i) const;
152 
153  bool isNull(std::size_t i) const;
154 
155  private:
156 
157  te::common::Holder<DataSet> m_ds; //!< A pointer to the DataSet that will be filtered.
158  DataSetCapabilities m_capabilites; //<! The capabilities of the DataSet that will be filtered.
159  std::vector<std::size_t> m_positions; //!< The data set positions that actually will be accessed.
160  int m_i; //<! The current position.
161  };
162 
163  } // end namespace da
164 } // end namespace te
165 
166 #endif // __TERRALIB_DATAACCESS_INTERNAL_FILTEREDDATASET_H
An auxiliary data structure for helping to control the garbage collection of C++ objects.
Definition: Holder.h:43
std::vector< std::size_t > m_positions
The data set positions that actually will be accessed.
DataSetCapabilities m_capabilites
A class that informs what the dataset implementation of a given data source can perform.
AccessPolicy
Supported data access policies (can be used as bitfield).
Definition: Enums.h:40
TraverseType
A dataset can be traversed in two ways:
Definition: Enums.h:53
te::da::DataSourceCapabilities capabilities
URI C++ Library.
A class that informs what the dataset implementation of a given data source can perform.
This class represents a filtered data set.
A dataset is the unit of information manipulated by the data access module of TerraLib.
Definition: DataSet.h:112
te::common::Holder< DataSet > m_ds
A pointer to the DataSet that will be filtered.
#define TEDATAACCESSEXPORT
You can use this macro in order to export/import classes and functions from this module.
Definition: Config.h:97
A dataset is the unit of information manipulated by the data access module of TerraLib.