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/ado/DataSet.h
22 
23  \brief DataSet class implementation for Microsoft Access driver.
24 */
25 
26 #ifndef __TERRALIB_ADO_INTERNAL_DATASET_H
27 #define __TERRALIB_ADO_INTERNAL_DATASET_H
28 
29 // TerraLib
30 #include "../dataaccess/dataset/DataSet.h"
31 #include "Config.h"
32 
33 // STL
34 #include <memory>
35 #include <vector>
36 
37 // ADO
38 #import "msado15.dll" \
39  no_namespace rename("EOF", "EndOfFile")
40 
41 namespace te
42 {
43  namespace da { class DataSetType; }
44 
45  namespace ado
46  {
47  class Transactor;
48 
49  /*!
50  \class DataSet
51 
52  \brief Implementation of a dataset for the ADO driver.
53 
54  \sa te::da::DataSet
55  */
57  {
58  public:
59 
60  /*!
61  \brief Constructor.
62 
63  \param transactor The transactor associated to this DataSet.
64  \param result The internal ADO _RecordsetPtr.
65  */
66  DataSet(Transactor* t, _RecordsetPtr result);
67 
68  /*! \brief The destructor will clear the internal ADO _RecordsetPtr. */
70 
72 
74 
75  std::size_t getNumProperties() const;
76 
77  int getPropertyDataType(std::size_t i) const;
78 
79  std::string getPropertyName(std::size_t i) const;
80 
81  std::string getDatasetNameOfProperty(std::size_t i) const;
82 
83  bool isEmpty() const;
84 
85  bool isConnected() const;
86 
87  std::size_t size() const;
88 
89  std::unique_ptr<te::gm::Envelope> getExtent(std::size_t i);
90 
91  bool moveNext();
92 
93  bool movePrevious();
94 
96 
97  bool moveFirst();
98 
99  bool moveLast();
100 
101  bool move(std::size_t i);
102 
103  bool isAtBegin() const;
104 
105  bool isBeforeBegin() const;
106 
107  bool isAtEnd() const;
108 
109  bool isAfterEnd() const;
110 
111  bool isPositionValid() const;
112 
113  char getChar(std::size_t i) const;
114 
115  unsigned char getUChar(std::size_t i) const;
116 
117  boost::int16_t getInt16(std::size_t i) const;
118 
119  boost::int32_t getInt32(std::size_t i) const;
120 
121  boost::int64_t getInt64(std::size_t i) const;
122 
123  bool getBool(std::size_t i) const;
124 
125  float getFloat(std::size_t i) const;
126 
127  double getDouble(std::size_t i) const;
128 
129  std::string getNumeric(std::size_t i) const;
130 
131  std::string getString(std::size_t i) const;
132 
133  std::unique_ptr<te::dt::ByteArray> getByteArray(std::size_t i) const;
134 
135  std::unique_ptr<te::gm::Geometry> getGeometry(std::size_t i) const;
136 
137  std::unique_ptr<te::rst::Raster> getRaster(std::size_t i) const;
138 
139  std::unique_ptr<te::dt::DateTime> getDateTime(std::size_t i) const;
140 
141  std::unique_ptr<te::dt::Array> getArray(std::size_t i) const;
142 
143  bool isNull(std::size_t i) const;
144 
145  protected:
146 
147  _RecordsetPtr m_result; //!< The internal buffer with the result query.
148  Transactor* m_t; //!< The DataSet Transactor.
149  std::vector<int> m_datatypes; //!< A vector of data types.
150  std::vector<std::string> m_colNames; //!< A vector of columns names.
151  int m_i; //!< The index of the current row.
152  int m_size; //!< The number of datasets in the collection.
153  int m_ncols; //!< The number of properties in the collection.
154  };
155 
156  } // end namespace ado
157 } // end namespace te
158 
159 
160 #endif // __TERRALIB_ADO_INTERNAL_DATASET_H
161 
162 
163 
Implementation of a dataset for the ADO driver.
Definition: DataSet.h:57
bool move(std::size_t i)
It moves the dataset internal pointer to a given position.
std::vector< int > m_datatypes
A vector of data types.
Definition: DataSet.h:149
_RecordsetPtr m_result
The internal buffer with the result query.
Definition: DataSet.h:147
std::unique_ptr< te::gm::Envelope > getExtent(std::size_t i)
It computes the bounding rectangle for a spatial property of the dataset.
bool movePrevious()
It moves the internal pointer to the previous item of the collection.
int getPropertyDataType(std::size_t i) const
It returns the underlying data type of the property at position pos.
std::unique_ptr< te::gm::Geometry > getGeometry(std::size_t i) const
Method for retrieving a geometric attribute value.
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).
bool isConnected() const
It returns true if the dataset is connected and false if it is disconnected. A dataset can be connect...
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.
std::string getNumeric(std::size_t i) const
Method for retrieving a numeric attribute value.
~DataSet()
The destructor will clear the internal ADO _RecordsetPtr.
bool isBeforeBegin() const
It tells if the dataset internal pointer is in a position before the first element of the collection ...
std::size_t getNumProperties() const
It returns the number of properties that composes an item of the dataset.
bool moveLast()
It sets the dataset internal pointer to the last item in the collection.
bool isAfterEnd() const
It tells if the dataset internal pointer is on the sentinel position after the last element of the co...
Transactor * m_t
The DataSet Transactor.
Definition: DataSet.h:148
float getFloat(std::size_t i) const
Method for retrieving a float attribute value.
bool isNull(std::size_t i) const
It checks if the attribute value is NULL.
std::vector< std::string > m_colNames
A vector of columns names.
Definition: DataSet.h:150
bool isAtBegin() const
It tells if the dataset internal pointer is on the first element of the collection or not.
bool getBool(std::size_t i) const
Method for retrieving a boolean attribute value.
boost::int16_t getInt16(std::size_t i) const
Method for retrieving a 16-bit integer attribute value (2 bytes long).
bool moveFirst()
It moves the internal pointer to the first item in the collection.
std::unique_ptr< te::dt::DateTime > getDateTime(std::size_t i) const
Method for retrieving a date and time attribute value.
std::string getPropertyName(std::size_t i) const
It returns the property name at position pos.
double getDouble(std::size_t i) const
Method for retrieving a double attribute value.
int m_ncols
The number of properties in the collection.
Definition: DataSet.h:153
bool isAtEnd() const
It tells if the dataset internal pointer is on the last element of the collection.
int m_size
The number of datasets in the collection.
Definition: DataSet.h:152
char getChar(std::size_t i) const
Method for retrieving a signed character attribute value (1 byte long).
std::unique_ptr< te::rst::Raster > getRaster(std::size_t i) const
Method for retrieving a raster attribute value.
bool isPositionValid() const
It tells if the dataset internal pointer is on a valid position.
bool moveNext()
It moves the internal pointer to the next item of the collection.
std::size_t size() const
It returns the collection size, if it is known.
DataSet(Transactor *t, _RecordsetPtr result)
Constructor.
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::dt::ByteArray > getByteArray(std::size_t i) const
Method for retrieving a byte array.
int m_i
The index of the current row.
Definition: DataSet.h:151
bool moveBeforeFirst()
It moves the internal pointer to a position before the first item in the collection.
te::common::TraverseType getTraverseType() const
It returns the traverse type associated to the dataset.
std::string getDatasetNameOfProperty(std::size_t i) const
It returns the underlying dataset name of the property at position pos.
unsigned char getUChar(std::size_t i) const
Method for retrieving an unsigned character attribute value (1 byte long).
bool isEmpty() const
It returns true if the collection is empty.
The transactor class for the Microsoft Access driver.
Definition: Transactor.h:63
A class that models the description of a dataset.
Definition: DataSetType.h:73
A dataset is the unit of information manipulated by the data access module of TerraLib.
Definition: DataSet.h:114
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.
#define TEADOEXPORT
You can use this macro in order to export/import classes and functions from this module.
Definition: Config.h:130
Proxy configuration file for TerraView (see terraview_config.h).