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.
20 #include <glib/gprintf.h>
22 #include "utility/sync_util.h"
23 #include "data-adapter/agent_handler_manager.h"
24 #include "data-adapter/agent_handler_manager_internal.h"
25 #include "data-adapter/agent.h"
27 #include "data-adapter/interface_folder.h"
30 #define EXPORT_API __attribute__ ((visibility("default")))
33 #ifndef SYNC_AGENT_LOG
35 #define LOG_TAG "AF_DACI"
38 EXPORT_API sync_agent_da_return_e sync_agent_create_folder(sync_agent_da_folder_s ** sync_agent_folder)
42 *sync_agent_folder = (sync_agent_da_folder_s *) calloc(1, sizeof(sync_agent_da_folder_s));
43 if (*sync_agent_folder == NULL) {
44 _DEBUG_ERROR("calloc failed !!");
45 return SYNC_AGENT_DA_ERRORS;
50 return SYNC_AGENT_DA_SUCCESS;
53 EXPORT_API sync_agent_da_return_e sync_agent_add_folder(sync_agent_da_folder_s * sync_agent_folder, char **folder_id)
57 retvm_if(sync_agent_folder == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_folder_s is NULL !!");
59 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
61 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
62 if (daci_handler == NULL) {
63 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
64 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
67 ret = da_add_folder_new(daci_handler, sync_agent_folder, 1, folder_id);
68 if (ret != SYNC_AGENT_DA_SUCCESS) {
69 _DEBUG_ERROR("da_add_folder_new() failed !!");
77 EXPORT_API sync_agent_da_return_e sync_agent_get_folder(char *folder_id, sync_agent_da_folder_s ** sync_agent_folder)
81 retvm_if(folder_id == NULL, SYNC_AGENT_DA_ERRORS, "folder id is NULL !!");
83 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
85 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
86 if (daci_handler == NULL) {
87 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
88 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
91 ret = da_get_folder_by_folder_id(daci_handler, folder_id, sync_agent_folder);
92 if (ret != SYNC_AGENT_DA_SUCCESS) {
93 _DEBUG_INFO("da_get_folder_by_folder_id() failed !!");
101 EXPORT_API sync_agent_da_return_e sync_agent_get_folder_list(sync_agent_da_get_folder_list_query_s * query, GList ** list)
105 retvm_if(query == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_get_folder_list_query_s is NULL !!");
107 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
109 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
110 if (daci_handler == NULL) {
111 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
112 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
115 switch (query->option) {
116 case SYNC_AGENT_DA_GET_FOLDER_LIST_OPTION_SERVICE_ID_MAPPING:
117 retvm_if(query->folder_id == NULL, SYNC_AGENT_DA_ERRORS, "folder id is NULL !!");
119 ret = da_get_folder_mapping_service_id_new(daci_handler, query->account_id, query->folder_id, list);
120 if (ret != SYNC_AGENT_DA_SUCCESS) {
121 _DEBUG_ERROR("da_get_folder_mapping_service_id_new() failed !!");
133 EXPORT_API sync_agent_da_return_e sync_agent_get_folder_id_list(sync_agent_da_get_folder_id_list_query_s * query, GList ** list)
137 retvm_if(query == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_get_folder_id_list_query_s is NULL !!");
139 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
141 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
142 if (daci_handler == NULL) {
143 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
144 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
147 switch (query->option) {
148 case SYNC_AGENT_DA_GET_FOLDER_ID_OPTION_FOLDER_TYPE_ID:
149 ret = da_get_folder_folder_id_by_folder_type_id_new(daci_handler, query->account_id, query->item_type_id, query->folder_type_id, list);
150 if (ret != SYNC_AGENT_DA_SUCCESS) {
151 _DEBUG_ERROR("da_get_folder_folder_id_by_folder_type_id_new() failed !!");
154 case SYNC_AGENT_DA_GET_FOLDER_ID_OPTION_ITEM_TYPE_ID:
155 ret = da_get_folder_folder_id_list_by_item_type_id_new(daci_handler, query->account_id, query->item_type_id, list);
156 if (ret != SYNC_AGENT_DA_SUCCESS) {
157 _DEBUG_ERROR("da_get_folder_folder_id_list_by_item_type_id_new() failed !!");
169 EXPORT_API sync_agent_da_return_e sync_agent_free_folder(sync_agent_da_folder_s * sync_agent_folder)
173 if (sync_agent_folder != NULL) {
174 if (sync_agent_folder->folder_id != NULL)
175 free(sync_agent_folder->folder_id);
177 if (sync_agent_folder->service_id != NULL)
178 free(sync_agent_folder->service_id);
180 if (sync_agent_folder->parent_folder_id != NULL)
181 free(sync_agent_folder->parent_folder_id);
183 if (sync_agent_folder->access_name != NULL)
184 free(sync_agent_folder->access_name);
186 free(sync_agent_folder);
188 _DEBUG_ERROR("sync_agent_folder is NULL !!");
189 return SYNC_AGENT_DA_ERRORS;
194 return SYNC_AGENT_DA_SUCCESS;
197 EXPORT_API sync_agent_da_return_e sync_agent_free_folder_list(GList * list)
201 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
205 sync_agent_da_folder_s *iter_data;
207 for (iter = list; iter != NULL;) {
209 iter_data = (sync_agent_da_folder_s *) (iter->data);
211 iter = g_list_next(iter);
212 list = g_list_remove(list, iter_data);
214 ret = sync_agent_free_folder(iter_data);
215 if (ret != SYNC_AGENT_DA_SUCCESS) {
216 _DEBUG_ERROR("sync_agent_free_folder() failed !!");
223 _DEBUG_ERROR("list is NULL !!");
224 return SYNC_AGENT_DA_ERRORS;
232 EXPORT_API sync_agent_da_return_e sync_agent_free_folder_id(char *folder_id)
236 if (folder_id != NULL) {
239 _DEBUG_ERROR("folder id is NULL !!");
240 return SYNC_AGENT_DA_ERRORS;;
245 return SYNC_AGENT_DA_SUCCESS;
248 EXPORT_API sync_agent_da_return_e sync_agent_free_folder_id_list(GList * list)
252 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
258 for (iter = list; iter != NULL;) {
260 iter_data = (char *)(iter->data);
262 iter = g_list_next(iter);
263 list = g_list_remove(list, iter_data);
265 ret = sync_agent_free_folder_id(iter_data);
266 if (ret != SYNC_AGENT_DA_SUCCESS) {
267 _DEBUG_ERROR("sync_agent_free_folder_id() failed !!");
274 _DEBUG_ERROR("list is NULL !!");
275 return SYNC_AGENT_DA_ERRORS;