[Internal: merge sync-agent]
[platform/core/system/sync-agent.git] / src / fw-plugins / common-public / contact / src / plugin_interface.c
index edfbd8e..c9c7afc 100755 (executable)
@@ -64,6 +64,8 @@ static sync_agent_update_item_cb_plugin callback_update_item;
 
 static sync_agent_get_account_id_list_cb_plugin callback_get_account_id_list;
 
+static sync_agent_del_child_item_cb_plugin callback_delete_child_item;
+
 static void _set_is_noti_from_me(int set_flag);
 
 static int _get_is_noti_from_me(void);
@@ -90,16 +92,8 @@ EXPORT_API sync_agent_da_return_e sync_agent_plugin_open_service(void)
 {
        _EXTERN_FUNC_ENTER;
 
-//      sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
-//      int err = contacts_svc_connect();
-//      if (err < CTS_SUCCESS) {
-//              _DEBUG_INFO("[da_contact_plugIn] in contact Fail!\n");
-//              ret = _convert_service_error_to_common_error(err);
-//      } else {
-//              _DEBUG_INFO("[da_contact_plugIn] in contact Success!\n");
-//      }
-
        sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
+
        contacts_error_e err = contacts_connect2();
        if (err != CONTACTS_ERROR_NONE) {
                _DEBUG_ERROR("[da_contact_plugIn] in contact Fail!\n");
@@ -109,7 +103,6 @@ EXPORT_API sync_agent_da_return_e sync_agent_plugin_open_service(void)
        }
 
        _EXTERN_FUNC_EXIT;
-
        return ret;
 }
 
@@ -117,16 +110,8 @@ EXPORT_API sync_agent_da_return_e sync_agent_plugin_close_service(void)
 {
        _EXTERN_FUNC_ENTER;
 
-//      sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
-//      int err = contacts_svc_disconnect();
-//      if (err < CTS_SUCCESS) {
-//              _DEBUG_INFO("[da_contact_plugIn] in contact Fail!\n");
-//              ret = _convert_service_error_to_common_error(err);
-//      } else {
-//              _DEBUG_INFO("[da_contact_plugIn] in contact Success!\n");
-//      }
-
        sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
+
        contacts_error_e err = contacts_disconnect2();
        if (err != CONTACTS_ERROR_NONE) {
                _DEBUG_ERROR("[da_contact_plugIn] in contact Fail!\n");
@@ -136,7 +121,6 @@ EXPORT_API sync_agent_da_return_e sync_agent_plugin_close_service(void)
        }
 
        _EXTERN_FUNC_EXIT;
-
        return ret;
 }
 
