3 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 * Licensed under the Apache License, Version 2.0 (the License);
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
18 #ifndef DATA_CONNECTOR_INTERFACE_H_
19 #define DATA_CONNECTOR_INTERFACE_H_
21 #include "data-adapter/error.h"
23 #include "data_connector_resource.h"
27 #endif /* __cplusplus */
30 * @file data_connector_interface.h
31 * @brief Interface list in this header will be implemented plugIn developer.
32 * @remarks Implementation will operate sync-agent-framework data-adapter module.
35 /** @addtogroup plugin_dataconnector DataConnector Domain
41 * API to connect(open) to the service
43 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
48 * @see sync_agent_plugin_open_service()
51 sync_agent_da_return_e sync_agent_plugin_open_service(void);
54 * API to disconnect(close) to the service
56 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
61 * @see sync_agent_plugin_close_service()
64 sync_agent_da_return_e sync_agent_plugin_close_service(void);
67 * API to start transaction for service storage
69 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
74 * @see sync_agent_plugin_begin_transaction()
77 sync_agent_da_return_e sync_agent_plugin_begin_transaction(void);
80 * API to end transaction for service storage
82 * @param[in] is_success flag to decide commit/rollback (1:commit, 0:rollback)
84 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
89 * @see sync_agent_plugin_end_transaction(int)
92 sync_agent_da_return_e sync_agent_plugin_end_transaction(int is_success);
95 * API to insert item into service storage
97 * @param[in] account_id service account id
98 * @param[in] folder_id service folder id
99 * @param[in] data data to add to the service
100 * @param[in] item_id as returned by sync_agent_plugin_add_item() - success : id of the newly item added to the service, error : NULL
102 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
107 * @see sync_agent_plugin_add_item(int, char *, void *, char **)
110 sync_agent_da_return_e sync_agent_plugin_add_item(int account_id, char *folder_id, void *data, char **item_id);
113 * API to insert item into service storage
115 * @param[in] account_id service account id
116 * @param[in] folder_id service folder id
117 * @param[in] data data to add to the service
118 * @param[in] item_id as returned by sync_agent_plugin_add_bulk_item() - success : id of the newly item added to the service, error : NULL
120 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
125 * @see sync_agent_plugin_add_bulk_item(int, char *, void *, int **, int *)
128 sync_agent_da_return_e sync_agent_plugin_add_bulk_item(int account_id, char *folder_id, void *data, int **item_id, int *item_id_count);
131 * API to update item from service storage
133 * @param[in] account_id service account id
134 * @param[in] folder_id service folder id
135 * @param[in] item_id service item id
136 * @param[in] data data to update to the service
138 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
143 * @see sync_agent_plugin_update_item(int, char *, char *, void *)
146 sync_agent_da_return_e sync_agent_plugin_update_item(int account_id, char *folder_id, char *item_id, void *data);
149 * API to update item from service storage
151 * @param[in] data data to update to the service
153 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
158 * @see sync_agent_plugin_update_bulk_item(void *)
161 sync_agent_da_return_e sync_agent_plugin_update_bulk_item(void *data);
164 * API to delete item from service storage
166 * @param[in] account_id service account id
167 * @param[in] folder_id service folder id
168 * @param[in] item_id service id of item expected to be deleted
170 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
175 * @see sync_agent_plugin_delete_item(int, char *, char *)
178 sync_agent_da_return_e sync_agent_plugin_delete_item(int account_id, char *folder_id, char *item_id);
181 * API to delete item from service storage
183 * @param[in] item_id service id of item expected to be deleted
184 * @param[in] count count of service item id expected to be deleted
186 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
191 * @see sync_agent_plugin_delete_bulk_item(int *, int)
194 sync_agent_da_return_e sync_agent_plugin_delete_bulk_item(int *item_id, int count);
198 * API to delete all items from service storage
200 * @param[in] account_id service account id
202 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
207 * @see sync_agent_plugin_delete_all_items(int)
210 sync_agent_da_return_e sync_agent_plugin_delete_all_items(int account_id);
213 * API to get item from service storage
215 * @param[in] account_id service account id
216 * @param[in] folder_id service folder id
217 * @param[in] item_id expected to get service item id
218 * @param[in] data as returned by sync_agent_plugin_get_item() - success : item info, error : NULL
220 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
225 * @see sync_agent_plugin_get_item(int, char *, char *, void **)
228 sync_agent_da_return_e sync_agent_plugin_get_item(int account_id, char *folder_id, char *item_id, void **data);
231 * API to insert folder into service storage
233 * @param[in] account_id service account id
234 * @param[in] folder_name folder name
235 * @param[in] folder_type folder type
236 * @param[in] folder_id as returned by sync_agent_plugin_add_folder() - success : id of the newly folder added to the service, fail : NULL
238 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
243 * @see sync_agent_plugin_add_folder(int, char *, int, char **)
246 sync_agent_da_return_e sync_agent_plugin_add_folder(int account_id, char *folder_name, int folder_type, char **folder_id);
249 * API to delete folder from service storage
251 * @param[in] account_id service account id
252 * @param[in] folder_id service folder id
254 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
259 * @see sync_agent_plugin_delete_folder(int, char *)
262 sync_agent_da_return_e sync_agent_plugin_delete_folder(int account_id, char *folder_id);
265 * API to get folder info from service storage
267 * @param[in] account_id service account id
268 * @param[in] folder_id service folder id
269 * @param[in] out_folder_name as returned by sync_agent_plugin_get_folder() - success : folder name, fail : NULL
270 * @param[in] out_folder_type as returned by sync_agent_plugin_get_folder() - success : folder type, fail : -1
272 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
277 * @see sync_agent_plugin_get_folder(int, char *, char **, int *)
280 sync_agent_da_return_e sync_agent_plugin_get_folder(int account_id, char *folder_id, char **out_folder_name, int *out_folder_type);
283 * API to execute data into service
285 * @param[in] account_id service account id
286 * @param[in] execute_key execute key
287 * @param[in] execute_values execute values
288 * @param[in] result as returned by sync_agent_plugin_execute() - extension result info
290 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
295 * @see sync_agent_plugin_execute(int, const char *, void *, void **)
298 sync_agent_da_return_e sync_agent_plugin_execute(int account_id, const char *execute_key, void *execute_values, void **result);
301 * API to get item used count
303 * @return current_item_count on success, negative value on error
308 * @see sync_agent_plugin_get_used_item_count()
311 int sync_agent_plugin_get_used_item_count(void);
314 * API to get exdate item count for EXDATE TYPE data of calendar
316 * @return current_item_count on success, negative value on error
321 * @see sync_agent_plugin_get_deleted_exdate_item_count()
324 int sync_agent_plugin_get_deleted_exdate_item_count(void);
327 * API to get exdate item count for EXDATE TYPE data of calendar
329 * @return current_item_count on success, negative value on error
334 * @see sync_agent_plugin_is_exist_exdate_item()
337 sync_agent_da_return_e sync_agent_plugin_is_exist_exdate_item(const char *fw_parent_id, const char *child_vcalendar);
340 * API to update the exdate parent item data of calendar
345 * @see sync_agent_plugin_construct_exdate_parent_item()
348 void sync_agent_plugin_construct_exdate_parent_item(char *parent_service_id);
352 * API to get item used count for folder
354 * @param[in] account_id service account id
355 * @param[in] folder_id service folder id
357 * @return current_item_count on success, negative value on error
362 * @see sync_agent_plugin_get_used_item_count_for_folder(int, char *)
365 int sync_agent_plugin_get_used_item_count_for_folder(int account_id, char *folder_id);
368 * API to get folder id list of a account
370 * @param[in] account_id service account id
371 * @param[in] folder_count as returned by sync_agent_plugin_get_folder_id_list() - success : folder count, fail or not exist : 0
372 * @param[in] folder_type_list as returned by sync_agent_plugin_get_folder_id_list() - success : list, fail or not exist : NULL
374 * @return folder_id_list on success, NULL on error or not exist
379 * @see sync_agent_plugin_get_folder_id_list(int, int *, int **)
382 char **sync_agent_plugin_get_folder_id_list(int account_id, int *folder_count, int **folder_type_list);
385 * API to get all account id list that service has currently
387 * @param[in] count as returned by sync_agent_plugin_get_account_id_list() - success : count of account id, fail or not exist : 0
388 * @return account_id_list on success, NULL on fail or not exist
393 * @see sync_agent_plugin_get_account_id_list(int *)
396 int *sync_agent_plugin_get_account_id_list(int *count);
399 * API to write data store items to file
401 * @param[in] account_id service account id
402 * @param[in] file_path as returned by sync_agent_plugin_backup_service_items_to_file() - written file path
404 * @return SYNC_AGENT_DA_SUCCESS on success, minus value on error
409 * @see sync_agent_plugin_backup_service_items_to_file(int, char **)
412 sync_agent_da_return_e sync_agent_plugin_backup_service_items_to_file(int account_id, char **file_path);
415 * API to add file wrote item to data store
417 * @param[in] account_id service account id
418 * @param[in] file_path file path
420 * @return SYNC_AGENT_DA_SUCCESS on success, minus value on error
425 * @see sync_agent_plugin_restore_service_items_from_file(int, const char *)
428 sync_agent_da_return_e sync_agent_plugin_restore_service_items_from_file(int account_id, const char *file_path);
431 * API to get added item list after specific point
433 * @param[in] account_id service account id
434 * @param[in] folder_id service folder id
435 * @param[in] changepoint specific point
436 * @param[in] changeCount as returned by sync_agent_plugin_get_changed_item_for_folder_add() - success : added item count, fail or not exist : NULL
438 * @return added_item_info_list (if exist) on success, NULL on error or not exist
443 * @see sync_agent_plugin_get_changed_item_for_folder_add(int, const char *, int, int *)
446 sync_agent_plugin_item_node_s *sync_agent_plugin_get_changed_item_for_folder_add(int account_id, const char *folder_id, int changepoint, int *changeCount);
449 * API to get deleted item list after specific point
451 * @param[in] account_id service account id
452 * @param[in] folder_id service folder id
453 * @param[in] changepoint specific point
454 * @param[in] changeCount as returned by sync_agent_plugin_get_changed_item_for_folder_delete() - success : deleted item count, fail or not exist : NULL
456 * @return deleted_item_info_list (if exist) on success, NULL on error or not exist
461 * @see sync_agent_plugin_get_changed_item_for_folder_delete(int, const char *, int, int *)
464 sync_agent_plugin_item_node_s *sync_agent_plugin_get_changed_item_for_folder_delete(int account_id, const char *folder_id, int changepoint, int *changeCount);
467 * API to get updated item list after specific point
469 * @param[in] account_id service account id
470 * @param[in] folder_id service folder id
471 * @param[in] changepoint specific point
472 * @param[in] changeCount as returned by sync_agent_plugin_get_changed_item_for_folder_update() - success : updated item count, fail or not exist : NULL
474 * @return updated_item_info_list (if exist) on success, NULL on error or not exist
479 * @see sync_agent_plugin_get_changed_item_for_folder_update(int, const char *, int, int *)
482 sync_agent_plugin_item_node_s *sync_agent_plugin_get_changed_item_for_folder_update(int account_id, const char *folder_id, int changepoint, int *changeCount);
485 * API to get last storage change point information
487 * @return last storage changing point information on success, 0 on error
492 * @see sync_agent_plugin_get_last_change_point()
495 int sync_agent_plugin_get_last_change_point(void);
498 * API to check notification for the storage change
500 * @param[in] data user data
505 * @see sync_agent_plugin_start_listening_change_noti(void *)
508 void sync_agent_plugin_start_listening_change_noti(void *data);
511 * API to set callback function to handle added item to storage
513 * @param[in] callback callback function - this function is provided from sync-agent-framework
518 * @see data_connector_resource.h
521 void sync_agent_plugin_set_callback_add_item(sync_agent_add_item_cb_plugin callback);
524 * API to set callback function to handle deleted item to storage
526 * @param[in] callback callback function - this function is provided from sync-agent-framework
531 * @see data_connector_resource.h
534 void sync_agent_plugin_set_callback_delete_item(sync_agent_del_item_cb_plugin callback);
537 * API to set callback function to handle updated item to storage
539 * @param[in] callback callback function - this function is provided from sync-agent-framework
544 * @see data_connector_resource.h
547 void sync_agent_plugin_set_callback_update_item(sync_agent_update_item_cb_plugin callback);
550 * API to set callback function to get service account id list mapped sync-agent-framework account id
552 * @param[in] callback callback function - this function is provided from sync-agent-framework
557 * @see data_connector_resource.h
560 void sync_agent_plugin_set_callback_get_account_id_list(sync_agent_get_account_id_list_cb_plugin callback);
563 * API to set callback function to handle child item delete from storage
565 * @param[in] callback callback function - this function is provided from sync-agent-framework
570 * @see data_connector_resource.h
573 void sync_agent_plugin_set_callback_delete_child_item(sync_agent_del_child_item_cb_plugin callback);
576 * API to get max item count per folder
578 * @param[in] folder_type folder type provided plugin
580 * @return max item count on success, -1 on error
585 * @see sync_agent_plugin_get_max_item_count(int)
587 int sync_agent_plugin_get_max_item_count(int folder_type);
590 * API to get service data's available field length
592 * @param[in] field_name field_name provided data-connector plugin
593 * @param[in] child_field_name child field name provided data-connector plugin
595 * @return available_field_length on success, -1 on error
600 * @see sync_agent_plugin_get_max_field_length(int, int)
603 int sync_agent_plugin_get_max_field_length(int field_name, int child_field_name);
606 * API to get service data's available field count
608 * @param[in] field_name field_name provided data-connector plugin
609 * @param[in] child_field_name child field name provided data-connector plugin
611 * @return available_field_count on success, -1 on error
616 * @see sync_agent_plugin_get_max_field_count(int, int)
619 int sync_agent_plugin_get_max_field_count(int field_name, int child_field_name);
622 * API to get service data's available field value's domain
624 * @param[in] field_name field name provided data-connector plugin
625 * @param[in] child_field_name child field name provided data-connector plugin
626 * @param[in] str_val as returned by sync_agent_plugin_get_field_value() - when domain value is string
627 * @param[in] num_val1 as returned by sync_agent_plugin_get_field_value() - when domain value is integer (ex minimum value)
628 * @param[in] num_val2 as returned by sync_agent_plugin_get_field_value() - when domain value is integer (ex maximum value)
630 * @return 1 on success, -1 on error
635 * @see sync_agent_plugin_get_field_value(int, int, char **, int *, int *)
638 int sync_agent_plugin_get_field_value(int field_name, int child_field_name, char **str_val, int *num_val1, int *num_val2);
641 * API to get service data's available field count
643 * @param[in] feature feature provided data-connector plugin
645 * @return 1 : support, 0 : not support on success, -1 on error
650 * @see sync_agent_plugin_get_is_support_feature(int)
653 int sync_agent_plugin_get_is_support_feature(int feature);
656 * API to get max name length of sim card
658 * @return max name length or default value
663 * @see sync_agent_plugin_get_info_sim_contact_max_name_length()
667 int sync_agent_plugin_get_info_sim_contact_max_name_length(void);
670 * API to get max number length of sim card
672 * @return max number length or default value
677 * @see sync_agent_plugin_get_info_sim_contact_max_name_length()
681 int sync_agent_plugin_get_info_sim_contact_max_number_length(void);
684 * API to get max email length of sim card
686 * @return max email length or default value
691 * @see sync_agent_plugin_get_info_sim_contact_max_name_length()
695 int sync_agent_plugin_get_info_sim_contact_max_email_length(void);
698 * API to get empty count of sim card
700 * @return get empty count
705 * @see sync_agent_plugin_get_sim_contact_empty_count()
709 int sync_agent_plugin_get_info_sim_contact_empty_count(void);
712 * API to get empty number count of sim card
714 * @return get empty number count
719 * @see sync_agent_plugin_get_sim_contact_empty_number_count()
723 int sync_agent_plugin_get_info_sim_contact_empty_number_count(void);
726 * API to get empty email count of sim card
728 * @return get empty email count
733 * @see sync_agent_plugin_get_sim_contact_empty_email_count()
737 int sync_agent_plugin_get_info_sim_contact_empty_email_count(void);
740 * API to get addressbook ID of sim card
742 * @return get addressbook ID
747 * @see sync_agent_plugin_get_info_sim_contact_addressbook_id()
751 int sync_agent_plugin_get_info_sim_contact_addressbook_id(void);
754 * API to get contact item ID of sim card
756 * @param[in] addressbook id of sim contact
757 * @param[out] contact item ID of sim card
759 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
764 * @see sync_agent_plugin_get_info_sim_contact_item_id()
768 sync_agent_da_return_e sync_agent_plugin_get_info_sim_contact_item_id(int sim_addressbook_id, GList **item_id);
771 * API to get contact item ID of sim card
773 * @param[in] contact item ID of sim card
774 * @param[out] data of sim contact
776 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
781 * @see sync_agent_plugin_get_info_sim_contact_item()
785 sync_agent_da_return_e sync_agent_plugin_get_info_sim_contact_item(int item_id, char **data);
788 * API to add sim contact
790 * @param[in] contact addressbook ID of sim card
791 * @param[out] contact item ID of sim card
792 * @param[in] data of sim contact
794 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
799 * @see sync_agent_plugin_add_sim_contact_item()
803 sync_agent_da_return_e sync_agent_plugin_add_sim_contact_item(int sim_addressbook_id, int **item_id, char *data);
806 * API to delete sim contact
808 * @param[in] sim contact id
809 * @param[in] sim contact data
811 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
816 * @see sync_agent_plugin_write_sim_contact_item()
820 sync_agent_da_return_e sync_agent_plugin_write_sim_contact_item(int item_id, char *data);
823 * API to delete sim contact
825 * @param[in] sim contact ID
827 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
832 * @see sync_agent_plugin_delete_sim_contact_item()
836 sync_agent_da_return_e sync_agent_plugin_delete_sim_contact_item(int item_id);
842 * @param[in] count of data
844 * @return SYNC_AGENT_DA_SUCCESS on success, otherwise error
849 * @see sync_agent_plugin_add_async_item()
853 sync_agent_da_return_e sync_agent_plugin_add_async_item(GList *data, int count);
860 #endif /* __cplusplus */
861 #endif /* DATA_CONNECTOR_INTERFACE_H_ */