From 8050122ff45705471c698ef1e6aa84f2465f853b Mon Sep 17 00:00:00 2001
From: Pawel Andruszkiewicz
Date: Fri, 15 May 2015 16:19:54 +0200
Subject: [PATCH] [Contact] Fix for AddressBook.find().
In case of unified address book use contacts_db_get_all_records().
Change-Id: Ibe9b13269874ca2a6b30b9cc1ed2cd4c7652df85
Signed-off-by: Pawel Andruszkiewicz
---
src/contact/addressbook.cc | 69 ++++++++++++++++++++++----------------
1 file changed, 41 insertions(+), 28 deletions(-)
diff --git a/src/contact/addressbook.cc b/src/contact/addressbook.cc
index a3742e9b..467c82d0 100644
--- a/src/contact/addressbook.cc
+++ b/src/contact/addressbook.cc
@@ -330,6 +330,7 @@ PlatformResult AddressBookBatchFunc(NativeFunction impl,
}
PlatformResult AddressBookFind(const JsonObject& args, JsonArray& array) {
+ LoggerD("Entered");
PlatformResult status = ContactUtil::CheckDBConnection();
if (status.IsError()) return status;
@@ -338,36 +339,48 @@ PlatformResult AddressBookFind(const JsonObject& args, JsonArray& array) {
long addressbook_id = common::stol(FromJson(address_book, "id"));
int error_code;
- contacts_query_h query = nullptr;
- contacts_filter_h filter = nullptr;
contacts_list_h list = nullptr;
- error_code = contacts_query_create(_contacts_contact._uri, &query);
- status =
- ContactUtil::ErrorChecker(error_code, "Failed contacts_query_create");
- if (status.IsError()) return status;
- ContactUtil::ContactsQueryHPtr query_ptr(&query,
- ContactUtil::ContactsQueryDeleter);
- error_code = contacts_filter_create(_contacts_contact._uri, &filter);
- status =
- ContactUtil::ErrorChecker(error_code, "Failed contacts_filter_create");
- if (status.IsError()) return status;
- ContactUtil::ContactsFilterPtr filter_ptr(filter,
- ContactUtil::ContactsFilterDeleter);
- error_code =
- contacts_filter_add_int(filter, _contacts_contact.address_book_id,
- CONTACTS_MATCH_EQUAL, addressbook_id);
- status =
- ContactUtil::ErrorChecker(error_code, "Failed contacts_filter_add_int");
- if (status.IsError()) return status;
- error_code = contacts_query_set_filter(query, filter);
- status =
- ContactUtil::ErrorChecker(error_code, "Failed contacts_query_set_filter");
- if (status.IsError()) return status;
- error_code = contacts_db_get_records_with_query(query, 0, 0, &list);
- status = ContactUtil::ErrorChecker(
- error_code, "Failed contacts_db_get_records_with_query");
- if (status.IsError()) return status;
+ if (IsUnified(addressbook_id)) {
+ LoggerD("calling contacts_db_get_all_records");
+ error_code = contacts_db_get_all_records(_contacts_contact._uri, 0, 0, &list);
+ status =
+ ContactUtil::ErrorChecker(error_code, "Failed contacts_db_get_all_records");
+ if (status.IsError()) {
+ LoggerD("contacts_db_get_all_records - exit with error");
+ return status;
+ }
+ } else {
+ contacts_query_h query = nullptr;
+ contacts_filter_h filter = nullptr;
+
+ error_code = contacts_query_create(_contacts_contact._uri, &query);
+ status =
+ ContactUtil::ErrorChecker(error_code, "Failed contacts_query_create");
+ if (status.IsError()) return status;
+ ContactUtil::ContactsQueryHPtr query_ptr(&query,
+ ContactUtil::ContactsQueryDeleter);
+ error_code = contacts_filter_create(_contacts_contact._uri, &filter);
+ status =
+ ContactUtil::ErrorChecker(error_code, "Failed contacts_filter_create");
+ if (status.IsError()) return status;
+ ContactUtil::ContactsFilterPtr filter_ptr(filter,
+ ContactUtil::ContactsFilterDeleter);
+ error_code =
+ contacts_filter_add_int(filter, _contacts_contact.address_book_id,
+ CONTACTS_MATCH_EQUAL, addressbook_id);
+ status =
+ ContactUtil::ErrorChecker(error_code, "Failed contacts_filter_add_int");
+ if (status.IsError()) return status;
+ error_code = contacts_query_set_filter(query, filter);
+ status =
+ ContactUtil::ErrorChecker(error_code, "Failed contacts_query_set_filter");
+ if (status.IsError()) return status;
+ error_code = contacts_db_get_records_with_query(query, 0, 0, &list);
+ status = ContactUtil::ErrorChecker(
+ error_code, "Failed contacts_db_get_records_with_query");
+ if (status.IsError()) return status;
+ }
ContactUtil::ContactsListHPtr list_ptr(&list,
ContactUtil::ContactsListDeleter);
--
2.34.1