@@ -194,28 +178,6 @@ EXPORT_API sync_agent_da_return_e sync_agent_plugin_add_item(int account_id, cha
 {
        _EXTERN_FUNC_ENTER;
 
-//      retvm_if(folder_id == NULL, SYNC_AGENT_DA_ERR_INVALID_CONTENT, "item_id is NULL. FAIL !!!");
-//
-//      sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
-//      int err = 0;
-//      CTSstruct *item = (CTSstruct *)data;
-//
-//      /*  add item */
-//      err = contacts_svc_insert_contact(atoi(folder_id), (CTSstruct *)item);
-//      if (err < CTS_SUCCESS) {
-//              _DEBUG_INFO("[da_contact_plugIn] contacts_svc_insert_contact() Fail!\n");
-//              ret = _convert_service_error_to_common_error(err);
-//              *item_id = 0;
-//      } else {
-//              _DEBUG_INFO("[da_contact_plugIn] contacts_svc_insert_contact() Success!\n");
-//              *item_id = g_strdup_printf("%d", err);
-//              is_storage_changed = 1;
-//      }
-//
-//      /*  memory free */
-//      if (item != NULL)
-//              contacts_svc_struct_free(item);
-
        retvm_if(folder_id == NULL, SYNC_AGENT_DA_ERR_INVALID_CONTENT, "item_id is NULL. FAIL !!!");
 
        sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
@@ -255,7 +217,6 @@ EXPORT_API sync_agent_da_return_e sync_agent_plugin_add_item(int account_id, cha
        contacts_record_destroy(record, true);
 
        _EXTERN_FUNC_EXIT;
-
        return ret;
 }
 
@@ -712,25 +673,6 @@ EXPORT_API sync_agent_da_return_e sync_agent_plugin_get_item(int account_id, cha
 {
        _EXTERN_FUNC_ENTER;
 
-//      retvm_if(item_id == NULL, SYNC_AGENT_DA_ERR_INVALID_CONTENT, "item_id is NULL. FAIL !!!");
-//
-//      sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
-//      int err = 0;
-//      CTSstruct *item = 0;
-//
-//      /* get item */
-//      int contact_id = atoi(item_id);
-//      _DEBUG_INFO("[da_contact_plugIn] contact_id : %d\n", contact_id);
-//      err = contacts_svc_get_contact(contact_id, &item);
-//      if (err < CTS_SUCCESS) {
-//              _DEBUG_INFO("[da_contact_plugIn] contacts_svc_get_contact() Fail!\n");
-//              ret = _convert_service_error_to_common_error(err);
-//              *data = 0;
-//      } else {
-//              _DEBUG_INFO("[da_contact_plugIn] contacts_svc_get_contact() Success!\n");
-//              *data = (void *)item;
-//      }
-
        retvm_if(item_id == NULL, SYNC_AGENT_DA_ERR_INVALID_CONTENT, "item_id is NULL. FAIL !!!");
 
        sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
@@ -863,19 +805,6 @@ EXPORT_API sync_agent_da_return_e sync_agent_plugin_delete_folder(int account_id
 
        retvm_if(folder_id == NULL, SYNC_AGENT_DA_ERR_INVALID_CONTENT, "folder_id is NULL. FAIL !!!");
 
-//      sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
-//      int err = 0;
-//
-//      /* delete folder */
-//      err = contacts_svc_delete_addressbook(atoi(folder_id));
-//      if (err < CTS_SUCCESS) {
-//              _DEBUG_INFO("[da_contact_plugIn] contacts_svc_delete_addressbook(%s) Fail!\n", folder_id);
-//              ret = _convert_service_error_to_common_error(err);
-//      } else {
-//              _DEBUG_INFO("[da_contact_plugIn] contacts_svc_delete_addressbook(%s) Success!\n", folder_id);
-//              is_storage_changed = 1;
-//      }
-
        sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
        contacts_error_e err = CONTACTS_ERROR_NONE;
 
@@ -978,19 +907,6 @@ EXPORT_API int sync_agent_plugin_get_used_item_count(void)
 {
        _EXTERN_FUNC_ENTER;
 
-       _DEBUG_INFO("[da_contact_plugIn] Start\n");
-
-//      int ret = SYNC_AGENT_DA_SUCCESS;
-//      int used_cnt = contacts_svc_count(CTS_GET_ALL_CONTACT);
-//      if (used_cnt < 0) {
-//              _DEBUG_INFO("[da_contact_plugIn] contact_svc_count() Fail\n");
-//              ret = _convert_service_error_to_common_error(used_cnt);
-//      } else {
-//              _DEBUG_INFO("[da_contact_plugIn] contact_svc_count() Success\n");
-//              _DEBUG_INFO("[da_contact_plugIn] used_count = %d\n", used_cnt);
-//              ret = used_cnt;
-//      }
-
        sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
        contacts_error_e err = CONTACTS_ERROR_NONE;
        int used_cnt = 0;
@@ -1015,19 +931,6 @@ EXPORT_API int sync_agent_plugin_get_used_item_count_for_folder(int account_id,
 
        retvm_if(folder_id == NULL, SYNC_AGENT_DA_ERR_INVALID_CONTENT, "folder_id is NULL. FAIL !!!");
 
-       _DEBUG_INFO("[da_contact_plugIn] Start\n");
-
-//      int ret = SYNC_AGENT_DA_SUCCESS;
-//      int used_cnt = contacts_svc_count_with_int(CTS_GET_COUNT_CONTACTS_IN_ADDRESSBOOK, atoi(folder_id));
-//      if (used_cnt < 0) {
-//              _DEBUG_INFO("[da_contact_plugIn] contacts_svc_count_with_int(%s) Fail\n", folder_id);
-//              ret = _convert_service_error_to_common_error(used_cnt);
-//      } else {
-//              _DEBUG_INFO("[da_contact_plugIn] contacts_svc_count_with_int(%s) Success\n", folder_id);
-//              _DEBUG_INFO("[da_contact_plugIn] used_count = %d\n", used_cnt);
-//              ret = used_cnt;
-//      }
-
        sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
        contacts_error_e err = CONTACTS_ERROR_NONE;
        int used_cnt = 0;
@@ -1086,71 +989,6 @@ EXPORT_API char **sync_agent_plugin_get_folder_id_list(int account_id, int *fold
 {
        _EXTERN_FUNC_ENTER;
 
-//      char **folder_id_list = 0;
-//      *folder_count = 0;
-//      CTSiter *iter_addressbook = 0;
-//      CTSvalue *addressbook = 0;
-//
-//      if (account_id == -1) {
-//              folder_id_list = (char **)calloc(1, sizeof(char *));
-//              if( folder_id_list == NULL ) {
-//                      _DEBUG_ERROR("CALLOC failed !!!");
-//                      return NULL;
-//              }
-//              *folder_type_list = (int *)calloc(1, sizeof(int));
-//              if( *folder_type_list == NULL ) {
-//                      _DEBUG_ERROR("CALLOC failed !!!");
-//                      return NULL;
-//              }
-//
-//              folder_id_list[0] = "0";
-//              *folder_count = 1;
-//              (*folder_type_list)[0] = DEFAULT_CONTACT_FOLDER;
-//
-//              return folder_id_list;
-//      }
-//
-//      folder_id_list = (char **)calloc(50, sizeof(char *));
-//      if( folder_id_list == NULL ) {
-//              _DEBUG_ERROR("CALLOC failed !!!");
-//              return NULL;
-//      }
-//      *folder_type_list = (int *)calloc(50, sizeof(int));
-//      if( *folder_type_list == NULL ) {
-//              _DEBUG_ERROR("CALLOC failed !!!");
-//              return NULL;
-//      }
-//
-//      int err = contacts_svc_get_list_with_int(CTS_LIST_ADDRESSBOOKS_OF_ACCOUNT_ID, account_id, &iter_addressbook);
-//      err = contacts_svc_iter_next(iter_addressbook);
-//      while (err == CTS_SUCCESS) {
-//              addressbook = contacts_svc_iter_get_info(iter_addressbook);
-//              if (addressbook != NULL) {
-//                      int addressbook_id = 0;
-//                      addressbook_id = contacts_svc_value_get_int(addressbook, CTS_LIST_ADDRESSBOOK_ID_INT);
-//                      char *str_addressbook_id = g_strdup_printf("%d", addressbook_id);
-//                      _DEBUG_INFO("[da_contact_plugIn] addressbook_id : %d\n", addressbook_id);
-//
-//                      folder_id_list[*folder_count] = str_addressbook_id;
-//                      (*folder_type_list)[*folder_count] = DEFAULT_CONTACT_FOLDER;
-//                      *folder_count = *folder_count + 1;
-//
-//                      if (addressbook != NULL)
-//                              contacts_svc_value_free(addressbook);
-//
-//                      err = contacts_svc_iter_next(iter_addressbook);
-//              } else {
-//                      _DEBUG_INFO("[da_contact_plugIn] contacts_svc_iter_get_info() Fail!\n");
-//                      break;
-//              }
-//      }
-//
-//      /* memory free */
-//      if (iter_addressbook != NULL) {
-//              contacts_svc_iter_remove(iter_addressbook);
-//              _DEBUG_INFO("[da_contact_plugIn] contacts_svc_iter_remove !! \n");
-//      }
-
        char **folder_id_list = 0;
        *folder_count = 0;
 
@@ -1772,14 +1610,10 @@ EXPORT_API int sync_agent_plugin_get_last_change_point(void)
 {
        _EXTERN_FUNC_ENTER;
 
-//      contacts_svc_begin_trans();
-//      int contactVersion = contacts_svc_end_trans(1);
-
        int contactVersion;
        contacts_db_get_current_version(&contactVersion);
 
        _EXTERN_FUNC_EXIT;
-
        return contactVersion;
 }
 
@@ -1848,6 +1682,13 @@ EXPORT_API void sync_agent_plugin_set_callback_get_account_id_list(sync_agent_ge
        _EXTERN_FUNC_EXIT;
 }
 
+EXPORT_API void sync_agent_plugin_set_callback_delete_child_item(sync_agent_del_child_item_cb_plugin callback)
+{
+       _EXTERN_FUNC_ENTER;
+       callback_delete_child_item = callback;
+       _EXTERN_FUNC_EXIT;
+}
+
 EXPORT_API int sync_agent_plugin_get_max_item_count(int folder_type)
 {
        _EXTERN_FUNC_ENTER;
@@ -2108,6 +1949,12 @@ static void _process_contact_change(const char *view_uri, void *user_data)
        if (sync_agent_async_queue_length(queue) < 1) {
                sync_agent_send_msg_async_queue(queue, (void *)contactVersion);
                _DEBUG_TRACE("fw_async_queue_length = %d", sync_agent_async_queue_length(queue));
+       } else {
+               _DEBUG_INFO("send_msg_failed... sync_agent_async_queue_length(queue) >= 1");
+               if(contactVersion != NULL) {
+                       free(contactVersion);
+                       contactVersion = NULL;
+               }
        }
 
        _INNER_FUNC_EXIT;
@@ -2393,7 +2240,7 @@ static void *_rutine_contact_change(void *data)
                                                                {
                                                                        _DEBUG_TRACE("[da_contact_plugIn]  CTS_OPERATION_INSERTED\n");
 
-                                                                       int result = callback_add_item(accountList[i], i, contact_id_str, FW_CONTACT, str_addressbook_id, 0);
+                                                                       int result = callback_add_item(accountList[i], i, contact_id_str, NULL, FW_CONTACT, str_addressbook_id, 0);
                                                                        _DEBUG_TRACE("[da_contact_plugIn] ===1\n");
                                                                        if (!result)
                                                                                _DEBUG_ERROR("[da_contact_plugIn] Failed to call callback_add_item() \n");
@@ -2404,7 +2251,7 @@ static void *_rutine_contact_change(void *data)
                                                                        _DEBUG_TRACE("[da_contact_plugIn] CTS_OPERATION_UPDATED\n");
                                                                        _DEBUG_TRACE("[da_contact_plugIn] contact_id : %s\n", contact_id_str);
 
-                                                                       int result = callback_update_item(accountList[i], i, contact_id_str, FW_CONTACT);
+                                                                       int result = callback_update_item(accountList[i], i, contact_id_str, NULL, FW_CONTACT);
                                                                        if (!result)
                                                                                _DEBUG_ERROR("[da_contact_plugIn] Failed to call callback_update_item() \n");
                                                                }