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  te::common::CharEncoding getPropertyCharEncoding(std::size_t i) const;
96 
97  std::string getDatasetNameOfProperty(std::size_t i) const;
98 
99  bool isEmpty() const;
100 
101  bool isConnected() const;
102 
103  std::size_t size() const;
104 
105  bool moveNext();
106 
107  bool movePrevious();
108 
109  bool moveBeforeFirst();
110 
111  bool moveFirst();
112 
113  bool moveLast();
114 
115  bool move(std::size_t i);
116 
117  bool isAtBegin() const;
118 
119  bool isBeforeBegin() const;
120 
121  bool isAtEnd() const;
122 
123  bool isAfterEnd() 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::auto_ptr<te::dt::ByteArray> getByteArray(std::size_t i) const;
146 
147  std::auto_ptr<te::gm::Geometry> getGeometry(std::size_t i) const;
148 
149  std::auto_ptr<te::rst::Raster> getRaster(std::size_t i) const;
150 
151  std::auto_ptr<te::dt::DateTime> getDateTime(std::size_t i) const;
152 
153  std::auto_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  int m_i; //<! The current position.
163  };
164 
165  } // end namespace da
166 } // end namespace te
167 
168 #endif // __TERRALIB_DATAACCESS_INTERNAL_FILTEREDDATASET_H
An auxiliary data structure for helping to control the garbage collection of C++ objects.
Definition: Holder.h:43
CharEncoding
Supported charsets (character encoding).
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.