ANNA Suite  2020b
Multipurpose development suite for Telco applications
Search.hpp
Go to the documentation of this file.
1 // ANNA - Anna is Not Nothingness Anymore //
2 // //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo //
4 // //
5 // See project site at http://redmine.teslayout.com/projects/anna-suite //
6 // See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
7 
8 
9 #ifndef anna_ldap_Search_hpp
10 #define anna_ldap_Search_hpp
11 
12 #include <vector>
13 
15 
16 #include <anna/ldap/defines.hpp>
17 #include <anna/ldap/Request.hpp>
18 #include <anna/ldap/Scope.hpp>
19 
20 namespace anna {
21 
22 namespace ldap {
23 
24 class Session;
25 
29 class Search : public Request {
31  typedef std::vector<std::string*> attribute_container;
32  typedef attribute_container::iterator attribute_iterator;
33 
34 public:
35  typedef attribute_container::const_iterator const_attribute_iterator;
36 
42 
47  const std::string& getBase() const { return a_base; }
48 
53  Scope::_v getScope() const { return a_scope; }
54 
59  const std::string& getFilter() const { return a_filter; }
60 
65  bool getOnlyType() const { return a_onlyType; }
66 
72  int getSizeLimit() const { return a_sizeLimit; }
73 
78  void setBase(const std::string& base) { a_base = base; }
79 
84  void setScope(const Scope::_v scope) { a_scope = scope; }
85 
91  void setScope(const char* scope) noexcept(false) { a_scope = Scope::asEnumEx(scope); }
92 
98  void setFilter(const std::string& filter) { a_filter = filter; }
99 
105  void setOnlyType(const bool onlyType) { a_onlyType = onlyType; }
106 
112  void setSizeLimit(const int sizeLimit) { a_sizeLimit = sizeLimit; }
113 
117  void clearFilter() { a_filter.clear(); }
118 
122  void clearSizeLimit() { a_sizeLimit = 0; }
123 
127  void clearAttributes() ;
128 
134  void addAttribute(const std::string& attribute) {
135  std::string* newString = st_attributes.create();
136  *newString = attribute;
137  a_attributes.push_back(newString);
138  }
139 
143  void clear() ;
144 
149  const_attribute_iterator attribute_begin() const { return a_attributes.begin(); }
150 
155  const_attribute_iterator attribute_end() const { return a_attributes.end(); }
156 
161  int attribute_size() const { return a_attributes.size(); }
162 
168  static const std::string& attribute(const_attribute_iterator ii) { return **ii; }
169 
174  virtual std::string asString() const ;
175 
181  virtual xml::Node* asXML(xml::Node* parent) const ;
182 
183 private:
184  std::string a_base;
185  Scope::_v a_scope;
186  std::string a_filter;
187  bool a_onlyType;
188  int a_sizeLimit;
189  attribute_container a_attributes;
190 
191  static attribute_pool st_attributes;
192 
193  attribute_iterator attribute_begin() { return a_attributes.begin(); }
194  attribute_iterator attribute_end() { return a_attributes.end(); }
195  int attribute_size() { return a_attributes.size(); }
196  static std::string& attribute(attribute_iterator ii) { return **ii; }
197 
198  IdMessage send(Session&) const ;
199 };
200 
201 }
202 }
203 
204 #endif
205 
Definition: Search.hpp:29
Definition: Session.hpp:38
void clearFilter()
Definition: Search.hpp:117
void setFilter(const std::string &filter)
Definition: Search.hpp:98
virtual std::string asString() const
T * create() noexcept(false)
Definition: Recycler.hpp:88
void setBase(const std::string &base)
Definition: Search.hpp:78
const std::string & getBase() const
Definition: Search.hpp:47
void addAttribute(const std::string &attribute)
Definition: Search.hpp:134
Definition: Node.hpp:56
const_attribute_iterator attribute_begin() const
Definition: Search.hpp:149
Definition: ClassCode.hpp:21
virtual xml::Node * asXML(xml::Node *parent) const
void setScope(const char *scope) noexcept(false)
Definition: Search.hpp:91
Search(const Request::OnExpiry::_v onExpiry=Request::OnExpiry::Abandon)
Definition: Search.hpp:41
void setSizeLimit(const int sizeLimit)
Definition: Search.hpp:112
void setOnlyType(const bool onlyType)
Definition: Search.hpp:105
Definition: Request.hpp:33
_v
Definition: Scope.hpp:26
void setScope(const Scope::_v scope)
Definition: Search.hpp:84
int getSizeLimit() const
Definition: Search.hpp:72
int attribute_size() const
Definition: Search.hpp:161
static const std::string & attribute(const_attribute_iterator ii)
Definition: Search.hpp:168
_v
Definition: Request.hpp:33
Definition: Request.hpp:28
const std::string & getFilter() const
Definition: Search.hpp:59
Definition: app.hpp:12
int IdMessage
Definition: defines.hpp:16
bool getOnlyType() const
Definition: Search.hpp:65
attribute_container::const_iterator const_attribute_iterator
Definition: Search.hpp:35
void clearSizeLimit()
Definition: Search.hpp:122
const_attribute_iterator attribute_end() const
Definition: Search.hpp:155
Scope::_v getScope() const
Definition: Search.hpp:53