2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 * @file ContactSearchEngine.h
19 * @author Kisub Song (kisubs.song@samsung.com)
24 #ifndef _PLATFORM_CONTACT_CONTACT_SEARCH_ENGINE_H_
25 #define _PLATFORM_CONTACT_CONTACT_SEARCH_ENGINE_H_
28 #include <dpl/shared_ptr.h>
29 #include <dpl/enable_shared_from_this.h>
31 #include <API/Filter/IFilterVisitor.h>
32 #include <API/Contact/IAddressBook.h>
33 #include <API/Contact/Contact.h>
34 #include <API/Contact/ContactTypes.h>
35 #include "query-svc/query-service.h"
41 class ContactSearchEngine :
42 public TizenApis::Api::Tizen::IFilterVisitor,
43 public DPL::EnableSharedFromThis<ContactSearchEngine>
52 ContactSearchEngine(ContactQueryType);
53 virtual ~ContactSearchEngine();
55 // setting search options.
56 void setCondition(TizenApis::Api::Tizen::FilterPtr filter);
57 void setAttributeOfInterest(TizenApis::Api::Contact::StringArrayPtr attr = TizenApis::Api::Contact::StringArrayPtr(NULL));
58 void setSortMode(TizenApis::Api::Tizen::SortModePtr attr = TizenApis::Api::Tizen::SortModePtr(NULL));
61 TizenApis::Api::Contact::ContactArrayPtr getContactSearchResult();
63 // inherited from IFilterVisitor
64 virtual void visitPreComposite(TizenApis::Api::Tizen::FilterType& type, int depth);
65 virtual void visitInComposite(TizenApis::Api::Tizen::FilterType& type, int depth);
66 virtual void visitPostComposite(TizenApis::Api::Tizen::FilterType& type, int depth);
67 virtual void visitAttribute(std::string& attrName,
68 TizenApis::Api::Tizen::AnyArrayPtr& matchValues,
69 std::string& matchFlag,
72 virtual void visitAttributeRange(std::string& attrName,
73 TizenApis::Api::Tizen::AnyPtr& initialValue,
74 TizenApis::Api::Tizen::AnyPtr& endValue,
78 static std::map<std::string, int> attrEnumMap;
80 ADVANCED_HANDLE m_contact_query_service;
81 TizenApis::Api::Contact::StringArrayPtr m_attributesOfInterest;
83 void visitAttributeEach(contact_attribute_e attr, TizenApis::Api::Tizen::AnyPtr& value, condition_e flag);
84 void visitAttributeID(TizenApis::Api::Tizen::AnyArrayPtr &ids);
86 contact_attribute_e getPlatformAttr(std::string attrName);
88 void setPlatformAttrValue(TizenApis::Api::Contact::Contact& contact, contact_attribute_e attr, char* val);
91 void setPhoneNumber(TizenApis::Api::Contact::ContactPtr& contact, char *number, char *type);
92 void setEmailAddresses(TizenApis::Api::Contact::ContactPtr& contact, char *email, char *type);
93 void setUrlAddresses(TizenApis::Api::Contact::ContactPtr& contact, char *url, char *type);
94 void setAddresses(TizenApis::Api::Contact::ContactPtr& contact, char *country, char *region, char* city, char *county, char *street, char *postal_code, char *additional);
95 void setEvent(TizenApis::Api::Contact::ContactPtr& contact, char *date, char *type);
96 void setOrganization(TizenApis::Api::Contact::ContactPtr& contact, char* org_name, char* org_dept, char* org_title, char* org_role);
99 void tokenize(const std::string& str, std::vector<std::string>& tokens, const std::string& delimiters = " ");
100 bool toBool(char* val);
101 std::tm toDateTm(char* arg);
102 std::string toDateDbStr(const std::tm &date) const;
103 std::tm toDateTmFromDateDbStr(const char* arg) const;
106 typedef DPL::SharedPtr<ContactSearchEngine> ContactSearchEnginePtr;
112 #endif // _PLATFORM_CONTACT_CONTACT_SEARCH_ENGINE_H_