Loading...
Searching...
No Matches
DataSet.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/postgis/DataSet.h
22
23 \brief Implementation of a dataset for the PostGIS driver.
24*/
25
26#ifndef __TERRALIB_POSTGIS_INTERNAL_DATASET_H
27#define __TERRALIB_POSTGIS_INTERNAL_DATASET_H
28
29// TerraLib
30#include "../dataaccess/dataset/DataSet.h"
31#include "Connection.h"
32#include "Config.h"
33
34// Forward declaration for libpq
35//extern "C"
36//{
37// struct pg_conn;
38// typedef struct pg_conn PGconn;
39// struct pg_result;
40// typedef struct pg_result PGresult;
41//}
42
43namespace te
44{
45// Forward declarations
46 namespace da
47 {
48 class DataSource;
49 class GeometryProperty;
50 }
51
52 namespace pgis
53 {
54 /*!
55 \class DataSet
56
57 \brief Implementation of a dataset for the PostGIS driver.
58
59 \sa te::da::DataSet
60 */
62 {
63 public:
64
65 /*!
66 \brief Constructor.
67
68 \param result The internal PGresult.
69 \param ds The data source.
70 \param timeIsInteger A flag that indicates if the postgis stores, internally, the time and timestamp as an integer.
71 \param ce The connection character encoding.
72 */
74 const std::vector<int>& ptypes,
75 bool timeIsInteger = true);
76
77 /*! \brief The destructor will clear the internal PGresult. */
79
81
83
84 std::size_t getNumProperties() const;
85
86 int getPropertyDataType(std::size_t i) const;
87
88 std::string getPropertyName(std::size_t i) const;
89
90 std::string getDatasetNameOfProperty(std::size_t i) const;
91
92 bool isEmpty() const;
93
94 bool isConnected() const;
95
96 std::size_t size() const;
97
98 std::unique_ptr<te::gm::Envelope> getExtent(std::size_t i);
99
100 bool moveNext();
101
103
105
106 bool moveFirst();
107
108 bool moveLast();
109
110 bool move(std::size_t i);
111
112 bool isAtBegin() const;
113
114 bool isBeforeBegin() const;
115
116 bool isAtEnd() const;
117
118 bool isAfterEnd() const;
119
120 bool isPositionValid() const;
121
122 char getChar(std::size_t i) const;
123
124 unsigned char getUChar(std::size_t i) const;
125
126 boost::int16_t getInt16(std::size_t i) const;
127
128 boost::int32_t getInt32(std::size_t i) const;
129
130 boost::int64_t getInt64(std::size_t i) const;
131
132 bool getBool(std::size_t i) const;
133
134 float getFloat(std::size_t i) const;
135
136 double getDouble(std::size_t i) const;
137
138 std::string getNumeric(std::size_t i) const;
139
140 std::string getString(std::size_t i) const;
141
142 std::unique_ptr<te::dt::ByteArray> getByteArray(std::size_t i) const;
143
144 std::unique_ptr<te::gm::Geometry> getGeometry(std::size_t i) const;
145
146 std::unique_ptr<te::rst::Raster> getRaster(std::size_t i) const;
147
148 std::unique_ptr<te::dt::DateTime> getDateTime(std::size_t i) const;
149
150 std::unique_ptr<te::dt::Array> getArray(std::size_t i) const;
151
152 bool isNull(std::size_t i) const;
153
154 /** @name PostGIS Extended Methods
155 * Methods that exists only in the PostGIS DataSet implementation.
156 */
157 //@{
158
159 /*!
160 \brief It returns the internal pg result.
161
162 \return The internal pg result.
163 */
164 PGresult* getPGResult() const { return m_result; }
165
166 //@}
167
168 protected:
169
170 int m_i; //!< The index of the current row.
171 int m_size; //!< The number of datasets in the collection.
172 PGresult* m_result; //!< The internal buffer with the result query.
173 std::vector<int> m_ptypes; //!< The list of property types.
174 te::gm::Envelope* m_mbr; //!< The dataset extent.
175 bool m_timeIsInteger; //!< It indicates if the postgis stores, internally, the time and timestamp as an integer.
176 };
177
178 } // end namespace pgis
179} // end namespace te
180
181
182#endif // __TERRALIB_POSTGIS_INTERNAL_DATASET_H
A dataset is the unit of information manipulated by the data access module of TerraLib.
Definition: DataSet.h:114
An Envelope defines a 2D rectangular region.
Definition: Envelope.h:52
Implementation of a dataset for the PostGIS driver.
Definition: DataSet.h:62
bool isPositionValid() const
It tells if the dataset internal pointer is on a valid position.
bool moveBeforeFirst()
It moves the internal pointer to a position before the first item in the collection.
te::gm::Envelope * m_mbr
The dataset extent.
Definition: DataSet.h:174
bool isNull(std::size_t i) const
It checks if the attribute value is NULL.
std::vector< int > m_ptypes
The list of property types.
Definition: DataSet.h:173
te::common::TraverseType getTraverseType() const
It returns the traverse type associated to the dataset.
PGresult * getPGResult() const
It returns the internal pg result.
Definition: DataSet.h:164
bool isBeforeBegin() const
It tells if the dataset internal pointer is in a position before the first element of the collection ...
std::unique_ptr< te::gm::Geometry > getGeometry(std::size_t i) const
Method for retrieving a geometric attribute value.
bool isEmpty() const
It returns true if the collection is empty.
~DataSet()
The destructor will clear the internal PGresult.
bool isAtEnd() const
It tells if the dataset internal pointer is on the last element of the collection.
std::unique_ptr< te::dt::DateTime > getDateTime(std::size_t i) const
Method for retrieving a date and time attribute value.
bool isAfterEnd() const
It tells if the dataset internal pointer is on the sentinel position after the last element of the co...
std::string getString(std::size_t i) const
Method for retrieving a string value attribute.
std::string getPropertyName(std::size_t i) const
It returns the property name at position pos.
std::size_t getNumProperties() const
It returns the number of properties that composes an item of the dataset.
unsigned char getUChar(std::size_t i) const
Method for retrieving an unsigned character attribute value (1 byte long).
te::common::AccessPolicy getAccessPolicy() const
It returns the read and write permission associated to the dataset.
boost::int32_t getInt32(std::size_t i) const
Method for retrieving a 32-bit integer attribute value (4 bytes long).
int m_i
The index of the current row.
Definition: DataSet.h:170
bool moveLast()
It sets the dataset internal pointer to the last item in the collection.
double getDouble(std::size_t i) const
Method for retrieving a double attribute value.
boost::int16_t getInt16(std::size_t i) const
Method for retrieving a 16-bit integer attribute value (2 bytes long).
std::string getDatasetNameOfProperty(std::size_t i) const
It returns the underlying dataset name of the property at position pos.
bool movePrevious()
It moves the internal pointer to the previous item of the collection.
float getFloat(std::size_t i) const
Method for retrieving a float attribute value.
int getPropertyDataType(std::size_t i) const
It returns the underlying data type of the property at position pos.
std::unique_ptr< te::dt::ByteArray > getByteArray(std::size_t i) const
Method for retrieving a byte array.
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.
bool move(std::size_t i)
It moves the dataset internal pointer to a given position.
bool isAtBegin() const
It tells if the dataset internal pointer is on the first element of the collection or not.
std::unique_ptr< te::dt::Array > getArray(std::size_t i) const
Method for retrieving an array.
bool moveFirst()
It moves the internal pointer to the first item in the collection.
bool m_timeIsInteger
It indicates if the postgis stores, internally, the time and timestamp as an integer.
Definition: DataSet.h:175
std::unique_ptr< te::rst::Raster > getRaster(std::size_t i) const
Method for retrieving a raster attribute value.
int m_size
The number of datasets in the collection.
Definition: DataSet.h:171
std::size_t size() const
It returns the collection size, if it is known.
PGresult * m_result
The internal buffer with the result query.
Definition: DataSet.h:172
DataSet(PGresult *result, const std::vector< int > &ptypes, bool timeIsInteger=true)
Constructor.
std::string getNumeric(std::size_t i) const
Method for retrieving a numeric attribute value.
boost::int64_t getInt64(std::size_t i) const
Method for retrieving a 64-bit integer attribute value (8 bytes long).
std::unique_ptr< te::gm::Envelope > getExtent(std::size_t i)
It computes the bounding rectangle for a spatial property of the dataset.
bool moveNext()
It moves the internal pointer to the next item of the collection.
char getChar(std::size_t i) const
Method for retrieving a signed character attribute value (1 byte long).
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.
A class that implements a connection to a PostgreSQL database.
struct pg_result PGresult
Definition: Connection.h:48
#define TEPGISEXPORT
You can use this macro in order to export/import classes and functions from this module.
Definition: Config.h:195
Proxy configuration file for TerraView (see terraview_config.h).