All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
SQLVisitor.cpp
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/SQLVisitor.cpp
22 
23  \brief A visitor for building an SQL statement from a given Query hierarchy.
24 */
25 
26 // TerraLib
27 #include "../dataaccess/query/LiteralByteArray.h"
28 #include "../dataaccess/query/LiteralDateTime.h"
29 #include "../dataaccess/query/LiteralEnvelope.h"
30 #include "../dataaccess/query/LiteralGeom.h"
31 #include "SQLVisitor.h"
32 #include "Utils.h"
33 
34 // STL
35 #include <cassert>
36 
38  : te::da::SQLVisitor(dialect, sql),
39  m_conn(conn)
40 {
41 }
42 
44 {
45  assert(visited.getValue() != 0);
46  assert(false); //TODO
47 }
48 
50 {
51  assert(visited.getValue() != 0);
52  assert(false); //TODO
53 }
54 
56 {
57  assert(visited.getValue() != 0);
58  Convert2PostGIS(visited.getValue(), visited.getSRID(), m_sql);
59 }
60 
62 {
63  assert(visited.getValue() != 0);
64  Convert2PostGIS(m_conn, static_cast<te::gm::Geometry*>(visited.getValue()), m_sql);
65 }
te::da::SQLDialect * dialect
Definition: WFSDialect.h:1
It represents the SQL query dialect accepted by a given data source.
Definition: SQLDialect.h:55
A visitor for building an SQL statement using PostGIS dialect.
Definition: SQLVisitor.h:52
A class that models a literal for Date and Time values.
struct pg_conn PGconn
Definition: Connection.h:45
Utility functions for PostgreSQL.
void Convert2PostGIS(const te::gm::Envelope *e, int srid, std::string &output)
It converts the envelope into a PostGIS BOX3D.
Definition: Utils.h:225
A class that models a literal for ByteArray values.
int getSRID() const
It returns the envelope SRS id.
void visit(const te::da::LiteralByteArray &visited)
Definition: SQLVisitor.cpp:43
A visitor for building an SQL statement using PostGIS dialect.
A class that models a literal for Envelope values.
SQLVisitor(const te::da::SQLDialect &dialect, std::string &sql, PGconn *conn)
Default constructor.
Definition: SQLVisitor.cpp:37
te::dt::AbstractData * getValue() const
It returns the value associated to the literal.
Definition: Literal.cpp:65
te::gm::Envelope * getValue() const
It returns the associated envelope value.
A class that models a literal for Geometry values.
Definition: LiteralGeom.h:46