[Contact] - Improving performance of the functions find 38/68938/1
authorAndrzej Popowski <a.popowski@samsung.com>
Tue, 10 May 2016 11:55:22 +0000 (13:55 +0200)
committerAndrzej Popowski <a.popowski@samsung.com>
Tue, 10 May 2016 12:05:54 +0000 (14:05 +0200)
[Verification] - TCT results 100% (459/459/0/0/0)

Change-Id: I7de61960bb809ac56b65a807d0e1bfb0cd11f66d
Signed-off-by: Andrzej Popowski <a.popowski@samsung.com>
src/contact/addressbook.cc
src/contact/contact_manager.cc
src/contact/contact_search_engine.cc
src/contact/contact_util.cc
src/contact/contact_util.h
src/contact/js/address_book.js
src/contact/js/contact_manager.js

index 25e1c2574829f4b7ebeee6e379fd6f3cd59a78b4..8431eff27d2329a1e4d6b9cfca95a9211edd8b37 100755 (executable)
@@ -73,7 +73,7 @@ PlatformResult AddressBookGet(const JsonObject& args, JsonObject& out) {
       ContactUtil::ImportContactFromContactsRecord(*contacts_record_ptr, &out);
   if (status.IsError()) return status;
 
-  status = ContactUtil::UpdateAdditionalInformation(contacts_record_ptr, &out);
+  status = ContactUtil::UpdateAdditionalInformation(*contacts_record_ptr, &out);
   if (status.IsError()) return status;
 
   return PlatformResult(ErrorCode::NO_ERROR);
@@ -131,7 +131,7 @@ PlatformResult AddressBookAdd(const JsonObject& args, JsonObject& out) {
 
   out.insert(std::make_pair("id", JsonValue{std::to_string(id)}));
 
-  status = ContactUtil::UpdateAdditionalInformation(contacts_record_ptr, &out);
+  status = ContactUtil::UpdateAdditionalInformation(*contacts_record_ptr, &out);
   if (status.IsError()) return status;
 
   return PlatformResult(ErrorCode::NO_ERROR);
@@ -178,7 +178,7 @@ PlatformResult AddressBookUpdate(const JsonObject& args, JsonObject& out) {
     }
   }
 
-  status = ContactUtil::UpdateAdditionalInformation(contacts_record_ptr, &out);
+  status = ContactUtil::UpdateAdditionalInformation(*contacts_record_ptr, &out);
   if (status.IsError()) return status;
 
   return PlatformResult(ErrorCode::NO_ERROR);
@@ -329,7 +329,7 @@ PlatformResult AddressBookUpdateBatch(const JsonObject& args, JsonArray& out) {
         to_update, JsonCast<JsonObject>(item));
     if (status.IsError()) return status;
     JsonObject out_object;
-    status = ContactUtil::UpdateAdditionalInformation(x, &out_object);
+    status = ContactUtil::UpdateAdditionalInformation(*x, &out_object);
     if (status.IsError()) return status;
     out.push_back(JsonValue{out_object});
 
index 5ec5d99582578920a8a9b5ee5850a95399f3d992..319811fbdbc09281b273785993b6980149a399ff 100755 (executable)
@@ -851,22 +851,19 @@ PlatformResult ContactManagerFind(const JsonObject& args, JsonArray& out) {
 
   for (int i = 0; i < record_count; i++) {
     contacts_record_h contacts_record;
-    error_code =
-        contacts_list_get_current_record_p(person_list, &contacts_record);
+    error_code = contacts_list_get_current_record_p(person_list, &contacts_record);
     if (error_code != CONTACTS_ERROR_NONE || contacts_record == NULL) {
       LoggerW("Failed group record (ret:%d)", error_code);
       continue;
     }
 
-    int id_value = 0;
-    error_code = contacts_record_get_int(contacts_record, _contacts_person.id,
-                                         &id_value);
-
-    status =
-        ContactUtil::ErrorChecker(error_code, "Failed contacts_record_get_int");
-    if (status.IsError()) return status;
+    JsonObject obj;
+    status = ContactUtil::ImportPersonFromContactsRecord(contacts_record, &obj);
+    if (status.IsError()) {
+      return status;
+    }
 
-    out.push_back(JsonValue(static_cast<double>(id_value)));
+    out.push_back(JsonValue(obj));
 
     contacts_list_next(person_list);
   }
@@ -1049,15 +1046,13 @@ PlatformResult ContactManagerFindByUsageCount(const JsonObject& args, JsonArray&
       continue;
     }
 
-    int id_value = 0;
-    error_code = contacts_record_get_int(contacts_record, _contacts_person_usage.person_id,
-                                         &id_value);
-
-    status =
-        ContactUtil::ErrorChecker(error_code, "Failed contacts_record_get_int");
-    if (status.IsError()) return status;
+    JsonObject obj;
+    status = ContactUtil::ImportPersonFromContactsRecord(contacts_record, &obj);
+    if (status.IsError()) {
+      return status;
+    }
 
-    out.push_back(JsonValue(static_cast<double>(id_value)));
+    out.push_back(JsonValue(obj));
 
     contacts_list_next(person_list);
   }
index e2581e9428daa3629fbe2bc19cefeb265f3ec8eb..1457318c7cbd0a11847a41f94548a6f8b9ae108e 100644 (file)
@@ -576,12 +576,19 @@ PlatformResult ContactSearchEngine::GetAllContacts(picojson::array* out) {
       continue;
     }
 
-    int id_value = 0;
-    error_code = contacts_record_get_int(record, _contacts_contact.id, &id_value);
-    status = ContactUtil::ErrorChecker(error_code, "Failed contacts_record_get_int");
-    if (!status) return status;
+    JsonObject obj;
+
+    status = ContactUtil::ImportContactFromContactsRecord(record, &obj);
+    if (!status) {
+      return status;
+    }
+
+    status = ContactUtil::UpdateAdditionalInformation(record, &obj);
+    if (!status) {
+      return status;
+    }
 
-    out->push_back(picojson::value(static_cast<double>(id_value)));
+    out->push_back(picojson::value(obj));
 
     error_code = contacts_list_next(list);
 
@@ -601,16 +608,17 @@ PlatformResult ContactSearchEngine::GetContacts(Iterator begin, Iterator end,
   for (auto iter = begin; iter != end; ++iter) {
     const auto id = *iter;
 
-    if (is_addressbook_id_is_set_) {
-      contacts_record_h record = nullptr;
-      int error_code = contacts_db_get_record(_contacts_contact._uri, id, &record);
-      if (CONTACTS_ERROR_NONE != error_code) {
-        LoggerE("Failed to get contact with ID: %d", id);
-        continue;
-      }
+    contacts_record_h record = nullptr;
+    int error_code = contacts_db_get_record(_contacts_contact._uri, id, &record);
+    if (CONTACTS_ERROR_NONE != error_code) {
+      LoggerE("Failed to get contact with ID: %d", id);
+      continue;
+    }
 
-      ContactUtil::ContactsRecordHPtr record_ptr(&record,
-                                                 ContactUtil::ContactsDeleter);
+    ContactUtil::ContactsRecordHPtr record_ptr(&record,
+                                               ContactUtil::ContactsDeleter);
+
+    if (is_addressbook_id_is_set_) {
       int address_book_id = 0;
 
       error_code = contacts_record_get_int(record,
@@ -627,7 +635,19 @@ PlatformResult ContactSearchEngine::GetContacts(Iterator begin, Iterator end,
       }
     }
 
-    out->push_back(picojson::value(static_cast<double>(id)));
+    JsonObject obj;
+
+    PlatformResult status = ContactUtil::ImportContactFromContactsRecord(record, &obj);
+    if (!status) {
+      return status;
+    }
+
+    status = ContactUtil::UpdateAdditionalInformation(*record_ptr, &obj);
+    if (!status) {
+      return status;
+    }
+
+    out->push_back(picojson::value(obj));
   }
 
   return PlatformResult(ErrorCode::NO_ERROR);
index ff55144c86dcc3adf3d3c4d6f0a9e956a7ac8758..bcccd3bfad99cd384fbfbebb57bd5bc4955242e9 100755 (executable)
@@ -3211,11 +3211,11 @@ PlatformResult ExportPersonToContactsRecord(contacts_record_h record,
 }
 
 PlatformResult UpdateAdditionalInformation(
-    const ContactsRecordHPtr& contacts_record_ptr, JsonObject* out_ptr) {
+    const contacts_record_h contacts_record, JsonObject* out_ptr) {
   JsonObject& out = *out_ptr;
   int int_value = -1;
   PlatformResult status = ContactUtil::GetIntFromRecord(
-      *contacts_record_ptr, _contacts_contact.person_id, &int_value);
+      contacts_record, _contacts_contact.person_id, &int_value);
   if (status.IsError()) {
     LoggerE("Error: %s", status.message().c_str());
     return status;
@@ -3223,7 +3223,7 @@ PlatformResult UpdateAdditionalInformation(
 
   out.insert(std::make_pair("personId", JsonValue{std::to_string(int_value)}));
   status = ContactUtil::GetIntFromRecord(
-      *contacts_record_ptr, _contacts_contact.address_book_id, &int_value);
+      contacts_record, _contacts_contact.address_book_id, &int_value);
   if (status.IsError()) {
     LoggerE("Error: %s", status.message().c_str());
     return status;
@@ -3232,7 +3232,7 @@ PlatformResult UpdateAdditionalInformation(
   out.insert(
       std::make_pair("addressBookId", JsonValue{std::to_string(int_value)}));
   status = ContactUtil::GetIntFromRecord(
-      *contacts_record_ptr, _contacts_contact.changed_time, &int_value);
+      contacts_record, _contacts_contact.changed_time, &int_value);
   if (status.IsError()) {
     LoggerE("Error: %s", status.message().c_str());
     return status;
@@ -3242,7 +3242,7 @@ PlatformResult UpdateAdditionalInformation(
       std::make_pair("lastUpdated", JsonValue{static_cast<double>(int_value)}));
   bool bool_value = false;
   status = ContactUtil::GetBoolFromRecord(
-      *contacts_record_ptr, _contacts_contact.is_favorite, &bool_value);
+      contacts_record, _contacts_contact.is_favorite, &bool_value);
   if (status.IsError()) {
     LoggerE("Error: %s", status.message().c_str());
     return status;
index f44b1f61ccbbf60da46e0230f2ea29e3be30ae60..219e2ea44ad84328510326a926b1106c3972ebf4 100644 (file)
@@ -83,7 +83,7 @@ common::PlatformResult GetNumberOfChildRecord(contacts_record_h contacts_record,
                                               int *child_count);
 
 common::PlatformResult UpdateAdditionalInformation(
-    const ContactsRecordHPtr &contacts_record_ptr, JsonObject *out);
+    const contacts_record_h contacts_record, JsonObject *out);
 
 common::PlatformResult ImportContactNameFromContactsRecord(
     contacts_record_h contacts_record, JsonObject *out, bool *is_contact_name);
index 8c368323bb8dcad04c9aa05878e2c7d597c1c32c..b99dbb1513d9b3ec8a955a73755cf909ef576bfd 100755 (executable)
@@ -97,7 +97,6 @@ var _contactChangeListener = function(result) {
   }
 };
 
-
 var AddressBook = function(accountId, name) {
   validator_.isConstructorCall(this, AddressBook);
 
@@ -161,6 +160,28 @@ var AddressBook = function(accountId, name) {
   });
 };
 
+function _prepareContact(data) {
+  return _editGuard.run(function() {
+    var contact = new Contact(data);
+
+    if (contact.name instanceof ContactName) {
+      contact.name.displayName = '';
+      if (type_.isString(contact.name.firstName)) {
+        contact.name.displayName = contact.name.firstName;
+        if (type_.isString(contact.name.lastName)) {
+          contact.name.displayName += ' ' + contact.name.lastName;
+        }
+      } else if (type_.isArray(contact.name.nicknames) &&
+          type_.isString(contact.name.nicknames[0])) {
+        contact.name.displayName = contact.name.nicknames[0];
+      } else if (type_.isString(contact.name.nicknames)) {
+        contact.name.displayName = contact.name.nicknames;
+      }
+    }
+    return contact;
+  });
+}
+
 AddressBook.prototype.get = function() {
   var args = validator_.validateArgs(arguments, [{
     name: 'id',
@@ -182,28 +203,7 @@ AddressBook.prototype.get = function() {
     throw native_.getErrorObject(result);
   }
 
-  return _editGuard.run(function() {
-    var contact = new Contact(native_.getResultObject(result));
-
-    if (contact.name instanceof ContactName) {
-      contact.name.displayName = '';
-      if (type_.isString(contact.name.firstName)) {
-        contact.name.displayName = contact.name.firstName;
-        if (type_.isString(contact.name.lastName)) {
-          contact.name.displayName += ' ' + contact.name.lastName;
-        }
-      } else if (type_.isArray(contact.name.nicknames) &&
-          type_.isString(contact.name.nicknames[0])) {
-        contact.name.displayName = contact.name.nicknames[0];
-      } else if (type_.isString(contact.name.nicknames)) {
-        contact.name.displayName = contact.name.nicknames;
-      }
-    }
-
-
-
-    return contact;
-  });
+  return _prepareContact(native_.getResultObject(result));
 };
 
 AddressBook.prototype.add = function() {
@@ -510,9 +510,8 @@ AddressBook.prototype.find = function(successCallback, errorCallback, filter, so
     var _contacts = [];
     var _result = native_.getResultObject(result);
     _result.forEach(function(data) {
-      try {
-        _contacts.push(self.get(String(data)));
-      } catch (e) {}
+      var contact = _prepareContact(data);
+      _contacts.push(contact);
     });
 
     native_.callIfPossible(successCallback, _contacts);
index 12123c31c8060aed76564a4d9904edcfc52ba91c..3b526442ce5b27a5b7b0a160e3cf9568bd73564e 100755 (executable)
@@ -396,7 +396,10 @@ ContactManager.prototype.find = function() {
       var _result = native_.getResultObject(result);
       var retval = [];
       for (var i = 0; i < _result.length; ++i) {
-        retval.push(self.get(String(_result[i])));
+        var person = _editGuard.run(function() {
+          return new Person(_result[i]);
+        });
+        retval.push(person);
       }
       args.successCallback(retval);
     } else {
@@ -466,7 +469,10 @@ ContactManager.prototype.findByUsageCount = function() {
       var _result = native_.getResultObject(result);
       var retval = [];
       for (var i = 0; i < _result.length; ++i) {
-        retval.push(self.get(String(_result[i])));
+        var person = _editGuard.run(function() {
+          return new Person(_result[i]);
+        });
+        retval.push(person);
       }
       args.successCallback(retval);
     } else {