Loading...
Searching...
No Matches
QueryEncoder.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/maptools/QueryEncoder.h
22
23 \brief A visitor that converts a OGC Filter Expression to TerraLib Expression.
24 */
25
26#ifndef __TERRALIB_MAPTOOLS_INTERNAL_QUERYENCODER_H
27#define __TERRALIB_MAPTOOLS_INTERNAL_QUERYENCODER_H
28
29// TerraLib
30#include "Config.h"
31#include "../fe/Visitor.h"
32
33// STL
34#include <map>
35
36namespace te
37{
38// Forward declarations
39 namespace da
40 {
41 class Expression;
42 }
43
44 namespace map
45 {
46 /*!
47 \class QueryEncoder
48
49 \brief A visitor that converts a OGC Filter Expression to TerraLib Expression.
50
51 \sa Visitor
52 */
54 {
55 public:
56
57 /** @name Initializer Methods
58 * Methods related to instantiation and destruction of a Filter visitor.
59 */
60 //@{
61
62 /*! \brief Default constructor. */
64
65 /*! \brief Virtual destructor. */
67
68 //@}
69
70 /** @name Conversion Methods
71 * Methods that can be used to convert a OGC Filter Expression to a TerraLib Expression.
72 */
73 //@{
74
75 /*!
76 \brief It converts the OGC Filter Expression to a TerraLib Expression.
77
78 \param f A valid filter expression.
79
80 \return An equivalent TerraLib expression for the given filter.
81
82 \note The caller of this method will take the ownership of the returned expression.
83 */
85
86 //@}
87
88 /** @name Visitor Methods
89 * All concrete visitors must implement these methods.
90 */
91 //@{
92
93 void visit(const te::fe::AbstractOp& visited);
94 void visit(const te::fe::SpatialOp& visited);
95 void visit(const te::fe::ComparisonOp& visited);
96 void visit(const te::fe::LogicOp& visited);
97 void visit(const te::fe::BBOXOp& visited);
98 void visit(const te::fe::BinaryComparisonOp& visited);
99 void visit(const te::fe::BinaryLogicOp& visited);
100 void visit(const te::fe::BinarySpatialOp& visited);
101 void visit(const te::fe::DistanceBuffer& visited);
102 void visit(const te::fe::PropertyIsBetween& visited);
103 void visit(const te::fe::PropertyIsLike& visited);
104 void visit(const te::fe::PropertyIsNull& visited);
105 void visit(const te::fe::UnaryLogicOp& visited);
106 void visit(const te::fe::Expression& visited);
107 void visit(const te::fe::BinaryOperator& visited);
108 void visit(const te::fe::Function& visited);
109 void visit(const te::fe::Literal& visited);
110 void visit(const te::fe::PropertyName& visited);
111
112 //@}
113
114 private:
115
116 /*! \brief Static method to initialize the QueryEncoder. */
117 static void initialize();
118
119 private:
120
121 /** @name Not Allowed Methods
122 * No copy allowed.
123 */
124 //@{
125
126 /*!
127 \brief No copy constructor allowed.
128
129 \param rhs The other object.
130 */
132
133 /*!
134 \brief No assignment operator allowed.
135
136 \param rhs The other object.
137
138 \return A reference for this.
139 */
141
142 //@}
143
144 private:
145
146 te::da::Expression* m_expression; //!< Expression used during conversion.
147 static std::map<std::string, std::string> sm_fnameMap; //!< A map that associates Filter Operator names to Query Functions names.
148
149 friend class Module;
150 };
151
152 } // end namespace map
153} // end namespace te
154
155#endif // __TERRALIB_MAPTOOLS_INTERNAL_QUERYENCODER_H
This is an abstract class that models a query expression.
Definition: Expression.h:48
An abstract interface for operators.
Definition: AbstractOp.h:48
A convenient and more compact way of encoding the very common bounding box constraint based on an env...
Definition: BBOXOp.h:72
A class for binary comparison operators.
A logical operator can be used to combine two or more conditional expressions.
Definition: BinaryLogicOp.h:59
This class can be used to represent binary operation expressions.
A class for binary spatial operators.
A comparison operator is used to form expressions that evaluate the mathematical comparison between t...
Definition: ComparisonOp.h:50
Distance buffer operator.
This is an abstract class that models a Filter Encoding expression.
Definition: Expression.h:51
A filter is any valid predicate expression.
Definition: Filter.h:56
A function is a named procedure that performs a distinct computation.
Definition: Function.h:55
This class can be used to represent literal values.
Definition: Literal.h:57
A logical operator can be used to combine one or more conditional expressions.
Definition: LogicOp.h:53
The PropertyIsBetween element is defined as a compact way of encoding a range check.
It is intended to encode a character string comparison operator with pattern matching.
The PropertyIsNull class encodes an operator that checks to see if the value of its content is NULL.
This class is used to encode the name of any property of an object.
Definition: PropertyName.h:55
A spatial operator determines whether its geometric arguments satisfy the stated spatial relationship...
Definition: SpatialOp.h:53
A logical operator that can be used to combine one conditional expressions.
Definition: UnaryLogicOp.h:47
A visitor interface for a Filter expression.
Definition: Visitor.h:48
This singleton defines the TerraLib Map Tools module entry.
Definition: Module.h:46
A visitor that converts a OGC Filter Expression to TerraLib Expression.
Definition: QueryEncoder.h:54
void visit(const te::fe::PropertyIsNull &visited)
void visit(const te::fe::BinaryComparisonOp &visited)
void visit(const te::fe::BBOXOp &visited)
void visit(const te::fe::BinarySpatialOp &visited)
void visit(const te::fe::PropertyIsLike &visited)
void visit(const te::fe::UnaryLogicOp &visited)
void visit(const te::fe::LogicOp &visited)
te::da::Expression * m_expression
Expression used during conversion.
Definition: QueryEncoder.h:146
QueryEncoder & operator=(const QueryEncoder &rhs)
No assignment operator allowed.
void visit(const te::fe::BinaryLogicOp &visited)
QueryEncoder()
Default constructor.
void visit(const te::fe::PropertyIsBetween &visited)
void visit(const te::fe::AbstractOp &visited)
void visit(const te::fe::BinaryOperator &visited)
void visit(const te::fe::Expression &visited)
void visit(const te::fe::DistanceBuffer &visited)
void visit(const te::fe::ComparisonOp &visited)
static std::map< std::string, std::string > sm_fnameMap
A map that associates Filter Operator names to Query Functions names.
Definition: QueryEncoder.h:147
void visit(const te::fe::PropertyName &visited)
te::da::Expression * getExpression(const te::fe::Filter *f)
It converts the OGC Filter Expression to a TerraLib Expression.
void visit(const te::fe::Literal &visited)
QueryEncoder(const QueryEncoder &rhs)
No copy constructor allowed.
~QueryEncoder()
Virtual destructor.
void visit(const te::fe::SpatialOp &visited)
void visit(const te::fe::Function &visited)
static void initialize()
Static method to initialize the QueryEncoder.
TerraLib.
#define TEMAPEXPORT
You can use this macro in order to export/import classes and functions from this module.
Definition: Config.h:60
Proxy configuration file for TerraView (see terraview_config.h).