merge wrt-plugins-tizen_0.2.0-3
[platform/framework/web/wrt-plugins-tizen.git] / src / platform / Tizen / Contact / AddressBook.cpp
index 95f6685..ab00a29 100755 (executable)
@@ -62,21 +62,8 @@ AddressBook::~AddressBook()
 ContactPtr AddressBook::get(const std::string &contactId)
 {
        LogDebug("entered");
-       if(contactId == "")
-               ThrowMsg(InvalidArgumentException, "contactId argument is wrong");
 
-       ContactSearchEnginePtr searchEngine(new ContactSearchEngine(ContactSearchEngine::CONTACT_QUERY));
-
-       searchEngine->setCondition(contactId);
-       searchEngine->setAttributeOfInterest();
-       searchEngine->setSortMode();
-
-       ContactArrayPtr contacts = searchEngine->getContactSearchResult();
-
-       if(contacts->size() == 0)
-               ThrowMsg(NotFoundException, "No contact with ID:" << contactId);
-
-       return contacts->at(0);
+       return internalGetById(contactId);
 }
 
 void AddressBook::add(const ContactPtr &contact)
@@ -467,7 +454,13 @@ void AddressBook::internalAddContact(const ContactPtr &newContact)
                        LogError("error code " << id);
                        ThrowMsg(PlatformException, "Error during executing contacts_svc_insert_contact()");
                }
-               newContact->setId(id);
+
+               std::stringstream oss;
+               oss << id;
+               std::string idStr = oss.str();
+               ContactPtr insertedContact = internalGetById(idStr);
+
+               newContact->copy(insertedContact);
        }
 }
 
@@ -487,6 +480,25 @@ void AddressBook::internalDeleteContactById(int id)
                ThrowMsg(PlatformException, "Error during executing contacts_svc_delete_contact()");
 }
 
+ContactPtr AddressBook::internalGetById(const std::string &contactId)
+{
+       if(contactId == "")
+               ThrowMsg(InvalidArgumentException, "contactId argument is wrong");
+
+       ContactSearchEnginePtr searchEngine(new ContactSearchEngine(ContactSearchEngine::CONTACT_QUERY));
+
+       searchEngine->setCondition(contactId);
+       searchEngine->setAttributeOfInterest();
+       searchEngine->setSortMode();
+
+       ContactArrayPtr contacts = searchEngine->getContactSearchResult();
+
+       if(contacts->size() == 0)
+               ThrowMsg(NotFoundException, "No contact with ID:" << contactId);
+
+       return contacts->at(0);
+}
+
 void AddressBook::contactsSvcContactChangedCallback(void *data)
 {
        AddressBook *addressBook = static_cast<AddressBook *>(data);