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/common_internal.h"
24 #include "data-adapter/agent_handler_manager.h"
25 #include "data-adapter/agent_handler_manager_internal.h"
26 #include "data-adapter/agent.h"
27 #include "data-adapter/luid.h"
29 #include "data-adapter/interface_item.h"
30 #include "data-adapter/interface_last_anchor.h"
31 #include "data-adapter/interface_mapping.h"
33 #ifndef SYNC_AGENT_LOG
35 #define LOG_TAG "AF_DACI"
38 /* static function define */
39 static int _busy_handler(void *pData, int count);
40 static sync_agent_da_return_e __query_exec(SYNC_AGENT_DA_HANDLER * daci_handler, char *query, char *err_msg);
41 static daci_stmt __query_prepare(SYNC_AGENT_DA_HANDLER * daci_handler, char *query, int size);
42 static sync_agent_da_return_e __stmt_bind_text(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt, int index, const char *value);
43 static sync_agent_da_return_e _stmt_bind_int(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt, int index, const int value);
44 static sync_agent_da_return_e _stmt_bind_blob(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt, int index, const void *value, int nbyte);
45 static sync_agent_da_return_e __stmt_bind_null(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt, int index);
46 static sync_agent_da_return_e _stmt_read_step(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt);
47 static sync_agent_da_return_e __stmt_write_step(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt);
48 static sync_agent_da_return_e _stmt_reset(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt);
49 static sync_agent_da_return_e __stmt_finalize(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt);
50 static char *_stmt_column_text(daci_stmt stmt, int index);
51 static int __stmt_column_int(daci_stmt stmt, int index);
52 static sync_agent_da_return_e _get_table(SYNC_AGENT_DA_HANDLER * daci_handler, char *query, char ***result, int *row_count, int *col_count);
53 static void __free_table(char **result);
55 static sync_agent_da_return_e _create_changelog_table(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id);
56 static sync_agent_da_return_e _drop_changelog_table(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id);
57 static sync_agent_da_return_e _delete_changlog_table(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id);
59 static int __exist_table(SYNC_AGENT_DA_HANDLER * daci_handler, const char *table_name);
60 static int _get_data_count(SYNC_AGENT_DA_HANDLER * daci_handler, char *query, int size);
61 static char *__replace_table_name(char *old, int account_id, int count);
62 static char *__get_table_name(sync_agent_da_table_name_e table_name);
63 static char *_get_column_name(sync_agent_da_column_name_e column_name);
64 static int _get_next_account_id(void);
65 static sync_agent_da_return_e _delete_account(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_table_name_e table_name, int account_id);
67 static char *daci_file_path = 0;
68 static pthread_t use_transaction_thread_id = 0;
69 static pthread_mutex_t transaction_lock = PTHREAD_MUTEX_INITIALIZER;
70 static pthread_mutex_t exec_lock = PTHREAD_MUTEX_INITIALIZER;
72 static char *g_daci_create_table[] = {
73 /* 1. create account_tbl */
74 "create table account_tbl" "(" "account_id integer not null," "email_address varchar(51) not null," "password varchar(51) not null," "enable boolean not null default 1," "last_update date not null default current_timestamp,"
75 "access_name varchar(64) not null," "constraint account_tbl_pk primary key(account_id)" ");",
77 /* 2. create folder_tbl */
78 "create table folder_tbl" "(" "folder_id varchar(64) not null," "data_store_id integer not null," "account_id integer not null," "folder_type_id integer not null," "service_id varchar(20) default null," "parent_folder_id varchar(64) default null,"
79 "last_update date not null default current_timestamp," "access_name varchar(64) not null," "constraint folder_tbl_pk primary key(folder_id)," "constraint folder_tbl_account_id_fk foreign key(account_id) references account_tbl(account_id)" ");",
81 /* 3. create item_tbl */
82 "create table item_tbl"
84 "item_id varchar(64) not null,"
85 "data_store_id integer not null," "account_id integer not null," "folder_id varchar(64) not null," "service_id varchar(20) not null," "parent_service_id varchar(64) default null," "last_update date not null default current_timestamp," "access_name varchar(64) not null,"
86 "constraint item_tbl_pk primary key(item_id)," "constraint item_tbl_account_id_fk foreign key(account_id) references account_tbl(account_id)," "constraint itme_tbl_folder_id_fk foreign key(folder_id) references folder_tbl(folder_id),"
87 "constraint item_tbl_uk unique(data_store_id, account_id, service_id)" ");",
89 /* 4. create config_tbl */
90 "create table config_tbl" "(" "config_id integer not null," "key varchar(50) not null," "value varchar(30) default null," "type varchar(10) default null," "last_update date not null default current_timestamp," "access_name varchar(64) not null,"
91 "constraint config_tbl_pk primary key(config_id, Key)" ");",
93 /* 5. create account_item_changelog_tbl */
94 "create table account_%d_item_changelog_tbl" "(" "item_id varchar(64) not null," "operation_id integer not null," "status varchar(15) not null default \'SYNC_REQUIRED\'," "last_update date not null default current_timestamp,"
95 "access_name varchar(64) not null," "constraint account_%d_item_changelog_tbl_pk primary key(item_id)," "constraint account_%d_item_changelog_tbl_item_id_fk foreign key(item_id) references item_tbl(item_id)" ");",
97 /* 6. create last_anchor_tbl */
98 "create table last_anchor_tbl" "(" "account_id integer not null," "data_store_id integer not null," "last_anchor_server varchar(20) default null," "last_anchor_client varchar(20) default null," "last_update date not null default current_timestamp,"
99 "access_name varchar(64) not null," "constraint last_anchor_tbl_pk primary key(account_id, data_store_id)," "constraint last_anchor_tbl_account_id_fk foreign key(account_id) references account_tbl(account_id)" ");",
101 /* 7. create mapping_tbl */
102 "create table mapping_tbl" "(" "account_id integer not null," "data_store_id integer not null," "luid varchar(64) default null," "guid varchar(64) default null," "last_update date not null default current_timestamp,"
103 "access_name varchar(64) not null," "constraint mapping_tbl_pk primary key(account_id, luid)," "constraint mapping_tbl_account_id_fk foreign key(account_id) references account_tbl(account_id)" ");",
105 /* 8. create id_provider_tbl */
106 "create table id_provider_tbl" "(" "id_provider_code integer not null," "id_capacity integer not null," "bit_per_page integer not null," "last_id integer not null," "free_bit_cnt integer not null,"
107 "constraint id_provider_tbl_pk primary key(id_provider_code)" ");",
109 /* 9. create id_page_tbl */
110 "create table id_page_tbl" "(" "page_index integer not null," "id_provider_code integer not null," "page_bit BLOB," "constraint id_page_tbl_pk primary key(page_index, id_provider_code),"
111 "constraint id_page_tbl_fk foreign key(id_provider_code) references id_provider_tbl(id_provider_code)" ");"
114 static char *g_daci_drop_table[] = {
115 /* 1. drop account_tbl */
116 "drop table account_tbl",
118 /* 2. drop folder_tbl */
119 "drop table folder_tbl",
121 /* 3. drop item_tbl */
122 "drop table item_tbl",
124 /* 4. drop config_tbl */
125 "drop table config_tbl",
127 /* 5. drop account_item_changelog_tbl */
128 "drop table account_%d_item_changelog_tbl",
130 /* 6. drop last_anchor_tbl */
131 "drop table last_anchor_tbl",
133 /* 7. drop mapping_tbl */
134 "drop table mapping_tbl",
136 /* 8. drop id_provider_tbl */
137 "drop table id_provider_tbl",
139 /* 9. drop id_page_tbl */
140 "drop table id_page_tbl"
143 static char *g_daci_delete_table[] = {
144 /* 1. delete account_tbl */
145 "delete from account_tbl",
147 /* 2. delete folder_tbl */
148 "delete from folder_tbl",
150 /* 3. delete item_tbl */
151 "delete from item_tbl",
153 /* 4. delete config_tbl */
154 "delete from config_tbl",
156 /* 5. delete account_item_changelog_tbl */
157 "delete from account_%d_item_changelog_tbl",
159 /* 6. delete last_anchor_tbl */
160 "delete from last_anchor_tbl",
162 /* 7. delete mapping_tbl */
163 "delete from mapping_tbl",
165 /* 8. delete id_provider_tbl */
166 "delete from id_provider_tbl",
168 /* 9. delete id_page_tbl */
169 "delete from id_page_tbl"
172 sync_agent_da_return_e da_open_agent(SYNC_AGENT_DA_HANDLER ** daci_handler)
178 if (*daci_handler == NULL) {
181 /* ret = db_util_open(DACI_FILE_PATH, &(*daci_handler), 0); */
183 ret = sqlite3_open(daci_file_path, daci_handler);
184 if (ret != SQLITE_OK)
187 /* register busy handler */
188 ret = sqlite3_busy_handler(*daci_handler, _busy_handler, 0);
189 if (ret != SQLITE_OK) {
190 _DEBUG_INFO("Fail to register busy handler");
194 _DEBUG_INFO("agent_db_open_success");
197 _DEBUG_INFO("agent_db_already_opened");
202 return SYNC_AGENT_DA_SUCCESS;
206 _DEBUG_ERROR("agent_open failed(%d) : %s", ret, sqlite3_errmsg(*daci_handler));
208 sqlite3_close(*daci_handler);
211 return SYNC_AGENT_DA_ERR_OPEN_FAILED;
214 sync_agent_da_return_e da_close_Agent(SYNC_AGENT_DA_HANDLER * daci_handler)
218 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERR_CLOSE_FAILED, "SYNC_AGENT_DA_HANDLER is NULL !!");
221 ret = sqlite3_close(daci_handler);
224 if (ret != SQLITE_OK) {
225 _DEBUG_ERROR("agent_db_agent_close failed(%d) : %s", ret, sqlite3_errmsg(daci_handler));
226 return SYNC_AGENT_DA_ERR_CLOSE_FAILED;
229 _DEBUG_INFO("agent_db_agent_close_success");
233 return SYNC_AGENT_DA_SUCCESS;
236 sync_agent_da_return_e da_begin_transaction(SYNC_AGENT_DA_HANDLER * daci_handler)
240 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERR_TRANSACTION_FAILED, "SYNC_AGENT_DA_HANDLER is NULL !!");
242 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
244 int err_mutex = pthread_mutex_lock(&transaction_lock);
246 _DEBUG_INFO("Failed pthread_mutex_lock : %d", err_mutex);
249 use_transaction_thread_id = SYNC_AGENT_DA_GET_THREAD_ID;
251 ret = __query_exec(daci_handler, "begin immediate", "agent_db_begin_transaction failed");
253 if (ret == SYNC_AGENT_DA_ERR_QUERY_FAILED)
254 ret = SYNC_AGENT_DA_ERR_TRANSACTION_FAILED;
261 sync_agent_da_return_e da_end_transaction(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_transaction_e transaction)
265 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERR_TRANSACTION_FAILED, "SYNC_AGENT_DA_HANDLER is NULL !!");
267 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
271 if (transaction == SYNC_AGENT_DA_TRANSACTION_COMMIT) {
272 query = "commit transaction";
273 err_msg = "agent_db_commit_transaction failed";
274 } else if (transaction == SYNC_AGENT_DA_TRANSACTION_ROLLBACK) {
275 query = "rollback transaction";
276 err_msg = "agent_db_rollback_transaction failed";
279 ret = __query_exec(daci_handler, query, err_msg);
281 use_transaction_thread_id = 0;
282 int err_mutex = pthread_mutex_unlock(&transaction_lock);
284 _DEBUG_INFO("Failed pthread_mutex_unlock : %d", err_mutex);
287 if (ret == SYNC_AGENT_DA_ERR_QUERY_FAILED) {
288 if (transaction == SYNC_AGENT_DA_TRANSACTION_COMMIT) {
289 query = "rollback transaction";
290 err_msg = "agent_db_rollback_transaction failed";
291 ret = __query_exec(daci_handler, query, err_msg);
292 if (ret == SYNC_AGENT_DA_SUCCESS)
293 _DEBUG_INFO("agent_db_rollback_transaction success");
295 ret = SYNC_AGENT_DA_ERR_TRANSACTION_FAILED;
303 void da_set_agent_db_file_path(char *file_path)
307 retm_if(file_path == NULL, "file_path is NULL !!");
309 daci_file_path = file_path;
314 sync_agent_da_return_e da_create_agent_default_table(SYNC_AGENT_DA_HANDLER * daci_handler)
318 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
320 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
322 if ((da_begin_transaction(daci_handler) != SYNC_AGENT_DA_SUCCESS)) {
323 _DEBUG_ERROR("agent_db_default_tbl_create failed");
324 return SYNC_AGENT_DA_ERR_CREATE_TABLE_FAILED;
327 /* 1. create account_tbl */
328 if (__exist_table(daci_handler, "account_tbl") == 0) {
329 ret = __query_exec(daci_handler, g_daci_create_table[SYNC_AGENT_DA_TABLE_NAME_ACCOUNT], "account_tbl_create failed");
330 if (ret != SYNC_AGENT_DA_SUCCESS)
334 /* 2. create folder_tbl */
335 if (__exist_table(daci_handler, "folder_tbl") == 0) {
336 ret = __query_exec(daci_handler, g_daci_create_table[SYNC_AGENT_DA_TABLE_NAME_FOLDER], "folder_tbl_create failed");
337 if (ret != SYNC_AGENT_DA_SUCCESS)
341 /* 3. create item_tbl */
342 if (__exist_table(daci_handler, "item_tbl") == 0) {
343 ret = __query_exec(daci_handler, g_daci_create_table[SYNC_AGENT_DA_TABLE_NAME_ITEM], "item_tbl_create failed");
344 if (ret != SYNC_AGENT_DA_SUCCESS)
348 /* 4. create config_tbl */
349 if (__exist_table(daci_handler, "config_tbl") == 0) {
350 ret = __query_exec(daci_handler, g_daci_create_table[SYNC_AGENT_DA_TABLE_NAME_CONFIG], "config_tbl_create failed");
351 if (ret != SYNC_AGENT_DA_SUCCESS)
355 /* 5. create last_anchor_tbl */
356 if (__exist_table(daci_handler, "last_anchor_tbl") == 0) {
357 ret = __query_exec(daci_handler, g_daci_create_table[SYNC_AGENT_DA_TABLE_NAME_LAST_ANCHOR], "last_anchor_tbl_create failed");
358 if (ret != SYNC_AGENT_DA_SUCCESS)
362 /* 6. create mapping_tbl */
363 if (__exist_table(daci_handler, "mapping_tbl") == 0) {
364 ret = __query_exec(daci_handler, g_daci_create_table[SYNC_AGENT_DA_TABLE_NAME_MAPPING], "mapping_tbl_create failed");
365 if (ret != SYNC_AGENT_DA_SUCCESS)
369 /* 7. create id_provider_tbl */
370 if (__exist_table(daci_handler, "id_provider_tbl") == 0) {
371 ret = __query_exec(daci_handler, g_daci_create_table[SYNC_AGENT_DA_TABLE_NAME_ID_PROVIDER], "id_provider_tbl_create failed");
372 if (ret != SYNC_AGENT_DA_SUCCESS)
376 /* 8. create id_page_tbl */
377 if (__exist_table(daci_handler, "id_page_tbl") == 0) {
378 ret = __query_exec(daci_handler, g_daci_create_table[SYNC_AGENT_DA_TABLE_NAME_ID_PAGE], "id_page_tbl_create failed");
379 if (ret != SYNC_AGENT_DA_SUCCESS)
385 if (ret != SYNC_AGENT_DA_SUCCESS) {
386 da_end_transaction(daci_handler, SYNC_AGENT_DA_TRANSACTION_ROLLBACK);
387 ret = SYNC_AGENT_DA_ERR_CREATE_TABLE_FAILED;
389 ret = da_end_transaction(daci_handler, SYNC_AGENT_DA_TRANSACTION_COMMIT);
397 sync_agent_da_return_e da_empty_agent_default_table(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_table_name_e table_name)
401 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
403 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
405 /* delete default table */
406 ret = __query_exec(daci_handler, g_daci_delete_table[table_name], "deleting table failed");
407 if (ret != SYNC_AGENT_DA_SUCCESS) {
408 ret = SYNC_AGENT_DA_ERR_QUERY_FAILED;
409 _DEBUG_ERROR("deleting table [query:%s] failed !!!\n", g_daci_delete_table[table_name]);
410 da_end_transaction(daci_handler, SYNC_AGENT_DA_TRANSACTION_ROLLBACK);
412 _DEBUG_INFO("table deleted [query:%s] !!!\n", g_daci_delete_table[table_name]);
419 sync_agent_da_return_e da_empty_all_agent_table(SYNC_AGENT_DA_HANDLER * daci_handler)
423 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
425 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
426 int *account_id_list = 0;
430 ret = da_begin_transaction(daci_handler);
431 if (ret != SYNC_AGENT_DA_SUCCESS) {
432 _DEBUG_ERROR("tbl_delete failed");
433 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
436 /* delete all changelog table */
437 account_id_list = da_get_account_account_id_list(daci_handler, &count);
438 if (account_id_list == NULL) {
439 _DEBUG_INFO("accountIdList empty !!!!!");
441 _DEBUG_INFO("accountListCount : %d", count);
442 for (i = 0; i < count; i++) {
443 ret = _delete_changlog_table(daci_handler, account_id_list[i]);
444 if (ret != SYNC_AGENT_DA_SUCCESS) {
446 if (account_id_list != NULL)
447 free(account_id_list);
449 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
454 /* delete all default table */
455 for (i = 0; i < SYNC_AGENT_DA_TABLE_NAME_MAX; i++) {
456 if (i == SYNC_AGENT_DA_TABLE_NAME_ACCOUNT_ITEM_CHANGELOG || i == SYNC_AGENT_DA_TABLE_NAME_ID_PROVIDER || i == SYNC_AGENT_DA_TABLE_NAME_ID_PAGE)
459 ret = __query_exec(daci_handler, g_daci_delete_table[i], "deleting table failed");
460 if (ret != SYNC_AGENT_DA_SUCCESS) {
461 ret = SYNC_AGENT_DA_ERR_QUERY_FAILED;
462 _DEBUG_ERROR("deleting table [query:%s] failed !!!\n", g_daci_delete_table[i]);
465 _DEBUG_INFO("table deleted [query:%s] !!!\n", g_daci_delete_table[i]);
470 if (ret != SYNC_AGENT_DA_SUCCESS)
471 ret = da_end_transaction(daci_handler, SYNC_AGENT_DA_TRANSACTION_ROLLBACK);
473 ret = da_end_transaction(daci_handler, SYNC_AGENT_DA_TRANSACTION_COMMIT);
476 if (account_id_list != NULL)
477 free(account_id_list);
484 int da_add_fw_account(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_fw_account_s * account)
488 retvm_if(daci_handler == NULL, -1, "SYNC_AGENT_DA_HANDLER is NULL !!");
489 retvm_if(account == NULL, -1, "sync_agent_fw_account_s is NULL !!");
491 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
493 char *query = "insert into account_tbl (account_id, email_address, password, enable, access_name) values (?, ?, ?, ?, ?)";
495 account->account_id = _get_next_account_id();
497 if (account->account_id > SYNC_AGENT_DA_MAX_ACCOUNT) {
498 _DEBUG_ERROR("account registration is full");
499 account->account_id = -1;
503 stmt = __query_prepare(daci_handler, query, strlen(query));
505 account->account_id = -1;
509 _stmt_bind_int(daci_handler, stmt, 1, account->account_id);
510 __stmt_bind_text(daci_handler, stmt, 2, account->email);
511 __stmt_bind_text(daci_handler, stmt, 3, account->password);
512 _stmt_bind_int(daci_handler, stmt, 4, account->enable);
513 __stmt_bind_text(daci_handler, stmt, 5, account->access_name);
515 ret = __stmt_write_step(daci_handler, stmt);
516 if (ret != SYNC_AGENT_DA_SUCCESS)
517 account->account_id = -1;
519 __stmt_finalize(daci_handler, stmt);
521 if (account->account_id != -1) {
522 _create_changelog_table(daci_handler, account->account_id);
529 return account->account_id;
532 sync_agent_da_return_e da_update_fw_account(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_fw_account_s * account)
536 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
537 retvm_if(account == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_fw_account_s is NULL !!");
539 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
541 char *query = "update account_tbl set email_address = ?, password = ?, enable = ?, last_update = current_timestamp, access_name = ? where account_id = ?";
543 stmt = __query_prepare(daci_handler, query, strlen(query));
545 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
547 __stmt_bind_text(daci_handler, stmt, 1, account->email);
548 __stmt_bind_text(daci_handler, stmt, 2, account->password);
549 _stmt_bind_int(daci_handler, stmt, 3, account->enable);
550 __stmt_bind_text(daci_handler, stmt, 4, account->access_name);
551 _stmt_bind_int(daci_handler, stmt, 5, account->account_id);
553 ret = __stmt_write_step(daci_handler, stmt);
554 __stmt_finalize(daci_handler, stmt);
561 sync_agent_da_return_e da_delete_fw_account(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id)
565 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
567 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
570 /* delete default table by accountId */
571 for (i = 0; i < SYNC_AGENT_DA_TABLE_NAME_MAX; i++) {
572 if (i == SYNC_AGENT_DA_TABLE_NAME_ACCOUNT_ITEM_CHANGELOG) {
576 ret = _delete_account(daci_handler, i, account_id);
577 if (ret != SYNC_AGENT_DA_SUCCESS) {
578 ret = SYNC_AGENT_DA_ERR_QUERY_FAILED;
583 /* drop changelog table */
584 ret = _drop_changelog_table(daci_handler, account_id);
585 if (ret != SYNC_AGENT_DA_SUCCESS) {
586 ret = SYNC_AGENT_DA_ERR_QUERY_FAILED;
597 sync_agent_da_return_e da_get_fw_account(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, sync_agent_fw_account_s ** account)
601 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
603 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
606 char *query = "select account_id, email_address, password, enable, access_name from account_tbl where account_id = ?";
608 stmt = __query_prepare(daci_handler, query, strlen(query));
611 _stmt_bind_int(daci_handler, stmt, 1, account_id);
613 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
614 (*account)->account_id = __stmt_column_int(stmt, 0);
615 (*account)->email = _stmt_column_text(stmt, 1);
616 (*account)->password = _stmt_column_text(stmt, 2);
617 (*account)->enable = __stmt_column_int(stmt, 3);
618 (*account)->access_name = _stmt_column_text(stmt, 4);
621 __stmt_finalize(daci_handler, stmt);
629 sync_agent_da_return_e da_get_all_fw_account(SYNC_AGENT_DA_HANDLER * daci_handler, GList ** list)
633 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
635 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
640 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
641 sync_agent_fw_account_s *fw_account = NULL;
642 GList *account_list = NULL;
644 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from account_tbl");
646 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
648 if (data_count != 0) {
649 /* query initialize */
650 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
652 snprintf(g_daci_query, sizeof(g_daci_query), "select account_id, email_address, password, enable, access_name from account_tbl");
654 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
656 for (i = 0; i < data_count; i++) {
657 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA)
660 fw_account = (sync_agent_fw_account_s *) calloc(1, sizeof(sync_agent_fw_account_s));
661 fw_account->account_id = __stmt_column_int(stmt, 0);
662 fw_account->email = _stmt_column_text(stmt, 1);
663 fw_account->password = _stmt_column_text(stmt, 2);
664 fw_account->enable = __stmt_column_int(stmt, 3);
665 fw_account->access_name = _stmt_column_text(stmt, 4);
667 account_list = g_list_append(account_list, fw_account);
669 __stmt_finalize(daci_handler, stmt);
673 *list = account_list;
680 sync_agent_da_return_e da_get_fw_account_by_access_name(SYNC_AGENT_DA_HANDLER * daci_handler, char *access_name, GList ** list)
684 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
685 retvm_if(access_name == NULL, SYNC_AGENT_DA_ERRORS, "access name is NULL !!");
687 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
692 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
693 sync_agent_fw_account_s *fw_account = NULL;
694 GList *account_list = NULL;
696 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from account_tbl where access_name = \'%s\'", access_name);
698 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
700 if (data_count != 0) {
701 /* query initialize */
702 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
704 snprintf(g_daci_query, sizeof(g_daci_query), "select account_id, email_address, password, enable, access_name from account_tbl where access_name = \'%s\'", access_name);
706 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
708 for (i = 0; i < data_count; i++) {
709 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA)
712 fw_account = (sync_agent_fw_account_s *) calloc(1, sizeof(sync_agent_fw_account_s));
713 fw_account->account_id = __stmt_column_int(stmt, 0);
714 fw_account->email = _stmt_column_text(stmt, 1);
715 fw_account->password = _stmt_column_text(stmt, 2);
716 fw_account->enable = __stmt_column_int(stmt, 3);
717 fw_account->access_name = _stmt_column_text(stmt, 4);
719 account_list = g_list_append(account_list, fw_account);
721 __stmt_finalize(daci_handler, stmt);
724 *list = account_list;
731 int *da_get_account_account_id_list(SYNC_AGENT_DA_HANDLER * daci_handler, int *count)
735 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
738 int *account_id_list = 0;
741 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
743 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from account_tbl");
745 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
748 if (data_count != 0) {
749 /* query initialize */
750 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
752 account_id_list = SYNC_AGENT_DA_MEMORY_MALLOC(int *, sizeof(int), data_count);
753 if (account_id_list == NULL) {
754 _DEBUG_ERROR("memory_allocation failed");
755 return account_id_list;
758 snprintf(g_daci_query, sizeof(g_daci_query), "select account_id from account_tbl");
760 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
762 for (i = 0; i < data_count; i++) {
763 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA)
766 account_id_list[i] = __stmt_column_int(stmt, 0);
768 __stmt_finalize(daci_handler, stmt);
774 return account_id_list;
777 int da_is_exist_account(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id)
781 retvm_if(daci_handler == NULL, 0, "SYNC_AGENT_DA_HANDLER is NULL !!");
785 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
787 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from account_tbl where account_id = %d", account_id);
789 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
799 int da_get_account_count(SYNC_AGENT_DA_HANDLER * daci_handler)
803 retvm_if(daci_handler == NULL, 0, "SYNC_AGENT_DA_HANDLER is NULL !!");
806 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
808 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from account_tbl");
810 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
817 sync_agent_da_return_e da_add_folder(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_folder_s * folder, int count)
821 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
822 retvm_if(folder == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_folder_s is NULL !!");
825 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
829 for (i = 0; i < count; i++) {
830 if (da_is_exist_folder(daci_handler, folder[i].account_id, folder[i].folder_id) == 1)
831 return SYNC_AGENT_DA_ERR_PRIMARY_KEY_NOT_UNIQUE;
834 query = "insert into folder_tbl (folder_id, data_store_id, account_id, folder_type_id, service_id, parent_folder_id, access_name) values (?, ?, ?, ?, ?, ?, ?)";
836 stmt = __query_prepare(daci_handler, query, strlen(query));
838 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
840 for (i = 0; i < count; i++) {
841 __stmt_bind_text(daci_handler, stmt, 1, folder[i].folder_id);
842 _stmt_bind_int(daci_handler, stmt, 2, folder[i].data_store_id);
843 _stmt_bind_int(daci_handler, stmt, 3, folder[i].account_id);
844 _stmt_bind_int(daci_handler, stmt, 4, folder[i].folder_type_id);
845 __stmt_bind_text(daci_handler, stmt, 5, folder[i].service_id);
846 __stmt_bind_text(daci_handler, stmt, 6, folder[i].parent_folder_id);
847 __stmt_bind_text(daci_handler, stmt, 7, folder[i].access_name);
849 ret = __stmt_write_step(daci_handler, stmt);
850 if ((ret != SYNC_AGENT_DA_ERR_MORE_DATA) && (ret != SYNC_AGENT_DA_SUCCESS)) {
851 __stmt_finalize(daci_handler, stmt);
852 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
854 _stmt_reset(daci_handler, stmt);
856 __stmt_finalize(daci_handler, stmt);
863 sync_agent_da_return_e da_add_folder_new(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_folder_s * folder, int count, char **folder_id)
867 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
868 retvm_if(folder == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_folder_s is NULL !!");
871 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
876 for (i = 0; i < count; i++) {
877 if (folder[i].folder_id != NULL) {
878 if (da_is_exist_folder(daci_handler, folder[i].account_id, folder[i].folder_id) == 1)
879 return SYNC_AGENT_DA_ERR_PRIMARY_KEY_NOT_UNIQUE;
883 query = "insert into folder_tbl (folder_id, data_store_id, account_id, folder_type_id, service_id, parent_folder_id, access_name) values (?, ?, ?, ?, ?, ?, ?)";
885 stmt = __query_prepare(daci_handler, query, strlen(query));
887 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
889 for (i = 0; i < count; i++) {
890 if (folder[i].folder_id != NULL) {
891 __stmt_bind_text(daci_handler, stmt, 1, folder[i].folder_id);
892 *folder_id = strdup(folder[i].folder_id);
894 f_id = sync_agent_generate_folder_luid();
896 __stmt_bind_text(daci_handler, stmt, 1, f_id);
898 *folder_id = strdup(f_id);
905 _DEBUG_ERROR("sync_agent_generate_folder_luid() failed !!");
906 return SYNC_AGENT_DA_ERRORS;
909 _stmt_bind_int(daci_handler, stmt, 2, folder[i].data_store_id);
910 _stmt_bind_int(daci_handler, stmt, 3, folder[i].account_id);
911 _stmt_bind_int(daci_handler, stmt, 4, folder[i].folder_type_id);
912 __stmt_bind_text(daci_handler, stmt, 5, folder[i].service_id);
913 __stmt_bind_text(daci_handler, stmt, 6, folder[i].parent_folder_id);
914 __stmt_bind_text(daci_handler, stmt, 7, folder[i].access_name);
916 ret = __stmt_write_step(daci_handler, stmt);
917 if ((ret != SYNC_AGENT_DA_ERR_MORE_DATA) && (ret != SYNC_AGENT_DA_SUCCESS)) {
918 __stmt_finalize(daci_handler, stmt);
919 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
921 _stmt_reset(daci_handler, stmt);
923 __stmt_finalize(daci_handler, stmt);
930 sync_agent_da_return_e da_delete_folder_by_folder_id(SYNC_AGENT_DA_HANDLER * daci_handler, char *folderId)
934 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
935 retvm_if(folderId == NULL, SYNC_AGENT_DA_ERRORS, "folder Id is NULL !!");
937 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
939 char *query = "delete from folder_tbl where folder_id = ?";
941 stmt = __query_prepare(daci_handler, query, strlen(query));
943 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
945 __stmt_bind_text(daci_handler, stmt, 1, folderId);
947 ret = __stmt_write_step(daci_handler, stmt);
948 __stmt_finalize(daci_handler, stmt);
955 char *da_get_folder_folder_id_by_service_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int itemTypeId, char *serviceId, int folderTypeId)
959 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
960 retvm_if(serviceId == NULL, NULL, "service Id is NULL !!");
964 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
966 snprintf(g_daci_query, sizeof(g_daci_query), "select folder_id from folder_tbl where account_id = %d and data_store_id = %d and service_id = %s and folder_type_id = %d", account_id, itemTypeId, serviceId, folderTypeId);
968 _DEBUG_INFO("Query : %s", g_daci_query);
970 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
972 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA)
973 folder_id = _stmt_column_text(stmt, 0);
975 __stmt_finalize(daci_handler, stmt);
983 sync_agent_da_id_list_s *da_get_folder_folder_id_by_folder_type_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int itemTypeId, int folderTypeId)
987 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
990 sync_agent_da_id_list_s *folder_id_list = 0;
991 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
993 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from folder_tbl where account_id = %d and folder_type_id = %d and data_store_id = %d", account_id, folderTypeId, itemTypeId);
995 int data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
997 if (data_count != 0) {
998 snprintf(g_daci_query, sizeof(g_daci_query), "select folder_id from folder_tbl where account_id = %d and folder_type_id = %d and data_store_id = %d", account_id, folderTypeId, itemTypeId);
1000 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
1002 folder_id_list = (sync_agent_da_id_list_s *) calloc(1, sizeof(sync_agent_da_id_list_s));
1003 if (folder_id_list == NULL) {
1004 _DEBUG_ERROR("CALLOC failed !!!");
1007 folder_id_list->id = (char **)calloc(data_count, sizeof(char *));
1008 if (folder_id_list->id == NULL) {
1010 if (folder_id_list != NULL)
1011 free(folder_id_list);
1013 _DEBUG_ERROR("CALLOC failed !!!");
1016 folder_id_list->count = data_count;
1018 for (; i < data_count; i++) {
1019 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA) {
1023 folder_id_list->id[i] = _stmt_column_text(stmt, 0);
1025 __stmt_finalize(daci_handler, stmt);
1031 return folder_id_list;
1034 sync_agent_da_return_e da_get_folder_folder_id_by_folder_type_id_new(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int item_type_id, int folder_type_id, GList ** list)
1038 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1042 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
1044 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from folder_tbl where account_id = %d and folder_type_id = %d and data_store_id = %d", account_id, folder_type_id, item_type_id);
1046 int data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
1048 if (data_count != 0) {
1049 snprintf(g_daci_query, sizeof(g_daci_query), "select folder_id from folder_tbl where account_id = %d and folder_type_id = %d and data_store_id = %d", account_id, folder_type_id, item_type_id);
1051 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
1054 for (; i < data_count; i++) {
1055 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA) {
1060 item_id = _stmt_column_text(stmt, 0);
1062 *list = g_list_append(*list, item_id);
1064 __stmt_finalize(daci_handler, stmt);
1070 return SYNC_AGENT_DA_SUCCESS;
1073 char *da_get_folder_service_id(SYNC_AGENT_DA_HANDLER * daci_handler, char *folderId)
1077 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
1078 retvm_if(folderId == NULL, NULL, "folder Id is NULL !!");
1081 char *query = "select service_id from folder_tbl where folder_id = ?";
1082 char *service_id = 0;
1084 stmt = __query_prepare(daci_handler, query, strlen(query));
1086 __stmt_bind_text(daci_handler, stmt, 1, folderId);
1088 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA)
1089 service_id = _stmt_column_text(stmt, 0);
1091 __stmt_finalize(daci_handler, stmt);
1099 sync_agent_da_id_list_s *da_get_folder_folder_id_list_by_item_type_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int itemTypeId)
1103 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
1106 sync_agent_da_id_list_s *folder_id_list = 0;
1107 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
1109 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from folder_tbl where account_id = %d and data_store_id = %d", account_id, itemTypeId);
1111 int data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
1113 if (data_count != 0) {
1114 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
1116 snprintf(g_daci_query, sizeof(g_daci_query), "select folder_id from folder_tbl where account_id = %d and data_store_id = %d", account_id, itemTypeId);
1118 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
1120 folder_id_list = (sync_agent_da_id_list_s *) calloc(1, sizeof(sync_agent_da_id_list_s));
1121 if (folder_id_list == NULL) {
1122 _DEBUG_ERROR("CALLOC failed !!!");
1125 folder_id_list->id = (char **)calloc(data_count, sizeof(char *));
1126 if (folder_id_list->id == NULL) {
1128 if (folder_id_list != NULL)
1129 free(folder_id_list);
1131 _DEBUG_ERROR("CALLOC failed !!!");
1134 folder_id_list->count = data_count;
1136 for (; i < data_count; i++) {
1137 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA) {
1141 folder_id_list->id[i] = _stmt_column_text(stmt, 0);
1143 __stmt_finalize(daci_handler, stmt);
1149 return folder_id_list;
1152 sync_agent_da_return_e da_get_folder_folder_id_list_by_item_type_id_new(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int item_type_id, GList ** list)
1156 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1160 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
1162 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from folder_tbl where account_id = %d and data_store_id = %d", account_id, item_type_id);
1164 int data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
1166 if (data_count != 0) {
1167 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
1169 snprintf(g_daci_query, sizeof(g_daci_query), "select folder_id from folder_tbl where account_id = %d and data_store_id = %d", account_id, item_type_id);
1171 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
1174 for (; i < data_count; i++) {
1175 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA) {
1180 item_id = _stmt_column_text(stmt, 0);
1182 *list = g_list_append(*list, item_id);
1184 __stmt_finalize(daci_handler, stmt);
1190 return SYNC_AGENT_DA_SUCCESS;
1193 sync_agent_da_folder_s *da_get_folder_mapping_service_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *folderId, int *count)
1197 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
1198 retvm_if(folderId == NULL, NULL, "folder Id is NULL !!");
1201 sync_agent_da_folder_s *folder = 0;
1204 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
1206 snprintf(g_daci_query, sizeof(g_daci_query),
1207 "select count(*) from folder_tbl where folder_type_id in (select folder_type_id from folder_tbl where account_id = %d and folder_id = \'%s\') "
1208 "and (account_id != %d) and (account_id != %d) and data_store_id in (select data_store_id from folder_tbl where folder_id = \'%s\')", account_id, folderId, account_id, account_id, folderId);
1210 _DEBUG_INFO("[RJW] %s", g_daci_query);
1212 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
1213 *count = data_count;
1215 if (data_count != 0) {
1216 /* query initialize */
1217 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
1219 folder = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_folder_s *, sizeof(sync_agent_da_folder_s), data_count);
1220 if (folder == NULL) {
1221 _DEBUG_ERROR("memory_allocation failed");
1225 snprintf(g_daci_query, sizeof(g_daci_query),
1226 "select * from folder_tbl where folder_type_id in (select folder_type_id from folder_tbl where account_id = %d and folder_id = \'%s\') "
1227 "and (account_id != %d) and (account_id != %d) and data_store_id in (select data_store_id from folder_tbl where folder_id = \'%s\')", account_id, folderId, account_id, account_id, folderId);
1229 _DEBUG_INFO("[RJW] %s", g_daci_query);
1231 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
1233 for (i = 0; i < data_count; i++) {
1234 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA)
1237 folder[i].folder_id = _stmt_column_text(stmt, 0);
1238 folder[i].data_store_id = __stmt_column_int(stmt, 1);
1239 folder[i].account_id = __stmt_column_int(stmt, 2);
1240 folder[i].folder_type_id = __stmt_column_int(stmt, 3);
1241 folder[i].service_id = _stmt_column_text(stmt, 4);
1242 folder[i].parent_folder_id = _stmt_column_text(stmt, 5);
1243 folder[i].access_name = _stmt_column_text(stmt, 7);
1245 __stmt_finalize(daci_handler, stmt);
1254 sync_agent_da_return_e da_get_folder_mapping_service_id_new(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *folder_id, GList ** list)
1258 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1259 retvm_if(folder_id == NULL, SYNC_AGENT_DA_ERRORS, "folder id is NULL !!");
1262 sync_agent_da_folder_s *folder;
1263 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
1266 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
1268 snprintf(g_daci_query, sizeof(g_daci_query),
1269 "select count(*) from folder_tbl where folder_type_id in (select folder_type_id from folder_tbl where account_id = %d and folder_id = \'%s\') "
1270 "and (account_id != %d) and (account_id != %d) and data_store_id in (select data_store_id from folder_tbl where folder_id = \'%s\')", account_id, folder_id, account_id, account_id, folder_id);
1272 _DEBUG_INFO("[RJW] %s", g_daci_query);
1274 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
1276 if (data_count != 0) {
1277 /* query initialize */
1278 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
1280 snprintf(g_daci_query, sizeof(g_daci_query),
1281 "select * from folder_tbl where folder_type_id in (select folder_type_id from folder_tbl where account_id = %d and folder_id = \'%s\') "
1282 "and (account_id != %d) and (account_id != %d) and data_store_id in (select data_store_id from folder_tbl where folder_id = \'%s\')", account_id, folder_id, account_id, account_id, folder_id);
1284 _DEBUG_INFO("[RJW] %s", g_daci_query);
1286 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
1288 for (i = 0; i < data_count; i++) {
1289 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA)
1293 ret = sync_agent_create_folder(&folder);
1294 if (ret != SYNC_AGENT_DA_SUCCESS) {
1295 _DEBUG_ERROR("sync_agent_create_folder() failed !!");
1299 folder->folder_id = _stmt_column_text(stmt, 0);
1300 folder->data_store_id = __stmt_column_int(stmt, 1);
1301 folder->account_id = __stmt_column_int(stmt, 2);
1302 folder->folder_type_id = __stmt_column_int(stmt, 3);
1303 folder->service_id = _stmt_column_text(stmt, 4);
1304 folder->parent_folder_id = _stmt_column_text(stmt, 5);
1305 folder->access_name = _stmt_column_text(stmt, 7);
1307 *list = g_list_append(*list, folder);
1309 __stmt_finalize(daci_handler, stmt);
1312 _DEBUG_INFO("no data !!");
1313 ret = SYNC_AGENT_DA_SUCCESS;
1321 sync_agent_da_return_e da_get_folder_by_folder_id(SYNC_AGENT_DA_HANDLER * daci_handler, char *folder_id, sync_agent_da_folder_s ** sync_agent_folder)
1325 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1326 retvm_if(folder_id == NULL, SYNC_AGENT_DA_ERRORS, "folder id is NULL !!");
1329 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1330 char *query = "select * from folder_tbl where folder_id = ?";
1332 stmt = __query_prepare(daci_handler, query, strlen(query));
1334 __stmt_bind_text(daci_handler, stmt, 1, folder_id);
1336 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
1337 (*sync_agent_folder)->folder_id = _stmt_column_text(stmt, 0);
1338 (*sync_agent_folder)->data_store_id = __stmt_column_int(stmt, 1);
1339 (*sync_agent_folder)->account_id = __stmt_column_int(stmt, 2);
1340 (*sync_agent_folder)->folder_type_id = __stmt_column_int(stmt, 3);
1341 (*sync_agent_folder)->service_id = _stmt_column_text(stmt, 4);
1342 (*sync_agent_folder)->parent_folder_id = _stmt_column_text(stmt, 5);
1343 (*sync_agent_folder)->access_name = _stmt_column_text(stmt, 7);
1345 __stmt_finalize(daci_handler, stmt);
1353 int da_is_exist_folder(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *folderId)
1357 retvm_if(daci_handler == NULL, 0, "SYNC_AGENT_DA_HANDLER is NULL !!");
1358 retvm_if(folderId == NULL, 0, "folder Id is NULL !!");
1362 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
1364 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from folder_tbl where account_id = %d and folder_id = \'%s\'", account_id, folderId);
1366 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
1368 if (data_count == 0)
1371 _DEBUG_INFO("[%s] End !\n", __func__);
1378 sync_agent_da_return_e da_add_item(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_item_s * item, int count)
1382 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1383 retvm_if(item == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_item_s is NULL !!");
1386 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1389 for (i = 0; i < count; i++) {
1390 if (da_is_exist_item(daci_handler, item[i].item_id) == 1)
1391 return SYNC_AGENT_DA_ERR_PRIMARY_KEY_NOT_UNIQUE;
1394 char *query = "insert into item_tbl (item_id, data_store_id, account_id, folder_id, service_id, parent_service_id, access_name) values (?, ?, ?, ?, ?, ?, ?)";
1396 stmt = __query_prepare(daci_handler, query, strlen(query));
1398 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
1401 for (i = 0; i < count; i++) {
1402 __stmt_bind_text(daci_handler, stmt, 1, item[i].item_id);
1403 _stmt_bind_int(daci_handler, stmt, 2, item[i].data_store_id);
1404 _stmt_bind_int(daci_handler, stmt, 3, item[i].account_id);
1405 __stmt_bind_text(daci_handler, stmt, 4, item[i].folder_id);
1406 __stmt_bind_text(daci_handler, stmt, 5, item[i].service_id);
1407 __stmt_bind_text(daci_handler, stmt, 6, item[i].parent_service_id);
1408 __stmt_bind_text(daci_handler, stmt, 7, item[i].access_name);
1410 ret = __stmt_write_step(daci_handler, stmt);
1411 if ((ret != SYNC_AGENT_DA_ERR_MORE_DATA) && (ret != SYNC_AGENT_DA_SUCCESS)) {
1412 __stmt_finalize(daci_handler, stmt);
1413 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
1415 _stmt_reset(daci_handler, stmt);
1418 __stmt_finalize(daci_handler, stmt);
1423 sync_agent_da_return_e da_update_item(SYNC_AGENT_DA_HANDLER * daci_handler, char *fw_id, char *parent_id)
1426 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1427 retvm_if(fw_id == NULL, SYNC_AGENT_DA_ERRORS, "fw_id is NULL !!");
1428 retvm_if(parent_id == NULL, SYNC_AGENT_DA_ERRORS, "parent_id is NULL !!");
1430 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1432 char query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = {0,};
1434 snprintf(query, sizeof(query), "update item_tbl set parent_service_id = %s where item_id = %s", parent_id, fw_id);
1435 _DEBUG_INFO("query = %s", query);
1436 stmt = __query_prepare(daci_handler, query, strlen(query));
1438 _DEBUG_ERROR("stmt is null");
1439 ret = SYNC_AGENT_DA_ERR_QUERY_FAILED;
1443 ret = __stmt_write_step(daci_handler, stmt);
1444 if (ret != SYNC_AGENT_DA_SUCCESS) {
1445 _DEBUG_ERROR("__stmt_write_step() failed !!");
1448 __stmt_finalize(daci_handler, stmt);
1451 _DEBUG_INFO("return_part");
1456 sync_agent_da_return_e da_add_item_new(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_item_s * item, int count, char **item_id)
1460 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1461 retvm_if(item == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_item_s is NULL !!");
1464 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1465 char **id_list = NULL;
1468 for (i = 0; i < count; i++) {
1469 if (item[i].item_id != NULL) {
1470 if (da_is_exist_item(daci_handler, item[i].item_id) == 1)
1471 return SYNC_AGENT_DA_ERR_PRIMARY_KEY_NOT_UNIQUE;
1475 char *query = "insert into item_tbl (item_id, data_store_id, account_id, folder_id, service_id, parent_service_id, access_name) values (?, ?, ?, ?, ?, ?, ?)";
1477 stmt = __query_prepare(daci_handler, query, strlen(query));
1479 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
1482 for (i = 0; i < count; i++) {
1483 if (item[i].item_id != NULL) {
1484 __stmt_bind_text(daci_handler, stmt, 1, item[i].item_id);
1485 *item_id = strdup(item[i].item_id);
1487 id_list = sync_agent_generate_item_luid(1, 1);
1488 if (id_list != NULL) {
1489 __stmt_bind_text(daci_handler, stmt, 1, id_list[0]);
1491 *item_id = strdup(id_list[0]);
1493 if (id_list[0] != NULL)
1496 if (id_list != NULL)
1501 _DEBUG_ERROR("sync_agent_generate_item_luid() failed !!");
1502 return SYNC_AGENT_DA_ERRORS;
1505 _stmt_bind_int(daci_handler, stmt, 2, item[i].data_store_id);
1506 _stmt_bind_int(daci_handler, stmt, 3, item[i].account_id);
1507 __stmt_bind_text(daci_handler, stmt, 4, item[i].folder_id);
1508 __stmt_bind_text(daci_handler, stmt, 5, item[i].service_id);
1509 __stmt_bind_text(daci_handler, stmt, 6, item[i].parent_service_id);
1510 __stmt_bind_text(daci_handler, stmt, 7, item[i].access_name);
1512 ret = __stmt_write_step(daci_handler, stmt);
1513 if ((ret != SYNC_AGENT_DA_ERR_MORE_DATA) && (ret != SYNC_AGENT_DA_SUCCESS)) {
1514 __stmt_finalize(daci_handler, stmt);
1515 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
1517 _stmt_reset(daci_handler, stmt);
1520 __stmt_finalize(daci_handler, stmt);
1527 sync_agent_da_return_e da_delete_item_by_Item_id(SYNC_AGENT_DA_HANDLER * daci_handler, char *itemId)
1531 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1532 retvm_if(itemId == NULL, SYNC_AGENT_DA_ERRORS, "item Id is NULL !!");
1534 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1536 char query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = {0,};
1537 char *service_id = NULL;
1539 snprintf(query, sizeof(query), "select service_id from item_tbl where item_id = %s", itemId);
1540 stmt = __query_prepare(daci_handler, query, strlen(query));
1542 _DEBUG_ERROR("stmt is null");
1543 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
1546 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA)
1547 service_id = _stmt_column_text(stmt, 0);
1548 _DEBUG_INFO("[da_delete_item_by_Item_id] service_id = %s", service_id);
1549 __stmt_finalize(daci_handler, stmt);
1550 SYNC_AGENT_DA_MEMORY_SET(query);
1552 snprintf(query, sizeof(query), "delete from item_tbl where parent_service_id = %s", service_id);
1553 stmt = __query_prepare(daci_handler, query, strlen(query));
1555 _DEBUG_ERROR("stmt is null");
1556 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
1559 _DEBUG_INFO("[da_delete_item_by_Item_id] before __stmt_write_step()");
1560 ret = __stmt_write_step(daci_handler, stmt);
1561 __stmt_finalize(daci_handler, stmt);
1562 SYNC_AGENT_DA_MEMORY_SET(query);
1564 snprintf(query, sizeof(query), "delete from item_tbl where item_id = %s", itemId);
1565 stmt = __query_prepare(daci_handler, query, strlen(query));
1567 _DEBUG_ERROR("stmt is null");
1568 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
1571 ret = __stmt_write_step(daci_handler, stmt);
1572 __stmt_finalize(daci_handler, stmt);
1578 sync_agent_da_return_e da_delete_item_by_item_type_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int itemTypeId)
1582 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1584 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1588 sync_agent_da_item_info_s *item_info = 0;
1589 char *query = "delete from item_tbl where account_id = ? and data_store_id = ?";
1591 /* delete changelog */
1592 item_info = da_get_item_info_by_item_type_id(daci_handler, account_id, itemTypeId, &count);
1594 for (i = 0; i < count; i++) {
1595 ret = da_delete_item_changelog_by_item_id(daci_handler, account_id, item_info[i].itemId);
1596 if (ret != SYNC_AGENT_DA_SUCCESS)
1601 stmt = __query_prepare(daci_handler, query, strlen(query));
1605 _stmt_bind_int(daci_handler, stmt, 1, account_id);
1606 _stmt_bind_int(daci_handler, stmt, 2, itemTypeId);
1608 ret = __stmt_write_step(daci_handler, stmt);
1609 if (ret != SYNC_AGENT_DA_SUCCESS) {
1613 sync_agent_free_memory_item_info(item_info, count);
1615 return __stmt_finalize(daci_handler, stmt);
1618 sync_agent_free_memory_item_info(item_info, count);
1620 __stmt_finalize(daci_handler, stmt);
1621 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
1625 sync_agent_da_return_e da_delete_all_child_item(SYNC_AGENT_DA_HANDLER * daci_handler, char *parent_service_id)
1629 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1631 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1633 char query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = {0,};
1635 snprintf(query, sizeof(query), "delete from item_tbl where parent_service_id = %s", parent_service_id);
1636 _DEBUG_INFO("query = %s", query);
1638 stmt = __query_prepare(daci_handler, query, strlen(query));
1640 _DEBUG_ERROR("stmt is null");
1641 ret = SYNC_AGENT_DA_ERRORS;
1645 ret = __stmt_write_step(daci_handler, stmt);
1646 if (ret != SYNC_AGENT_DA_SUCCESS) {
1647 _DEBUG_ERROR("__stmt_write_step failed");
1650 __stmt_finalize(daci_handler, stmt);
1657 sync_agent_da_return_e da_delete_child_item(SYNC_AGENT_DA_HANDLER * daci_handler, char *parent_service_id, char *child_service_id)
1661 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1663 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1665 char query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = {0,};
1667 snprintf(query, sizeof(query), "delete from item_tbl where parent_service_id = %s and service_id = %s", parent_service_id, child_service_id);
1668 _DEBUG_INFO("query = %s", query);
1670 stmt = __query_prepare(daci_handler, query, strlen(query));
1672 _DEBUG_ERROR("stmt is null");
1673 ret = SYNC_AGENT_DA_ERRORS;
1677 ret = __stmt_write_step(daci_handler, stmt);
1678 if (ret != SYNC_AGENT_DA_SUCCESS) {
1679 _DEBUG_ERROR("__stmt_write_step failed");
1682 __stmt_finalize(daci_handler, stmt);
1689 sync_agent_da_return_e da_delete_item_by_item_type_id_new(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int item_type_id)
1693 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1695 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1698 char *query = "delete from item_tbl where account_id = ? and data_store_id = ?";
1700 stmt = __query_prepare(daci_handler, query, strlen(query));
1704 _stmt_bind_int(daci_handler, stmt, 1, account_id);
1705 _stmt_bind_int(daci_handler, stmt, 2, item_type_id);
1707 ret = __stmt_write_step(daci_handler, stmt);
1708 if (ret != SYNC_AGENT_DA_SUCCESS) {
1714 return __stmt_finalize(daci_handler, stmt);
1719 __stmt_finalize(daci_handler, stmt);
1721 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
1724 sync_agent_da_return_e da_delete_item_by_item_type_id_and_delete_changelog(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int itemTypeId)
1728 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1730 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1733 sync_agent_da_item_info_s *item_info = 0;
1735 /* delete changelog */
1736 item_info = da_get_item_info_by_item_type_id_and_operation_id(daci_handler, account_id, itemTypeId, 303, &count);
1738 for (i = 0; i < count; i++) {
1739 ret = da_delete_item_by_Item_id(daci_handler, item_info[i].itemId);
1740 if (ret != SYNC_AGENT_DA_SUCCESS)
1743 ret = da_delete_item_changelog_by_item_id(daci_handler, account_id, item_info[i].itemId);
1744 if (ret != SYNC_AGENT_DA_SUCCESS)
1749 sync_agent_free_memory_item_info(item_info, count);
1757 sync_agent_free_memory_item_info(item_info, count);
1759 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
1762 char *da_get_item_item_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *serviceId, int itemTypeId)
1766 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
1767 retvm_if(serviceId == NULL, NULL, "service Id is NULL !!");
1770 char *query = "select item_id from item_tbl where account_id = ? and service_id = ? and data_store_id = ?";
1773 stmt = __query_prepare(daci_handler, query, strlen(query));
1775 _stmt_bind_int(daci_handler, stmt, 1, account_id);
1776 __stmt_bind_text(daci_handler, stmt, 2, serviceId);
1777 _stmt_bind_int(daci_handler, stmt, 3, itemTypeId);
1779 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA)
1780 item_id = _stmt_column_text(stmt, 0);
1782 __stmt_finalize(daci_handler, stmt);
1788 sync_agent_da_return_e da_get_item_item_id_new(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *service_id, int item_type_id, char **item_id)
1792 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1793 retvm_if(service_id == NULL, SYNC_AGENT_DA_ERRORS, "service Id is NULL !!");
1795 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
1797 char *query = "select item_id from item_tbl where account_id = ? and service_id = ? and data_store_id = ?";
1799 stmt = __query_prepare(daci_handler, query, strlen(query));
1801 _stmt_bind_int(daci_handler, stmt, 1, account_id);
1802 __stmt_bind_text(daci_handler, stmt, 2, service_id);
1803 _stmt_bind_int(daci_handler, stmt, 3, item_type_id);
1805 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
1806 *item_id = _stmt_column_text(stmt, 0);
1807 ret = SYNC_AGENT_DA_SUCCESS;
1810 __stmt_finalize(daci_handler, stmt);
1818 char *da_get_item_service_id(SYNC_AGENT_DA_HANDLER * daci_handler, char *itemId)
1822 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
1823 retvm_if(itemId == NULL, NULL, "item Id is NULL !!");
1826 char query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = {0,};
1827 char *service_id = 0;
1829 snprintf(query, sizeof(query), "select service_id from item_tbl where item_id = %s", itemId);
1831 //_DEBUG_INFO("query = [%s]", query);
1832 stmt = __query_prepare(daci_handler, query, strlen(query));
1834 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA)
1835 service_id = _stmt_column_text(stmt, 0);
1837 __stmt_finalize(daci_handler, stmt);
1844 sync_agent_da_item_s *da_get_item(SYNC_AGENT_DA_HANDLER * daci_handler, char *itemId)
1848 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
1849 retvm_if(itemId == NULL, NULL, "item Id is NULL !!");
1852 char *query = "select * from item_tbl where item_id = ?";
1853 sync_agent_da_item_s *item = 0;
1855 stmt = __query_prepare(daci_handler, query, strlen(query));
1857 __stmt_bind_text(daci_handler, stmt, 1, itemId);
1859 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
1860 item = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_item_s *, sizeof(sync_agent_da_item_s), 1);
1862 __stmt_finalize(daci_handler, stmt);
1864 _DEBUG_ERROR("memory_allocation failed");
1868 item->item_id = _stmt_column_text(stmt, 0);
1869 item->data_store_id = __stmt_column_int(stmt, 1);
1870 item->account_id = __stmt_column_int(stmt, 2);
1871 item->folder_id = _stmt_column_text(stmt, 3);
1872 item->service_id = _stmt_column_text(stmt, 4);
1873 item->parent_service_id = _stmt_column_text(stmt, 5);
1874 item->access_name = _stmt_column_text(stmt, 7);
1876 __stmt_finalize(daci_handler, stmt);
1884 sync_agent_da_return_e da_get_item_new(SYNC_AGENT_DA_HANDLER * daci_handler, char *item_id, sync_agent_da_item_s ** sync_agent_item)
1888 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1889 retvm_if(item_id == NULL, SYNC_AGENT_DA_ERRORS, "item Id is NULL !!");
1891 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1893 char query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = {0,};
1895 snprintf(query, sizeof(query), "select * from item_tbl where item_id = %s", item_id);
1897 //_DEBUG_INFO("query = [%s]", query);
1899 stmt = __query_prepare(daci_handler, query, strlen(query));
1901 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
1902 (*sync_agent_item)->item_id = _stmt_column_text(stmt, 0);
1903 (*sync_agent_item)->data_store_id = __stmt_column_int(stmt, 1);
1904 (*sync_agent_item)->account_id = __stmt_column_int(stmt, 2);
1905 (*sync_agent_item)->folder_id = _stmt_column_text(stmt, 3);
1906 (*sync_agent_item)->service_id = _stmt_column_text(stmt, 4);
1907 (*sync_agent_item)->parent_service_id = _stmt_column_text(stmt, 5);
1908 (*sync_agent_item)->access_name = _stmt_column_text(stmt, 7);
1910 __stmt_finalize(daci_handler, stmt);
1917 sync_agent_da_return_e da_get_item_data_store_id_new(SYNC_AGENT_DA_HANDLER * daci_handler, char *item_id, sync_agent_da_item_s ** sync_agent_item)
1921 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1922 retvm_if(item_id == NULL, SYNC_AGENT_DA_ERRORS, "item Id is NULL !!");
1924 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1926 char query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = {0,};
1928 snprintf(query, sizeof(query), "select * from item_tbl where item_id = %s", item_id);
1930 //_DEBUG_INFO("query = [%s]", query);
1932 stmt = __query_prepare(daci_handler, query, strlen(query));
1934 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
1935 (*sync_agent_item)->data_store_id = __stmt_column_int(stmt, 1);
1937 __stmt_finalize(daci_handler, stmt);
1944 sync_agent_da_return_e da_get_item_account_id_new(SYNC_AGENT_DA_HANDLER * daci_handler, char *item_id, sync_agent_da_item_s ** sync_agent_item)
1948 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1949 retvm_if(item_id == NULL, SYNC_AGENT_DA_ERRORS, "item Id is NULL !!");
1951 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1953 char query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = {0,};
1955 snprintf(query, sizeof(query), "select * from item_tbl where item_id = %s", item_id);
1957 //_DEBUG_INFO("query = [%s]", query);
1959 stmt = __query_prepare(daci_handler, query, strlen(query));
1961 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
1962 (*sync_agent_item)->account_id = __stmt_column_int(stmt, 2);
1964 __stmt_finalize(daci_handler, stmt);
1971 sync_agent_da_id_list_s *da_get_all_item_id(SYNC_AGENT_DA_HANDLER * daci_handler)
1975 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
1977 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1978 sync_agent_da_id_list_s *id_list = 0;
1984 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
1986 snprintf(g_daci_query, sizeof(g_daci_query), "select item_id from item_tbl");
1988 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
1990 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
1991 id_list = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_id_list_s *, sizeof(sync_agent_da_id_list_s), 1);
1992 if (id_list == NULL) {
1993 _DEBUG_ERROR("memory_allocation failed");
1997 id_list->count = row_count;
1998 id_list->id = SYNC_AGENT_DA_MEMORY_CALLOC(char **, sizeof(char *), row_count);
2000 for (i = 0; i < row_count; i++) {
2001 id_list->id[i] = SYNC_AGENT_DA_STRDUP(result[index]);
2009 __free_table(result);
2016 sync_agent_da_id_list_s *da_get_item_id_list(SYNC_AGENT_DA_HANDLER * daci_handler, char *folderId, sync_agent_da_column_name_e column_name)
2020 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
2021 retvm_if(folderId == NULL, NULL, "folder Id is NULL !!");
2023 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
2024 sync_agent_da_id_list_s *id_list = 0;
2025 char *column_str = 0;
2031 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2033 column_str = _get_column_name(column_name);
2035 snprintf(g_daci_query, sizeof(g_daci_query), "select %s from item_tbl where folder_id = \'%s\'", column_str, folderId);
2037 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
2039 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
2040 id_list = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_id_list_s *, sizeof(sync_agent_da_id_list_s), 1);
2041 if (id_list == NULL) {
2042 _DEBUG_ERROR("memory_allocation failed");
2046 id_list->count = row_count;
2047 id_list->id = SYNC_AGENT_DA_MEMORY_CALLOC(char **, sizeof(char *), row_count);
2049 for (i = 0; i < row_count; i++) {
2050 id_list->id[i] = SYNC_AGENT_DA_STRDUP(result[index]);
2058 __free_table(result);
2065 sync_agent_da_return_e da_get_item_id_list_new(SYNC_AGENT_DA_HANDLER * daci_handler, char *folder_id, sync_agent_da_column_name_e column_name, GList ** list)
2069 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
2070 retvm_if(folder_id == NULL, SYNC_AGENT_DA_ERRORS, "folder id is NULL !!");
2072 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
2074 char *column_str = 0;
2080 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2082 column_str = _get_column_name(column_name);
2084 snprintf(g_daci_query, sizeof(g_daci_query), "select %s from item_tbl where folder_id = \'%s\'", column_str, folder_id);
2086 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
2088 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
2089 for (i = 0; i < row_count; i++) {
2091 item_id = SYNC_AGENT_DA_STRDUP(result[index]);
2094 *list = g_list_append(*list, item_id);
2099 __free_table(result);
2106 sync_agent_da_item_s *da_get_item_by_account_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int itemTypeId, int *count)
2110 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
2112 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
2113 sync_agent_da_item_s *item = 0;
2115 char *new_table = 0;
2120 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2122 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
2123 if (new_table == NULL)
2126 snprintf(g_daci_query, sizeof(g_daci_query),
2127 "select item.item_id, item.data_store_id, item.account_id, item.folder_id, item.service_id, item.parent_service_id, item.access_name " "from item_tbl as item " "left join %s as changelog " "using (item_id) "
2128 "where item.account_id = %d and item.data_store_id = %d and (changelog.operation_id is null or changelog.operation_id != 303)", new_table, account_id, itemTypeId);
2129 _DEBUG_INFO("g_daci_query = %s", g_daci_query);
2131 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
2134 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
2135 item = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_item_s *, sizeof(sync_agent_da_item_s), row_count);
2137 _DEBUG_ERROR("memory_allocation failed");
2141 for (i = 0; i < row_count; i++) {
2142 item[i].item_id = SYNC_AGENT_DA_STRDUP(result[index]);
2144 item[i].data_store_id = SYNC_AGENT_DA_ATOI(result[index]);
2146 item[i].account_id = SYNC_AGENT_DA_ATOI(result[index]);
2148 item[i].folder_id = SYNC_AGENT_DA_STRDUP(result[index]);
2150 item[i].service_id = SYNC_AGENT_DA_STRDUP(result[index]);
2152 item[i].parent_service_id = SYNC_AGENT_DA_STRDUP(result[index]);
2154 item[i].access_name = SYNC_AGENT_DA_STRDUP(result[index]);
2161 __free_table(result);
2164 SYNC_AGENT_DA_MEMORY_FREE(new_table);
2171 sync_agent_da_return_e da_get_item_by_account_id_new(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int item_type_id, GList ** list)
2175 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
2177 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
2178 sync_agent_da_item_s *item;
2180 char *new_table = 0;
2185 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2187 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
2188 if (new_table == NULL)
2191 // snprintf(g_daci_query, sizeof(g_daci_query), "select item_id, data_store_id, account_id, folder_id, service_id, access_name from item_tbl where account_id = %d and data_store_id = %d", accountId, itemTypeId);
2192 snprintf(g_daci_query, sizeof(g_daci_query),
2193 "select item.item_id, item.data_store_id, item.account_id, item.folder_id, item.service_id, item.parent_service_id, item.access_name " "from item_tbl as item " "left join %s as changelog " "using (item_id) "
2194 "where item.account_id = %d and item.data_store_id = %d and (changelog.operation_id is null or changelog.operation_id != 303)", new_table, account_id, item_type_id);
2195 _DEBUG_INFO("g_daci_query = %s", g_daci_query);
2197 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
2199 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
2200 for (i = 0; i < row_count; i++) {
2202 ret = sync_agent_create_item(&item);
2203 if (ret != SYNC_AGENT_DA_SUCCESS) {
2204 _DEBUG_ERROR("sync_agent_create_item() failed !!");
2208 item->item_id = SYNC_AGENT_DA_STRDUP(result[index]);
2210 item->data_store_id = SYNC_AGENT_DA_ATOI(result[index]);
2212 item->account_id = SYNC_AGENT_DA_ATOI(result[index]);
2214 item->folder_id = SYNC_AGENT_DA_STRDUP(result[index]);
2216 item->service_id = SYNC_AGENT_DA_STRDUP(result[index]);
2218 item->parent_service_id = SYNC_AGENT_DA_STRDUP(result[index]);
2220 item->access_name = SYNC_AGENT_DA_STRDUP(result[index]);
2223 *list = g_list_append(*list, item);
2229 __free_table(result);
2232 SYNC_AGENT_DA_MEMORY_FREE(new_table);
2239 sync_agent_da_item_info_s *da_get_item_info_by_item_type_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int itemTypeId, int *count)
2243 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
2245 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
2246 sync_agent_da_item_info_s *itemInfo = 0;
2247 char *new_table = 0;
2253 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2255 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
2256 if (new_table == NULL)
2258 snprintf(g_daci_query, sizeof(g_daci_query),
2259 "select item.item_id, item.data_store_id, item.service_id, changelog.operation_id, changelog.status " "from item_tbl as item " "join %s as changelog " "using (item_id) " "where item.account_id = %d and item.data_store_id = %d", new_table,
2260 account_id, itemTypeId);
2262 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
2264 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
2265 itemInfo = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_item_info_s *, sizeof(sync_agent_da_item_info_s), row_count);
2266 if (itemInfo == NULL) {
2267 _DEBUG_ERROR("memory_allocation failed");
2270 for (i = 0; i < row_count; i++) {
2271 itemInfo[i].itemId = SYNC_AGENT_DA_STRDUP(result[index]);
2273 itemInfo[i].itemTypeId = SYNC_AGENT_DA_ATOI(result[index]);
2275 itemInfo[i].serviceId = SYNC_AGENT_DA_STRDUP(result[index]);
2277 itemInfo[i].operationId = SYNC_AGENT_DA_ATOI(result[index]);
2279 itemInfo[i].syncStatus = SYNC_AGENT_DA_STRDUP(result[index]);
2287 __free_table(result);
2290 SYNC_AGENT_DA_MEMORY_FREE(new_table);
2297 sync_agent_da_item_info_s *da_get_item_info_by_item_type_id_and_operation_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int itemTypeId, int operationId, int *count)
2301 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
2303 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
2304 sync_agent_da_item_info_s *itemInfo = 0;
2305 char *new_table = 0;
2311 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2313 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
2314 if (new_table == NULL)
2316 snprintf(g_daci_query, sizeof(g_daci_query),
2317 "select item.item_id, item.data_store_id, item.service_id, changelog.operation_id, changelog.status " "from item_tbl as item " "join %s as changelog " "using (item_id) "
2318 "where item.account_id = %d and item.data_store_id = %d and changelog.operation_id = %d", new_table, account_id, itemTypeId, operationId);
2320 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
2322 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
2323 itemInfo = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_item_info_s *, sizeof(sync_agent_da_item_info_s), row_count);
2324 if (itemInfo == NULL) {
2325 _DEBUG_ERROR("memory_allocation failed");
2328 for (i = 0; i < row_count; i++) {
2329 itemInfo[i].itemId = SYNC_AGENT_DA_STRDUP(result[index]);
2331 itemInfo[i].itemTypeId = SYNC_AGENT_DA_ATOI(result[index]);
2333 itemInfo[i].serviceId = SYNC_AGENT_DA_STRDUP(result[index]);
2335 itemInfo[i].operationId = SYNC_AGENT_DA_ATOI(result[index]);
2337 itemInfo[i].syncStatus = SYNC_AGENT_DA_STRDUP(result[index]);
2345 __free_table(result);
2348 SYNC_AGENT_DA_MEMORY_FREE(new_table);
2355 sync_agent_da_return_e da_get_item_info_by_item_type_id_and_operation_id_new(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int item_type_id, int operation_id, GList ** list)
2359 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
2361 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
2362 char *new_table = 0;
2368 char *item_id = NULL;
2369 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2371 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
2372 if (new_table == NULL) {
2373 _DEBUG_ERROR("__replace_table_name() failed !!");
2374 return SYNC_AGENT_DA_ERRORS;
2377 snprintf(g_daci_query, sizeof(g_daci_query), "select item.item_id " "from item_tbl as item " "join %s as changelog " "using (item_id) " "where item.account_id = %d and item.data_store_id = %d and changelog.operation_id = %d", new_table, account_id,
2378 item_type_id, operation_id);
2380 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
2381 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
2382 for (i = 0; i < row_count; i++) {
2384 item_id = SYNC_AGENT_DA_STRDUP(result[index]);
2387 *list = g_list_append(*list, item_id);
2390 _DEBUG_INFO("no data !!");
2394 __free_table(result);
2397 SYNC_AGENT_DA_MEMORY_FREE(new_table);
2404 sync_agent_da_item_s *da_get_item_mapping_service_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *itemId, int *count)
2408 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
2409 retvm_if(itemId == NULL, NULL, "item Id is NULL !!");
2412 sync_agent_da_item_s *item = 0;
2415 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2417 snprintf(g_daci_query, sizeof(g_daci_query),
2418 "select count(*) from item_tbl where data_store_id in (select data_store_id from item_tbl where account_id = %d and item_id = \'%s\') " "and service_id in (select service_id from item_tbl where account_id = %d and item_id = \'%s\') "
2419 "and (account_id != %d and item_id != \'%s\')", account_id, itemId, account_id, itemId, account_id, itemId);
2421 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
2422 *count = data_count;
2424 if (data_count != 0) {
2425 /* query initialize */
2426 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
2428 item = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_item_s *, sizeof(sync_agent_da_item_s), data_count);
2430 _DEBUG_ERROR("memory_allocation failed");
2434 snprintf(g_daci_query, sizeof(g_daci_query),
2435 "select * from item_tbl where data_store_id in (select data_store_id from item_tbl where account_id = %d and item_id = \'%s\') " "and service_id in (select service_id from item_tbl where account_id = %d and item_id = \'%s\') "
2436 "and (account_id != %d and item_id != \'%s\')", account_id, itemId, account_id, itemId, account_id, itemId);
2438 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
2440 for (i = 0; i < data_count; i++) {
2441 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA)
2444 item[i].item_id = _stmt_column_text(stmt, 0);
2445 item[i].data_store_id = __stmt_column_int(stmt, 1);
2446 item[i].account_id = __stmt_column_int(stmt, 2);
2447 item[i].folder_id = _stmt_column_text(stmt, 3);
2448 item[i].service_id = _stmt_column_text(stmt, 4);
2449 item[i].access_name = _stmt_column_text(stmt, 6);
2452 __stmt_finalize(daci_handler, stmt);
2461 sync_agent_da_return_e da_get_item_mapping_service_id_new(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *item_id, GList ** list)
2465 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
2466 retvm_if(item_id == NULL, SYNC_AGENT_DA_ERRORS, "item id is NULL !!");
2468 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
2470 sync_agent_da_item_s *item;
2473 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2475 snprintf(g_daci_query, sizeof(g_daci_query),
2476 "select count(*) from item_tbl where data_store_id in (select data_store_id from item_tbl where account_id = %d and item_id = \'%s\') " "and service_id in (select service_id from item_tbl where account_id = %d and item_id = \'%s\') "
2477 "and (account_id != %d and item_id != \'%s\')", account_id, item_id, account_id, item_id, account_id, item_id);
2479 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
2481 if (data_count != 0) {
2482 /* query initialize */
2483 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
2485 snprintf(g_daci_query, sizeof(g_daci_query),
2486 "select * from item_tbl where data_store_id in (select data_store_id from item_tbl where account_id = %d and item_id = \'%s\') " "and service_id in (select service_id from item_tbl where account_id = %d and item_id = \'%s\') "
2487 "and (account_id != %d and item_id != \'%s\')", account_id, item_id, account_id, item_id, account_id, item_id);
2489 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
2491 for (i = 0; i < data_count; i++) {
2492 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA)
2496 ret = sync_agent_create_item(&item);
2497 if (ret != SYNC_AGENT_DA_SUCCESS) {
2498 _DEBUG_ERROR("sync_agent_create_item() failed !!");
2502 item->item_id = _stmt_column_text(stmt, 0);
2503 item->data_store_id = __stmt_column_int(stmt, 1);
2504 item->account_id = __stmt_column_int(stmt, 2);
2505 item->folder_id = _stmt_column_text(stmt, 3);
2506 item->service_id = _stmt_column_text(stmt, 4);
2507 item->access_name = _stmt_column_text(stmt, 6);
2509 *list = g_list_append(*list, item);
2512 __stmt_finalize(daci_handler, stmt);
2515 _DEBUG_ERROR("no data !!");
2516 ret = SYNC_AGENT_DA_SUCCESS;
2524 sync_agent_da_id_list_s *da_get_item_id_list_by_datastore_id(SYNC_AGENT_DA_HANDLER * daci_handler, int data_store_id)
2528 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
2531 sync_agent_da_id_list_s *item_id_list = 0;
2534 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2536 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from item_tbl where data_store_id = %d", data_store_id);
2538 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
2540 if (data_count != 0) {
2541 /* query initialize */
2542 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
2544 item_id_list = (sync_agent_da_id_list_s *) calloc(1, sizeof(sync_agent_da_id_list_s));
2545 if (item_id_list == NULL) {
2546 _DEBUG_ERROR("CALLOC failed !!!");
2549 item_id_list->id = (char **)calloc(data_count, sizeof(char *));
2550 if (item_id_list->id == NULL) {
2552 if (item_id_list != NULL)
2555 _DEBUG_ERROR("CALLOC failed !!!");
2558 item_id_list->count = data_count;
2560 snprintf(g_daci_query, sizeof(g_daci_query), "select item_id from item_tbl where data_store_id = %d", data_store_id);
2562 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
2564 for (i = 0; i < data_count; i++) {
2565 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA) {
2569 item_id_list->id[i] = _stmt_column_text(stmt, 0);
2572 __stmt_finalize(daci_handler, stmt);
2578 return item_id_list;
2581 sync_agent_da_return_e da_get_item_id_list_by_datastore_id_new(SYNC_AGENT_DA_HANDLER * daci_handler, int data_store_id, GList ** list)
2585 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
2591 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2593 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from item_tbl where data_store_id = %d", data_store_id);
2595 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
2597 if (data_count != 0) {
2598 /* query initialize */
2599 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
2601 snprintf(g_daci_query, sizeof(g_daci_query), "select item_id from item_tbl where data_store_id = %d", data_store_id);
2603 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
2605 for (i = 0; i < data_count; i++) {
2606 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA) {
2611 item_id = _stmt_column_text(stmt, 0);
2613 *list = g_list_append(*list, item_id);
2616 __stmt_finalize(daci_handler, stmt);
2622 return SYNC_AGENT_DA_SUCCESS;
2625 sync_agent_da_id_list_s *da_get_item_id_list_by_datastore_id_with_account_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int data_store_id)
2629 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
2632 sync_agent_da_id_list_s *item_id_list = 0;
2635 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2637 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from item_tbl where account_id = %d and data_store_id = %d", account_id, data_store_id);
2639 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
2641 if (data_count != 0) {
2642 /* query initialize */
2643 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
2645 item_id_list = (sync_agent_da_id_list_s *) calloc(1, sizeof(sync_agent_da_id_list_s));
2646 if (item_id_list == NULL) {
2647 _DEBUG_ERROR("CALLOC failed !!!");
2650 item_id_list->id = (char **)calloc(data_count, sizeof(char *));
2651 if (item_id_list->id == NULL) {
2653 if (item_id_list != NULL)
2656 _DEBUG_ERROR("CALLOC failed !!!");
2659 item_id_list->count = data_count;
2661 snprintf(g_daci_query, sizeof(g_daci_query), "select item_id from item_tbl where account_id = %d and data_store_id = %d", account_id, data_store_id);
2663 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
2665 for (i = 0; i < data_count; i++) {
2666 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA) {
2670 item_id_list->id[i] = _stmt_column_text(stmt, 0);
2673 __stmt_finalize(daci_handler, stmt);
2679 return item_id_list;
2682 sync_agent_da_return_e da_get_item_id_list_by_datastore_id_with_account_id_new(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int data_store_id, GList ** list)
2686 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
2692 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2694 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from item_tbl where account_id = %d and data_store_id = %d", account_id, data_store_id);
2696 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
2698 if (data_count != 0) {
2699 /* query initialize */
2700 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
2702 snprintf(g_daci_query, sizeof(g_daci_query), "select item_id from item_tbl where account_id = %d and data_store_id = %d", account_id, data_store_id);
2704 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
2706 for (i = 0; i < data_count; i++) {
2707 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA) {
2712 item_id = _stmt_column_text(stmt, 0);
2714 *list = g_list_append(*list, item_id);
2717 __stmt_finalize(daci_handler, stmt);
2723 return SYNC_AGENT_DA_SUCCESS;
2726 sync_agent_da_id_list_s *da_get_item_id_list_by_operation_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int data_store_id, int operation_id)
2730 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
2732 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
2733 sync_agent_da_id_list_s *id_list = 0;
2734 char *new_table = 0;
2740 char query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2742 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
2743 if (new_table == NULL)
2746 snprintf(query, sizeof(query), "select item.item_id " "from item_tbl as item " "join %s as changelog " "using (item_id) " "where item.account_id = %d and item.data_store_id = %d and changelog.operation_id = %d", new_table, account_id,
2747 data_store_id, operation_id);
2749 ret = _get_table(daci_handler, query, &result, &row_count, &col_count);
2750 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
2751 id_list = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_id_list_s *, sizeof(sync_agent_da_id_list_s), 1);
2753 if (id_list == NULL) {
2754 _DEBUG_ERROR("memory_allocation failed");
2758 id_list->count = row_count;
2759 id_list->id = SYNC_AGENT_DA_MEMORY_CALLOC(char **, sizeof(char *), row_count);
2761 for (i = 0; i < row_count; i++) {
2762 id_list->id[i] = SYNC_AGENT_DA_STRDUP(result[index]);
2768 if (result != NULL) {
2769 __free_table(result);
2772 SYNC_AGENT_DA_MEMORY_FREE(new_table);
2779 sync_agent_da_return_e da_get_item_id_list_by_operation_id_new(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int data_store_id, int operation_id, GList ** list)
2783 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
2785 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
2787 char *new_table = 0;
2793 char query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2795 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
2796 if (new_table == NULL)
2799 snprintf(query, sizeof(query), "select item.item_id " "from item_tbl as item " "join %s as changelog " "using (item_id) " "where item.account_id = %d and item.data_store_id = %d and changelog.operation_id = %d", new_table, account_id,
2800 data_store_id, operation_id);
2802 ret = _get_table(daci_handler, query, &result, &row_count, &col_count);
2803 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
2804 for (i = 0; i < row_count; i++) {
2806 item_id = SYNC_AGENT_DA_STRDUP(result[index]);
2809 *list = g_list_append(*list, item_id);
2813 if (result != NULL) {
2814 __free_table(result);
2817 SYNC_AGENT_DA_MEMORY_FREE(new_table);
2822 sync_agent_da_id_list_s *da_get_item_id_list_by_operation_id_and_folder_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *folder_id, int data_store_id, int operation_id)
2826 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
2827 retvm_if(folder_id == NULL, NULL, "folder id is NULL !!");
2829 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
2830 sync_agent_da_id_list_s *id_list = 0;
2831 char *new_table = 0;
2837 char query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2839 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
2840 if (new_table == NULL)
2843 snprintf(query, sizeof(query), "select item.item_id " "from item_tbl as item " "join %s as changelog " "using (item_id) " "where item.account_id = %d and item.data_store_id = %d and item.folder_id = \'%s\' and changelog.operation_id = %d",
2844 new_table, account_id, data_store_id, folder_id, operation_id);
2845 _DEBUG_INFO("request quary is [%s]\n", query);
2847 ret = _get_table(daci_handler, query, &result, &row_count, &col_count);
2848 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
2849 id_list = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_id_list_s *, sizeof(sync_agent_da_id_list_s), 1);
2851 if (id_list == NULL) {
2852 _DEBUG_ERROR("memory_allocation failed");
2856 id_list->count = row_count;
2857 id_list->id = SYNC_AGENT_DA_MEMORY_CALLOC(char **, sizeof(char *), row_count);
2859 for (i = 0; i < row_count; i++) {
2860 id_list->id[i] = SYNC_AGENT_DA_STRDUP(result[index]);
2866 if (result != NULL) {
2867 __free_table(result);
2870 SYNC_AGENT_DA_MEMORY_FREE(new_table);
2877 sync_agent_da_return_e da_get_item_id_list_by_operation_id_and_folder_id_new(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *folder_id, int data_store_id, int operation_id, GList ** list)
2881 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
2882 retvm_if(folder_id == NULL, SYNC_AGENT_DA_ERRORS, "folder id is NULL !!");
2884 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
2886 char *new_table = 0;
2892 char query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2894 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
2895 if (new_table == NULL)
2898 snprintf(query, sizeof(query), "select item.item_id " "from item_tbl as item " "join %s as changelog " "using (item_id) " "where item.account_id = %d and item.data_store_id = %d and item.folder_id = \'%s\' and changelog.operation_id = %d",
2899 new_table, account_id, data_store_id, folder_id, operation_id);
2900 _DEBUG_INFO("request quary is [%s]\n", query);
2902 ret = _get_table(daci_handler, query, &result, &row_count, &col_count);
2903 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
2904 for (i = 0; i < row_count; i++) {
2906 item_id = SYNC_AGENT_DA_STRDUP(result[index]);
2909 *list = g_list_append(*list, item_id);
2913 if (result != NULL) {
2914 __free_table(result);
2917 SYNC_AGENT_DA_MEMORY_FREE(new_table);
2924 sync_agent_da_return_e da_get_item_id_list_by_folder_id_and_account_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *folder_id, GList ** list)
2928 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
2929 retvm_if(folder_id == NULL, SYNC_AGENT_DA_ERRORS, "folder id is NULL !!");
2931 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
2933 char *new_table = 0;
2939 char query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2941 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
2942 if (new_table == NULL)
2945 snprintf(query, sizeof(query), "select distinct item_tbl.item_id from item_tbl where item_tbl.account_id = %d and item_tbl.folder_id = \'%s\' and item_tbl.item_id not in (select distinct item.item_id from item_tbl as item join %s as changelog where changelog.item_id = item.item_id and changelog.operation_id = 303)", account_id, folder_id, new_table);
2946 _DEBUG_INFO("request quary is [%s]\n", query);
2948 ret = _get_table(daci_handler, query, &result, &row_count, &col_count);
2949 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
2950 for (i = 0; i < row_count; i++) {
2952 item_id = SYNC_AGENT_DA_STRDUP(result[index]);
2954 *list = g_list_append(*list, item_id);
2958 if (result != NULL) {
2959 __free_table(result);
2962 SYNC_AGENT_DA_MEMORY_FREE(new_table);
2967 int da_is_exist_item(SYNC_AGENT_DA_HANDLER * daci_handler, char *itemId)
2971 retvm_if(daci_handler == NULL, 0, "SYNC_AGENT_DA_HANDLER is NULL !!");
2972 retvm_if(itemId == NULL, 0, "item Id is NULL !!");
2976 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2978 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from item_tbl where item_id = \'%s\'", itemId);
2980 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
2982 if (data_count == 0) {
2985 _DEBUG_ERROR("itemId [%s] already exist number of [%d]", itemId, data_count);
2993 sync_agent_da_return_e da_add_config(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_config_s * config)
2997 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
2998 retvm_if(config == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_config_s is NULL !!");
3001 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3002 char *query = "insert into config_tbl (config_id, key, value, type, access_name) values (?, ?, ?, ?, ?)";
3005 ret = da_is_exist_config(daci_handler, config->config_id, config->key, &exist);
3006 if (ret != SYNC_AGENT_DA_SUCCESS) {
3007 _DEBUG_ERROR("da_is_exist_config is failed");
3012 return SYNC_AGENT_DA_ERR_PRIMARY_KEY_NOT_UNIQUE;
3014 stmt = __query_prepare(daci_handler, query, strlen(query));
3016 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3018 _stmt_bind_int(daci_handler, stmt, 1, config->config_id);
3019 __stmt_bind_text(daci_handler, stmt, 2, config->key);
3020 __stmt_bind_text(daci_handler, stmt, 3, config->value);
3021 __stmt_bind_text(daci_handler, stmt, 4, config->type);
3022 __stmt_bind_text(daci_handler, stmt, 5, config->access_name);
3024 ret = __stmt_write_step(daci_handler, stmt);
3025 __stmt_finalize(daci_handler, stmt);
3032 sync_agent_da_return_e da_add_config_list(SYNC_AGENT_DA_HANDLER * daci_handler, GList * config_list)
3036 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3037 retvm_if(config_list == NULL, SYNC_AGENT_DA_ERRORS, "config_list is NULL !!");
3040 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3043 sync_agent_da_config_s *config = NULL;
3045 char *query = "insert into config_tbl (config_id, key, value, type, access_name) values (?, ?, ?, ?, ?)";
3048 for (iter = config_list; iter != NULL; iter = g_list_next(iter)) {
3049 config = (sync_agent_da_config_s *) iter->data;
3050 ret = da_is_exist_config(daci_handler, config->config_id, config->key, &exist);
3051 if (ret != SYNC_AGENT_DA_SUCCESS) {
3052 _DEBUG_ERROR("da_is_exist_config is failed");
3057 return SYNC_AGENT_DA_ERR_PRIMARY_KEY_NOT_UNIQUE;
3060 stmt = __query_prepare(daci_handler, query, strlen(query));
3062 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3064 for (iter = config_list; iter != NULL; iter = g_list_next(iter)) {
3065 config = (sync_agent_da_config_s *) iter->data;
3067 _stmt_bind_int(daci_handler, stmt, 1, config->config_id);
3068 __stmt_bind_text(daci_handler, stmt, 2, config->key);
3069 __stmt_bind_text(daci_handler, stmt, 3, config->value);
3070 __stmt_bind_text(daci_handler, stmt, 4, config->type);
3071 __stmt_bind_text(daci_handler, stmt, 5, config->access_name);
3073 ret = __stmt_write_step(daci_handler, stmt);
3074 if ((ret != SYNC_AGENT_DA_ERR_MORE_DATA) && (ret != SYNC_AGENT_DA_SUCCESS)) {
3075 __stmt_finalize(daci_handler, stmt);
3076 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3078 _stmt_reset(daci_handler, stmt);
3080 __stmt_finalize(daci_handler, stmt);
3087 sync_agent_da_return_e da_delete_config_by_key(SYNC_AGENT_DA_HANDLER * daci_handler, int configId, char *key)
3091 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3092 retvm_if(key == NULL, SYNC_AGENT_DA_ERRORS, "key is NULL !!");
3094 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3096 char *query = "delete from config_tbl where config_id = ? and key = ?";
3098 stmt = __query_prepare(daci_handler, query, strlen(query));
3100 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3102 _stmt_bind_int(daci_handler, stmt, 1, configId);
3103 __stmt_bind_text(daci_handler, stmt, 2, key);
3105 ret = __stmt_write_step(daci_handler, stmt);
3106 __stmt_finalize(daci_handler, stmt);
3113 sync_agent_da_return_e da_get_config_by_account_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, GList ** list)
3117 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3119 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3121 sync_agent_da_config_s *config = 0;
3124 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3125 GList *config_list = NULL;
3127 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from config_tbl where config_id = %d", account_id);
3129 data_Count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
3131 if (data_Count != 0) {
3132 /* query initialize */
3133 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
3135 snprintf(g_daci_query, sizeof(g_daci_query), "select * from config_tbl where config_id = %d", account_id);
3137 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
3139 for (i = 0; i < data_Count; i++) {
3140 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA)
3143 config = (sync_agent_da_config_s *) calloc(1, sizeof(sync_agent_da_config_s));
3144 if (config == NULL) {
3145 _DEBUG_ERROR("memory_allocation failed");
3146 ret = SYNC_AGENT_DA_ERR_MEMORY_FULL;
3150 config->config_id = __stmt_column_int(stmt, 0);
3151 config->key = _stmt_column_text(stmt, 1);
3152 config->value = _stmt_column_text(stmt, 2);
3153 config->type = _stmt_column_text(stmt, 3);
3154 config->access_name = _stmt_column_text(stmt, 5);
3156 config_list = g_list_append(config_list, config);
3158 __stmt_finalize(daci_handler, stmt);
3162 *list = config_list;
3169 sync_agent_da_return_e da_get_config_by_key(SYNC_AGENT_DA_HANDLER * daci_handler, int config_id, char *key, sync_agent_da_config_s ** config)
3173 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3174 retvm_if(key == NULL, SYNC_AGENT_DA_ERRORS, "key is NULL !!");
3176 int ret = SYNC_AGENT_DA_SUCCESS;
3178 char *query = "select key, value, type, access_name from config_tbl where config_id = ? and key =?";
3180 stmt = __query_prepare(daci_handler, query, strlen(query));
3182 return SYNC_AGENT_DA_ERRORS;
3185 _stmt_bind_int(daci_handler, stmt, 1, config_id);
3186 __stmt_bind_text(daci_handler, stmt, 2, key);
3188 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
3189 (*config)->config_id = config_id;
3190 (*config)->key = _stmt_column_text(stmt, 0);
3191 (*config)->value = _stmt_column_text(stmt, 1);
3192 (*config)->type = _stmt_column_text(stmt, 2);
3193 (*config)->access_name = _stmt_column_text(stmt, 3);
3195 ret = SYNC_AGENT_DA_ERR_NO_DATA;
3198 __stmt_finalize(daci_handler, stmt);
3205 sync_agent_da_return_e da_is_exist_config(SYNC_AGENT_DA_HANDLER * daci_handler, int config_id, char *key, int *exist)
3209 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3210 retvm_if(key == NULL, SYNC_AGENT_DA_ERRORS, "key is NULL !!");
3212 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3215 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3217 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from config_tbl where config_id = %d and key = \'%s\'", config_id, key);
3219 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
3221 if (data_count == 0)
3231 sync_agent_da_return_e da_update_config(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_config_s * config)
3235 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3236 retvm_if(config == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_config_s is NULL !!");
3238 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3241 ret = da_is_exist_config(daci_handler, config->config_id, config->key, &exist);
3242 if (ret != SYNC_AGENT_DA_SUCCESS) {
3243 _DEBUG_ERROR("da_is_exist_config is failed");
3248 ret = da_set_config_value(daci_handler, config);
3250 ret = da_add_config(daci_handler, config);
3252 if (ret != SYNC_AGENT_DA_SUCCESS)
3253 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3260 sync_agent_da_return_e da_set_config_value(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_config_s * config)
3264 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3265 retvm_if(config == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_config_s is NULL !!");
3267 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3270 char *query = "update config_tbl set value = ?, type = ?, last_update = current_timestamp, access_name = ? " "where config_id = ? and key = ?";
3272 stmt = __query_prepare(daci_handler, query, strlen(query));
3274 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3276 __stmt_bind_text(daci_handler, stmt, 1, config->value);
3277 __stmt_bind_text(daci_handler, stmt, 2, config->type);
3278 __stmt_bind_text(daci_handler, stmt, 3, config->access_name);
3279 _stmt_bind_int(daci_handler, stmt, 4, config->config_id);
3280 __stmt_bind_text(daci_handler, stmt, 5, config->key);
3282 ret = _stmt_read_step(daci_handler, stmt);
3283 __stmt_finalize(daci_handler, stmt);
3290 sync_agent_da_return_e da_add_item_changelog(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, sync_agent_da_item_changelog_s * itemChangelog, int count)
3294 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3295 retvm_if(itemChangelog == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_item_changelog_s is NULL !!");
3297 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3300 char *new_table = 0;
3301 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3303 for (i = 0; i < count; i++) {
3304 if (da_is_exist_item_changelog(daci_handler, account_id, itemChangelog[i].item_id) == 1)
3305 return SYNC_AGENT_DA_ERR_PRIMARY_KEY_NOT_UNIQUE;
3308 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3309 if (new_table == NULL)
3310 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3312 snprintf(g_daci_query, sizeof(g_daci_query), "insert into %s (item_id, operation_id, status, access_name) values (?, ?, ?, ?)", new_table);
3314 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
3316 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3317 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3320 for (i = 0; i < count; i++) {
3321 __stmt_bind_text(daci_handler, stmt, 1, itemChangelog[i].item_id);
3322 _stmt_bind_int(daci_handler, stmt, 2, itemChangelog[i].operation_id);
3323 __stmt_bind_text(daci_handler, stmt, 3, ((itemChangelog[i].status == 0) ? "SYNC_REQUIRED" : itemChangelog[i].status));
3324 __stmt_bind_text(daci_handler, stmt, 4, itemChangelog[i].access_name);
3326 ret = __stmt_write_step(daci_handler, stmt);
3327 if ((ret != SYNC_AGENT_DA_ERR_MORE_DATA) && (ret != SYNC_AGENT_DA_SUCCESS)) {
3328 __stmt_finalize(daci_handler, stmt);
3329 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3330 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3332 _stmt_reset(daci_handler, stmt);
3335 ret = __stmt_finalize(daci_handler, stmt);
3338 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3345 sync_agent_da_return_e da_delete_item_changelog_by_item_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *itemId)
3349 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3350 retvm_if(itemId == NULL, SYNC_AGENT_DA_ERRORS, "item Id is NULL !!");
3352 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3354 char *new_table = 0;
3355 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3357 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3358 if (new_table == NULL)
3359 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3361 snprintf(g_daci_query, sizeof(g_daci_query), "delete from %s where item_id = ?", new_table);
3363 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
3365 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3366 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3369 __stmt_bind_text(daci_handler, stmt, 1, itemId);
3371 ret = __stmt_write_step(daci_handler, stmt);
3372 __stmt_finalize(daci_handler, stmt);
3375 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3382 sync_agent_da_return_e da_delete_item_changelog_by_item_id_list(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char **itemIdList, int count)
3386 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3387 retvm_if(itemIdList == NULL, SYNC_AGENT_DA_ERRORS, "item Id List is NULL !!");
3390 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3391 char *new_table = 0;
3393 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3395 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3396 if (new_table == NULL)
3397 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3399 snprintf(g_daci_query, sizeof(g_daci_query), "delete from %s where item_id = ?", new_table);
3401 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
3403 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3404 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3407 for (i = 0; i < count; i++) {
3408 __stmt_bind_text(daci_handler, stmt, 1, itemIdList[i]);
3410 ret = __stmt_write_step(daci_handler, stmt);
3412 if (ret != SYNC_AGENT_DA_SUCCESS) {
3413 __stmt_finalize(daci_handler, stmt);
3414 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3415 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3417 _stmt_reset(daci_handler, stmt);
3419 __stmt_finalize(daci_handler, stmt);
3422 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3429 sync_agent_da_return_e da_delete_item_changelog_by_item_type_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int itemTypeId)
3433 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3435 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3437 char *new_table = 0;
3438 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3440 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3441 if (new_table == NULL) {
3442 ret = SYNC_AGENT_DA_ERR_QUERY_FAILED;
3446 snprintf(g_daci_query, sizeof(g_daci_query), "delete from %s " "where item_id in " "(select item_id " "from %s as changelog " "join item_tbl as item " "using (item_id) " "where item.account_id = %d and item.data_store_id = %d)", new_table,
3447 new_table, account_id, itemTypeId);
3449 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
3451 ret = SYNC_AGENT_DA_ERR_QUERY_FAILED;
3455 ret = __stmt_write_step(daci_handler, stmt);
3456 if (ret != SYNC_AGENT_DA_SUCCESS) {
3457 ret = SYNC_AGENT_DA_ERR_QUERY_FAILED;
3464 __stmt_finalize(daci_handler, stmt);
3467 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3474 sync_agent_da_return_e da_set_item_changelog_operation_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, sync_agent_da_item_changelog_s * itemChangelog)
3478 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3479 retvm_if(itemChangelog == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_item_changelog_s is NULL !!");
3481 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3483 char *new_table = 0;
3484 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3486 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3487 if (new_table == NULL)
3488 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3490 snprintf(g_daci_query, sizeof(g_daci_query), "update %s set operation_id = ?, status = ?, last_update = current_timestamp, access_name = ? where item_id = ?", new_table);
3492 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
3494 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3495 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3498 _stmt_bind_int(daci_handler, stmt, 1, itemChangelog->operation_id);
3499 __stmt_bind_text(daci_handler, stmt, 2, itemChangelog->status);
3500 __stmt_bind_text(daci_handler, stmt, 3, itemChangelog->access_name);
3501 __stmt_bind_text(daci_handler, stmt, 4, itemChangelog->item_id);
3503 ret = __stmt_write_step(daci_handler, stmt);
3504 __stmt_finalize(daci_handler, stmt);
3507 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3514 sync_agent_da_return_e da_set_item_changelog_sync_status(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, sync_agent_da_item_changelog_s * itemChangelog)
3518 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3519 retvm_if(itemChangelog == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_item_changelog_s is NULL !!");
3521 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3523 char *new_table = 0;
3524 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3526 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3527 if (new_table == NULL)
3528 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3530 snprintf(g_daci_query, sizeof(g_daci_query), "update %s set status = ?, last_update = current_timestamp, access_name = ? where item_id = ?", new_table);
3532 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
3534 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3535 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3538 __stmt_bind_text(daci_handler, stmt, 1, itemChangelog->status);
3539 __stmt_bind_text(daci_handler, stmt, 2, itemChangelog->access_name);
3540 __stmt_bind_text(daci_handler, stmt, 3, itemChangelog->item_id);
3542 ret = __stmt_write_step(daci_handler, stmt);
3543 __stmt_finalize(daci_handler, stmt);
3546 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3553 sync_agent_da_return_e da_set_item_changelog_wait_status(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char **folderIdList, int folderIdCount, int *itemTypeIdList, int itemTypeIdCount)
3557 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3558 retvm_if(itemTypeIdList == NULL, SYNC_AGENT_DA_ERRORS, "item Type Id List is NULL !!");
3560 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3562 char *new_table = 0;
3566 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3568 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3569 if (new_table == NULL)
3570 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3572 snprintf(g_daci_query, sizeof(g_daci_query), "update %s " "set status = \'SYNC_WAIT\' " "where item_id in (select item_id " "from item_tbl as item " "join %s as changelog " "using(item_id) " "where item.account_id = %d and (", new_table, new_table,
3575 for (i = 0; i < folderIdCount; i++) {
3576 len = g_strlcat(g_daci_query, "item.folder_id = \'", SYNC_AGENT_DA_MAX_QUERY_LENGTH);
3577 len = g_strlcat(g_daci_query, folderIdList[i], SYNC_AGENT_DA_MAX_QUERY_LENGTH);
3579 if (i < folderIdCount - 1) {
3580 len = g_strlcat(g_daci_query, "\' or ", SYNC_AGENT_DA_MAX_QUERY_LENGTH);
3582 len = g_strlcat(g_daci_query, "\') and (", SYNC_AGENT_DA_MAX_QUERY_LENGTH);
3585 if (len >= SYNC_AGENT_DA_MAX_QUERY_LENGTH) {
3586 _DEBUG_ERROR("g_daci_query buffer overflow !!");
3587 /* todo : exception handling */
3591 for (i = 0; i < itemTypeIdCount; i++) {
3592 memset(temp_str, 0x00, sizeof(temp_str));
3593 snprintf(temp_str, sizeof(temp_str), "%d", itemTypeIdList[i]);
3595 len = g_strlcat(g_daci_query, "item.data_store_id = ", SYNC_AGENT_DA_MAX_QUERY_LENGTH);
3596 len = g_strlcat(g_daci_query, temp_str, SYNC_AGENT_DA_MAX_QUERY_LENGTH);
3598 if (i < itemTypeIdCount - 1) {
3599 len = g_strlcat(g_daci_query, " or ", SYNC_AGENT_DA_MAX_QUERY_LENGTH);
3601 len = g_strlcat(g_daci_query, ") )", SYNC_AGENT_DA_MAX_QUERY_LENGTH);
3604 if (len >= SYNC_AGENT_DA_MAX_QUERY_LENGTH) {
3605 _DEBUG_ERROR("g_daci_query buffer overflow !!");
3606 /* todo : exception handling */
3610 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
3612 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3613 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3616 ret = __stmt_write_step(daci_handler, stmt);
3617 __stmt_finalize(daci_handler, stmt);
3620 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3627 sync_agent_da_return_e da_get_item_changelog_by_item_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, sync_agent_da_item_changelog_s * itemChangelog)
3631 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3633 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERR_QUERY_FAILED;
3635 char *new_table = 0;
3636 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3638 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3639 if (new_table == NULL)
3642 snprintf(g_daci_query, sizeof(g_daci_query), "select * from %s where item_id = \'%s\'", new_table, itemChangelog->item_id);
3644 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
3646 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
3647 itemChangelog->operation_id = __stmt_column_int(stmt, 1);
3648 itemChangelog->status = _stmt_column_text(stmt, 2);
3649 itemChangelog->access_name = _stmt_column_text(stmt, 4);
3650 ret = SYNC_AGENT_DA_SUCCESS;
3651 } else if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_SUCCESS) {
3652 ret = SYNC_AGENT_DA_ERR_NO_DATA;
3654 __stmt_finalize(daci_handler, stmt);
3658 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3660 _DEBUG_INFO("[%s] End !\n", __func__);
3667 sync_agent_da_return_e da_get_item_changelog_by_item_id_new(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *item_id, sync_agent_da_item_changelog_s ** sync_agent_changelog)
3671 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3672 retvm_if(item_id == NULL, SYNC_AGENT_DA_ERRORS, "item id is NULL !!");
3674 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERR_QUERY_FAILED;
3676 char *new_table = 0;
3677 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3679 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3680 if (new_table == NULL)
3683 snprintf(g_daci_query, sizeof(g_daci_query), "select * from %s where item_id = \'%s\'", new_table, item_id);
3685 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
3687 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
3688 (*sync_agent_changelog)->item_id = SYNC_AGENT_DA_STRDUP(item_id);
3689 (*sync_agent_changelog)->operation_id = __stmt_column_int(stmt, 1);
3690 (*sync_agent_changelog)->status = _stmt_column_text(stmt, 2);
3691 (*sync_agent_changelog)->access_name = _stmt_column_text(stmt, 4);
3692 ret = SYNC_AGENT_DA_SUCCESS;
3693 } else if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_SUCCESS) {
3694 ret = SYNC_AGENT_DA_ERR_NO_DATA;
3696 __stmt_finalize(daci_handler, stmt);
3700 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3707 sync_agent_da_return_e da_get_item_changelog_by_item_type_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int item_type_id, GList ** list)
3711 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3713 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
3714 sync_agent_da_item_changelog_s *item_changelog;
3715 char *new_table = 0;
3721 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3723 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3724 if (new_table == NULL)
3726 // snprintf(g_daci_query, sizeof(g_daci_query), "select item.item_id, item.data_store_id, item.service_id, changelog.operation_id, changelog.status " "from item_tbl as item " "join %s as changelog " "using (item_id) " "where item.account_id = %d and item.data_store_id = %d", new_table, account_id, itemTypeId);
3727 snprintf(g_daci_query, sizeof(g_daci_query),
3728 "select changelog.item_id, changelog.operation_id, changelog.status, changelog.access_name from %s as changelog " "join item_tbl as item " "using (item_id) " "where item.account_id = %d and item.data_store_id = %d", new_table, account_id,
3731 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
3732 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
3733 for (i = 0; i < row_count; i++) {
3734 item_changelog = NULL;
3735 ret = sync_agent_create_changelog(&item_changelog);
3736 if (ret != SYNC_AGENT_DA_SUCCESS) {
3737 _DEBUG_ERROR("sync_agent_create_changelog() failed !!");
3741 item_changelog->item_id = SYNC_AGENT_DA_STRDUP(result[index]);
3743 item_changelog->operation_id = SYNC_AGENT_DA_ATOI(result[index]);
3745 item_changelog->status = SYNC_AGENT_DA_STRDUP(result[index]);
3747 item_changelog->access_name = SYNC_AGENT_DA_STRDUP(result[index]);
3750 *list = g_list_append(*list, item_changelog);
3757 __free_table(result);
3760 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3767 sync_agent_da_item_changelog_s *get_itemChangelogByOperationId(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int operationId, int *count)
3771 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
3774 sync_agent_da_item_changelog_s *item_changelog = 0;
3775 char *new_table = 0;
3778 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3780 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3781 if (new_table == NULL)
3782 return item_changelog;
3784 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from %s where operation_id = %d", new_table, operationId);
3786 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
3787 *count = data_count;
3789 if (data_count != 0) {
3790 /* query initialize */
3791 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
3793 item_changelog = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_item_changelog_s *, sizeof(sync_agent_da_item_changelog_s), data_count);
3794 if (item_changelog == NULL) {
3795 _DEBUG_ERROR("memory_allocation failed");
3798 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3800 return item_changelog;
3803 snprintf(g_daci_query, sizeof(g_daci_query), "select * from %s where operation_id = %d", new_table, operationId);
3805 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
3807 for (i = 0; i < data_count; i++) {
3808 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA)
3811 item_changelog[i].item_id = _stmt_column_text(stmt, 0);
3812 item_changelog[i].operation_id = __stmt_column_int(stmt, 1);
3813 item_changelog[i].status = _stmt_column_text(stmt, 2);
3814 item_changelog[i].access_name = _stmt_column_text(stmt, 4);
3816 __stmt_finalize(daci_handler, stmt);
3821 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3825 return item_changelog;
3828 int da_is_exist_item_changelog(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *itemId)
3832 retvm_if(daci_handler == NULL, 0, "SYNC_AGENT_DA_HANDLER is NULL !!");
3833 retvm_if(itemId == NULL, 0, "item Id is NULL !!");
3836 char *new_table = 0;
3838 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3840 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3841 if (new_table == NULL)
3844 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from %s where item_id = \'%s\'", new_table, itemId);
3846 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
3848 if (data_count == 0)
3852 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3859 sync_agent_da_return_e da_add_last_anchor(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_last_anchor_s * last_anchor)
3863 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3864 retvm_if(last_anchor == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_last_anchor_s is NULL !!");
3866 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3870 if (da_is_exist_last_anchor(daci_handler, last_anchor->account_id, last_anchor->data_store_id) == 1)
3871 return SYNC_AGENT_DA_ERR_PRIMARY_KEY_NOT_UNIQUE;
3873 query = "insert into last_anchor_tbl (account_id, data_store_id, last_anchor_server, last_anchor_client, access_name) values (?, ?, ?, ?, ?)";
3875 stmt = __query_prepare(daci_handler, query, strlen(query));
3877 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3879 _stmt_bind_int(daci_handler, stmt, 1, last_anchor->account_id);
3880 _stmt_bind_int(daci_handler, stmt, 2, last_anchor->data_store_id);
3881 __stmt_bind_text(daci_handler, stmt, 3, last_anchor->last_anchor_server);
3882 __stmt_bind_text(daci_handler, stmt, 4, last_anchor->last_anchor_client);
3883 __stmt_bind_text(daci_handler, stmt, 5, last_anchor->access_name);
3885 ret = __stmt_write_step(daci_handler, stmt);
3886 __stmt_finalize(daci_handler, stmt);
3893 sync_agent_da_return_e da_delete_last_anchor_by_account_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id)
3897 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3899 sync_agent_da_return_e ret = _delete_account(daci_handler, SYNC_AGENT_DA_TABLE_NAME_LAST_ANCHOR, account_id);
3900 if (ret != SYNC_AGENT_DA_SUCCESS)
3901 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3908 sync_agent_da_return_e da_delete_last_anchor_by_item_type_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int itemTypeId)
3912 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3914 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3916 char *query = "delete from last_anchor_tbl where account_id = ? and data_store_id = ?";
3918 stmt = __query_prepare(daci_handler, query, strlen(query));
3920 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3922 _stmt_bind_int(daci_handler, stmt, 1, account_id);
3923 _stmt_bind_int(daci_handler, stmt, 2, itemTypeId);
3925 ret = __stmt_write_step(daci_handler, stmt);
3926 __stmt_finalize(daci_handler, stmt);
3933 sync_agent_da_return_e da_set_last_anchor(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_last_anchor_s * last_anchor)
3937 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3938 retvm_if(last_anchor == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_last_anchor_s is NULL !!");
3940 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3942 char *query = "update last_anchor_tbl set last_anchor_server = ?, last_anchor_client = ?, last_update = current_timestamp, access_name = ?" "where account_id = ? and data_store_id = ?";
3944 stmt = __query_prepare(daci_handler, query, strlen(query));
3946 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3948 __stmt_bind_text(daci_handler, stmt, 1, last_anchor->last_anchor_server);
3949 __stmt_bind_text(daci_handler, stmt, 2, last_anchor->last_anchor_client);
3950 __stmt_bind_text(daci_handler, stmt, 3, last_anchor->access_name);
3951 _stmt_bind_int(daci_handler, stmt, 4, last_anchor->account_id);
3952 _stmt_bind_int(daci_handler, stmt, 5, last_anchor->data_store_id);
3954 ret = __stmt_write_step(daci_handler, stmt);
3955 __stmt_finalize(daci_handler, stmt);
3962 sync_agent_da_last_anchor_s *da_get_last_anchor_by_account_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int *count)
3966 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
3968 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3969 sync_agent_da_last_anchor_s *last_anchor = 0;
3975 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3977 snprintf(g_daci_query, sizeof(g_daci_query), "select account_id, data_store_id, last_anchor_server, last_anchor_client from last_anchor_tbl where account_id = %d", account_id);
3979 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
3982 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
3983 last_anchor = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_last_anchor_s *, sizeof(sync_agent_da_last_anchor_s), row_count);
3984 if (last_anchor == NULL) {
3985 _DEBUG_ERROR("memory_allocation failed");
3989 for (i = 0; i < row_count; i++) {
3990 last_anchor[i].account_id = SYNC_AGENT_DA_ATOI(result[index]);
3992 last_anchor[i].data_store_id = SYNC_AGENT_DA_ATOI(result[index]);
3994 last_anchor[i].last_anchor_server = SYNC_AGENT_DA_STRDUP(result[index]);
3996 last_anchor[i].last_anchor_client = SYNC_AGENT_DA_STRDUP(result[index]);
3998 last_anchor[i].access_name = 0;
4005 __free_table(result);
4012 sync_agent_da_last_anchor_s *da_get_last_anchor_by_item_type_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int itemTypeId, int *count)
4016 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
4018 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
4019 sync_agent_da_last_anchor_s *last_anchor = 0;
4025 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
4027 snprintf(g_daci_query, sizeof(g_daci_query), "select account_id, data_store_id, last_anchor_server, last_anchor_client from last_anchor_tbl where account_id = %d and data_store_id = %d", account_id, itemTypeId);
4029 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
4032 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
4033 last_anchor = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_last_anchor_s *, sizeof(sync_agent_da_last_anchor_s), row_count);
4034 if (last_anchor == NULL) {
4035 _DEBUG_ERROR("memory_allocation failed");
4039 for (i = 0; i < row_count; i++) {
4040 last_anchor[i].account_id = SYNC_AGENT_DA_ATOI(result[index]);
4042 last_anchor[i].data_store_id = SYNC_AGENT_DA_ATOI(result[index]);
4044 last_anchor[i].last_anchor_server = SYNC_AGENT_DA_STRDUP(result[index]);
4046 last_anchor[i].last_anchor_client = SYNC_AGENT_DA_STRDUP(result[index]);
4048 last_anchor[i].access_name = 0;
4055 __free_table(result);
4062 sync_agent_da_return_e da_get_last_anchor_by_item_type_id_new(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int item_type_id, GList ** list)
4066 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4068 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
4069 sync_agent_da_last_anchor_s *last_anchor = NULL;
4075 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
4077 snprintf(g_daci_query, sizeof(g_daci_query), "select account_id, data_store_id, last_anchor_server, last_anchor_client from last_anchor_tbl where account_id = %d and data_store_id = %d", account_id, item_type_id);
4079 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
4080 // *count = row_count;
4082 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
4083 for (i = 0; i < row_count; i++) {
4085 ret = sync_agent_create_last_anchor(&last_anchor);
4086 if (ret != SYNC_AGENT_DA_SUCCESS) {
4087 _DEBUG_ERROR("sync_agent_create_last_anchor() failed !!");
4091 last_anchor->account_id = SYNC_AGENT_DA_ATOI(result[index]);
4093 last_anchor->data_store_id = SYNC_AGENT_DA_ATOI(result[index]);
4095 last_anchor->last_anchor_server = SYNC_AGENT_DA_STRDUP(result[index]);
4097 last_anchor->last_anchor_client = SYNC_AGENT_DA_STRDUP(result[index]);
4099 last_anchor->access_name = NULL;
4101 *list = g_list_append(*list, last_anchor);
4103 } else if (ret != SYNC_AGENT_DA_SUCCESS) {
4104 _DEBUG_ERROR("__get_table() failed !!");
4111 __free_table(result);
4118 int da_is_exist_last_anchor(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int itemTypeId)
4122 retvm_if(daci_handler == NULL, 0, "SYNC_AGENT_DA_HANDLER is NULL !!");
4126 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
4128 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from last_anchor_tbl where account_id = %d and data_store_id = %d", account_id, itemTypeId);
4130 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
4132 if (data_count == 0)
4140 sync_agent_da_return_e da_add_mapping(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_mapping_s * mapping)
4144 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4145 retvm_if(mapping == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_mapping_s is NULL !!");
4147 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
4151 if (da_is_exist_mapping_by_luid(daci_handler, mapping->account_id, mapping->luid) == 1) {
4152 _DEBUG_INFO("exist mapping item");
4153 return SYNC_AGENT_DA_ERR_PRIMARY_KEY_NOT_UNIQUE;
4156 query = "insert into mapping_tbl (account_id, data_store_id, luid, guid, access_name) values (?, ?, ?, ?, ?)";
4158 stmt = __query_prepare(daci_handler, query, strlen(query));
4160 _DEBUG_ERROR("stmt is NULL !!");
4161 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4164 _DEBUG_INFO("account_id = %d", mapping->account_id);
4165 _DEBUG_INFO("data_store_id = %d", mapping->data_store_id);
4166 _DEBUG_INFO("luid = %s", mapping->luid);
4167 _DEBUG_INFO("guid = %s", mapping->guid);
4168 _DEBUG_INFO("access_name = %s", mapping->access_name);
4170 _stmt_bind_int(daci_handler, stmt, 1, mapping->account_id);
4171 _stmt_bind_int(daci_handler, stmt, 2, mapping->data_store_id);
4172 __stmt_bind_text(daci_handler, stmt, 3, mapping->luid);
4173 __stmt_bind_text(daci_handler, stmt, 4, mapping->guid);
4174 __stmt_bind_text(daci_handler, stmt, 5, mapping->access_name);
4176 _DEBUG_INFO("query = %s", query);
4178 ret = __stmt_write_step(daci_handler, stmt);
4179 __stmt_finalize(daci_handler, stmt);
4186 sync_agent_da_return_e da_delete_mapping_by_account_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id)
4190 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4192 sync_agent_da_return_e ret = _delete_account(daci_handler, SYNC_AGENT_DA_TABLE_NAME_MAPPING, account_id);
4193 if (ret != SYNC_AGENT_DA_SUCCESS)
4194 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4201 sync_agent_da_return_e da_delete_mapping_by_luid(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *luid)
4205 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4206 retvm_if(luid == NULL, SYNC_AGENT_DA_ERRORS, "luid is NULL !!");
4208 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
4210 char *query = "delete from mapping_tbl where account_id = ? and luid = ?";
4212 stmt = __query_prepare(daci_handler, query, strlen(query));
4214 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4216 _stmt_bind_int(daci_handler, stmt, 1, account_id);
4217 __stmt_bind_text(daci_handler, stmt, 2, luid);
4219 ret = __stmt_write_step(daci_handler, stmt);
4220 __stmt_finalize(daci_handler, stmt);
4227 sync_agent_da_mapping_s *da_get_mapping_by_account_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int *count)
4231 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
4234 sync_agent_da_mapping_s *mapping = 0;
4237 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
4239 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from mapping_tbl where account_id = %d", account_id);
4241 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
4242 *count = data_count;
4244 if (data_count != 0) {
4245 /* query initialize */
4246 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
4248 mapping = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_mapping_s *, sizeof(sync_agent_da_mapping_s), data_count);
4249 if (mapping == NULL) {
4250 _DEBUG_ERROR("memory_allocation failed");
4254 snprintf(g_daci_query, sizeof(g_daci_query), "select * from mapping_tbl where account_id = %d", account_id);
4256 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
4258 for (i = 0; i < data_count; i++) {
4259 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA)
4262 mapping[i].account_id = __stmt_column_int(stmt, 0);
4263 mapping[i].data_store_id = __stmt_column_int(stmt, 1);
4264 mapping[i].luid = _stmt_column_text(stmt, 2);
4265 mapping[i].guid = _stmt_column_text(stmt, 3);
4266 mapping[i].access_name = _stmt_column_text(stmt, 5);
4268 __stmt_finalize(daci_handler, stmt);
4277 sync_agent_da_return_e da_get_mapping_by_account_id_new(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, GList ** list)
4281 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4283 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
4285 sync_agent_da_mapping_s *mapping;
4288 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
4290 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from mapping_tbl where account_id = %d", account_id);
4292 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
4294 if (data_count != 0) {
4295 /* query initialize */
4296 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
4298 snprintf(g_daci_query, sizeof(g_daci_query), "select * from mapping_tbl where account_id = %d", account_id);
4300 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
4302 for (i = 0; i < data_count; i++) {
4303 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA)
4307 ret = sync_agent_create_mapping(&mapping);
4308 if (ret != SYNC_AGENT_DA_SUCCESS) {
4309 _DEBUG_ERROR("sync_agent_create_mapping() failed !!");
4313 mapping->account_id = __stmt_column_int(stmt, 0);
4314 mapping->data_store_id = __stmt_column_int(stmt, 1);
4315 mapping->luid = _stmt_column_text(stmt, 2);
4316 mapping->guid = _stmt_column_text(stmt, 3);
4317 mapping->access_name = _stmt_column_text(stmt, 5);
4319 *list = g_list_append(*list, mapping);
4321 __stmt_finalize(daci_handler, stmt);
4323 _DEBUG_ERROR("stmt is NULL !!");
4326 _DEBUG_INFO("no data !!");
4327 ret = SYNC_AGENT_DA_SUCCESS;
4335 char *da_get_mapping_guid(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *luid)
4339 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
4340 retvm_if(luid == NULL, NULL, "luid is NULL !!");
4343 char *query = "select guid from mapping_tbl where account_id = ? and luid = ?";
4346 stmt = __query_prepare(daci_handler, query, strlen(query));
4348 _stmt_bind_int(daci_handler, stmt, 1, account_id);
4349 __stmt_bind_text(daci_handler, stmt, 2, luid);
4351 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA)
4352 guid = _stmt_column_text(stmt, 0);
4354 __stmt_finalize(daci_handler, stmt);
4362 sync_agent_da_return_e da_get_mapping_guid_new(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *luid, sync_agent_da_mapping_s ** sync_agent_mapping)
4366 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4367 retvm_if(luid == NULL, SYNC_AGENT_DA_ERRORS, "luid is NULL !!");
4369 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
4371 char *query = "select * from mapping_tbl where account_id = ? and luid = ?";
4373 stmt = __query_prepare(daci_handler, query, strlen(query));
4375 _stmt_bind_int(daci_handler, stmt, 1, account_id);
4376 __stmt_bind_text(daci_handler, stmt, 2, luid);
4378 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
4379 (*sync_agent_mapping)->account_id = __stmt_column_int(stmt, 0);
4380 (*sync_agent_mapping)->data_store_id = __stmt_column_int(stmt, 1);
4381 (*sync_agent_mapping)->luid = _stmt_column_text(stmt, 2);
4382 (*sync_agent_mapping)->guid = _stmt_column_text(stmt, 3);
4383 (*sync_agent_mapping)->access_name = _stmt_column_text(stmt, 5);
4384 ret = SYNC_AGENT_DA_SUCCESS;
4387 __stmt_finalize(daci_handler, stmt);
4389 _DEBUG_ERROR("stmt is NULL !!");
4397 int da_is_exist_mapping_by_account_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id)
4401 retvm_if(daci_handler == NULL, 0, "SYNC_AGENT_DA_HANDLER is NULL !!");
4405 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
4407 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from mapping_tbl where account_id = %d", account_id);
4409 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
4411 if (data_count == 0)
4419 int da_is_exist_mapping_by_luid(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *luid)
4423 retvm_if(daci_handler == NULL, 0, "SYNC_AGENT_DA_HANDLER is NULL !!");
4424 retvm_if(luid == NULL, 0, "luid is NULL !!");
4428 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
4430 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from mapping_tbl where account_id = %d and luid = \'%s\'", account_id, luid);
4432 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
4434 if (data_count == 0)
4437 _DEBUG_INFO("ret : %d", ret);
4444 sync_agent_da_return_e da_add_id_provider(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_id_provider_s * id_provider)
4448 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4449 retvm_if(id_provider == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_id_provider_s is NULL !!");
4452 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
4455 query = "insert into id_provider_tbl (id_provider_code, id_capacity, bit_per_page, last_id, free_bit_cnt) values (?, ?, ?, ?, ?)";
4457 stmt = __query_prepare(daci_handler, query, strlen(query));
4459 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4462 _stmt_bind_int(daci_handler, stmt, 1, id_provider->id_provider_code);
4463 _stmt_bind_int(daci_handler, stmt, 2, id_provider->id_capacity);
4464 _stmt_bind_int(daci_handler, stmt, 3, id_provider->bit_per_page);
4465 _stmt_bind_int(daci_handler, stmt, 4, id_provider->last_id);
4466 _stmt_bind_int(daci_handler, stmt, 5, id_provider->free_bit_cnt);
4468 ret = __stmt_write_step(daci_handler, stmt);
4469 if (ret != SYNC_AGENT_DA_SUCCESS) {
4470 __stmt_finalize(daci_handler, stmt);
4471 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4474 __stmt_finalize(daci_handler, stmt);
4481 sync_agent_da_return_e da_get_id_provider(SYNC_AGENT_DA_HANDLER * daci_handler, unsigned int id_provider_code, sync_agent_da_id_provider_s ** id_provider)
4485 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4487 int ret = SYNC_AGENT_DA_SUCCESS;
4489 char *query = "select id_capacity, bit_per_page, last_id, free_bit_cnt from id_provider_tbl where id_provider_code = ?";
4491 stmt = __query_prepare(daci_handler, query, strlen(query));
4493 _stmt_bind_int(daci_handler, stmt, 1, id_provider_code);
4495 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
4496 *id_provider = (sync_agent_da_id_provider_s *) calloc(1, sizeof(sync_agent_da_id_provider_s));
4497 if (*id_provider == NULL) {
4498 _DEBUG_ERROR("CALLOC failed !!!");
4499 return SYNC_AGENT_DA_ERRORS;
4501 (*id_provider)->id_capacity = __stmt_column_int(stmt, 0);
4502 (*id_provider)->bit_per_page = __stmt_column_int(stmt, 1);
4503 (*id_provider)->last_id = __stmt_column_int(stmt, 2);
4504 (*id_provider)->free_bit_cnt = __stmt_column_int(stmt, 3);
4506 ret = SYNC_AGENT_DA_ERR_NO_DATA;
4508 __stmt_finalize(daci_handler, stmt);
4516 sync_agent_da_return_e da_update_id_provider(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_id_provider_s * id_provider)
4520 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4521 retvm_if(id_provider == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_id_provider_s is NULL !!");
4523 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
4525 char *query = "update id_provider_tbl set last_id = ?, free_bit_cnt = ? where id_provider_code = ?";
4527 stmt = __query_prepare(daci_handler, query, strlen(query));
4529 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4531 _stmt_bind_int(daci_handler, stmt, 1, id_provider->last_id);
4532 _stmt_bind_int(daci_handler, stmt, 2, id_provider->free_bit_cnt);
4533 _stmt_bind_int(daci_handler, stmt, 3, id_provider->id_provider_code);
4535 ret = __stmt_write_step(daci_handler, stmt);
4536 __stmt_finalize(daci_handler, stmt);
4543 sync_agent_da_return_e da_add_id_page(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_id_page_s * id_page, unsigned int page_byte_size)
4547 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4548 retvm_if(id_page == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_id_page_s is NULL !!");
4551 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
4554 query = "insert into id_page_tbl (page_index, id_provider_code, page_bit) values (?, ?, ?)";
4556 stmt = __query_prepare(daci_handler, query, strlen(query));
4558 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4561 _stmt_bind_int(daci_handler, stmt, 1, id_page->page_index);
4562 _stmt_bind_int(daci_handler, stmt, 2, id_page->id_provider_code);
4563 _stmt_bind_blob(daci_handler, stmt, 3, id_page->page_bit, page_byte_size);
4565 for (; i < page_byte_size; i++) {
4566 _DEBUG_INFO("[%d] %d\n", i, (id_page->page_bit)[i]);
4569 ret = __stmt_write_step(daci_handler, stmt);
4570 if (ret != SYNC_AGENT_DA_SUCCESS) {
4571 __stmt_finalize(daci_handler, stmt);
4572 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4575 __stmt_finalize(daci_handler, stmt);
4582 sync_agent_da_return_e da_delete_id_page(SYNC_AGENT_DA_HANDLER * daci_handler, unsigned int id_provider_code, unsigned int page_index)
4586 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4588 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
4590 char *query = "delete from id_page_tbl where id_provider_code = ? and page_index = ?";
4592 stmt = __query_prepare(daci_handler, query, strlen(query));
4594 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4596 _stmt_bind_int(daci_handler, stmt, 1, id_provider_code);
4597 _stmt_bind_int(daci_handler, stmt, 2, page_index);
4599 ret = __stmt_write_step(daci_handler, stmt);
4600 __stmt_finalize(daci_handler, stmt);
4607 sync_agent_da_return_e da_get_id_page(SYNC_AGENT_DA_HANDLER * daci_handler, unsigned int id_provider_code, unsigned int page_index, char **page_bit)
4611 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4613 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
4615 char *query = "select page_bit from id_page_tbl where id_provider_code = ? and page_index = ?";
4617 stmt = __query_prepare(daci_handler, query, strlen(query));
4619 _stmt_bind_int(daci_handler, stmt, 1, id_provider_code);
4620 _stmt_bind_int(daci_handler, stmt, 2, page_index);
4622 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
4623 int byte_len = sqlite3_column_bytes(stmt, 0);
4624 byte_len += 1; /* The count which sqlite3_column_bytes returns doesn't include trailing \0 in case of string. */
4625 *page_bit = (char *)calloc(byte_len, sizeof(char));
4626 if (*page_bit == NULL) {
4627 _DEBUG_ERROR("CALLOC failed !!!");
4628 return SYNC_AGENT_DA_ERRORS;
4631 const unsigned char *geted_page_bit = sqlite3_column_text(stmt, 0);
4633 memcpy(*page_bit, geted_page_bit, byte_len);
4635 _DEBUG_INFO("NO DATA");
4638 __stmt_finalize(daci_handler, stmt);
4646 sync_agent_da_return_e da_get_id_page_index(SYNC_AGENT_DA_HANDLER * daci_handler, unsigned int id_provider_code, int *count)
4650 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4652 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
4654 char *query = "select count(*) from id_page_tbl where id_provider_code = ?;";
4656 stmt = __query_prepare(daci_handler, query, strlen(query));
4658 _stmt_bind_int(daci_handler, stmt, 1, id_provider_code);
4660 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
4661 *count = __stmt_column_int(stmt, 0);
4663 _DEBUG_INFO("NO DATA");
4666 __stmt_finalize(daci_handler, stmt);
4674 sync_agent_da_return_e da_update_id_page(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_id_page_s * id_page, unsigned int page_byte_size)
4678 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4679 retvm_if(id_page == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_id_page_s is NULL !!");
4681 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
4683 char *query = "update id_page_tbl set page_bit = ? where id_provider_code = ? and page_index = ?";
4685 stmt = __query_prepare(daci_handler, query, strlen(query));
4687 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4689 _stmt_bind_blob(daci_handler, stmt, 1, id_page->page_bit, page_byte_size);
4690 _stmt_bind_int(daci_handler, stmt, 2, id_page->id_provider_code);
4691 _stmt_bind_int(daci_handler, stmt, 3, id_page->page_index);
4693 ret = __stmt_write_step(daci_handler, stmt);
4694 __stmt_finalize(daci_handler, stmt);
4701 sync_agent_da_return_e da_get_item_count_by_datastore_id(SYNC_AGENT_DA_HANDLER *daci_handler, int data_store_id, int fw_account_id, int *item_count)
4705 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4707 char query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
4708 char *new_table = 0;
4711 _DEBUG_INFO("data_store_id = %d", data_store_id);
4713 new_table = __replace_table_name("account_%d_item_changelog_tbl", fw_account_id, 1);
4714 if (new_table == NULL) {
4715 _DEBUG_ERROR("__replace_table_name is failed");
4717 return SYNC_AGENT_DA_ERRORS;
4720 snprintf(query, sizeof(query), "select count(distinct item_tbl.item_id) from item_tbl where item_tbl.account_id = %d and item_tbl.data_store_id = %d and"
4721 " item_tbl.item_id not in (select distinct item.item_id from item_tbl as item join %s as changelog where changelog.item_id = item.item_id and item.data_store_id = %d and changelog.operation_id = 303)", fw_account_id, data_store_id, new_table, data_store_id);
4722 _DEBUG_INFO("query = %s", query);
4723 data_count = _get_data_count(daci_handler, query, strlen(query));
4725 *item_count = data_count;
4727 if (new_table != NULL)
4732 return SYNC_AGENT_DA_SUCCESS;
4735 sync_agent_da_return_e da_get_updated_exdate_item_id_list(SYNC_AGENT_DA_HANDLER *daci_handler, char *fw_id, GList ** list)
4739 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4740 retvm_if(fw_id == NULL, SYNC_AGENT_DA_ERRORS, "fw_id is NULL !!");
4743 char *parent_service_id = NULL;
4745 char query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = {0, };
4746 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
4753 snprintf(query, sizeof(query), "select service_id from item_tbl where item_id = %s", fw_id);
4754 _DEBUG_INFO("query : %s", query);
4755 stmt = __query_prepare(daci_handler, query, strlen(query));
4757 ret = _stmt_read_step(daci_handler, stmt);
4758 if (ret == SYNC_AGENT_DA_ERR_MORE_DATA)
4759 parent_service_id = _stmt_column_text(stmt, 0);
4761 _DEBUG_ERROR("_stmt_read_step() failed");
4762 __stmt_finalize(daci_handler, stmt);
4765 __stmt_finalize(daci_handler, stmt);
4767 SYNC_AGENT_DA_MEMORY_SET(query);
4769 snprintf(query, sizeof(query), "select item_id from item_tbl where parent_service_id = \'%s\'", parent_service_id);
4770 _DEBUG_INFO("query : %s", query);
4772 ret = _get_table(daci_handler, query, &result, &row_count, &col_count);
4773 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
4774 for (i = 0; i < row_count; i++) {
4776 item_id = SYNC_AGENT_DA_STRDUP(result[index]);
4778 *list = g_list_append(*list, item_id);
4782 if (result != NULL) {
4783 __free_table(result);
4792 int _busy_handler(void *pData, int count)
4796 _DEBUG_TRACE("__busy_handler %d called", count);
4798 /* sleep time when SQLITE_LOCK */
4803 /* retry will be stopped if busy handler return 0 */
4804 return SYNC_AGENT_DA_RETRY_COUNT - count;
4807 sync_agent_da_return_e __query_exec(SYNC_AGENT_DA_HANDLER * daci_handler, char *query, char *err_msg)
4811 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERR_NOT_OPENED, "SYNC_AGENT_DA_HANDLER is NULL !!");
4812 retvm_if(query == NULL, SYNC_AGENT_DA_ERRORS, "query is NULL !!");
4814 char *query_msg = 0;
4817 int err_mutex = pthread_mutex_lock(&exec_lock);
4819 _DEBUG_ERROR("Failed pthread_mutex_lock : %d", err_mutex);
4821 ret = sqlite3_exec(daci_handler, query, 0, 0, &query_msg);
4822 err_mutex = pthread_mutex_unlock(&exec_lock);
4824 _DEBUG_ERROR("Failed pthread_mutex_unlock : %d", err_mutex);
4827 if (ret != SQLITE_OK) {
4828 _DEBUG_ERROR("%s(%d) : %s", err_msg, ret, query_msg);
4830 if (NULL != query_msg)
4831 sqlite3_free(query_msg);
4833 if (ret == SQLITE_BUSY)
4834 return SYNC_AGENT_DA_ERR_LOCKED;
4836 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4841 return SYNC_AGENT_DA_SUCCESS;
4844 daci_stmt __query_prepare(SYNC_AGENT_DA_HANDLER * daci_handler, char *query, int size)
4848 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
4849 retvm_if(query == NULL, NULL, "query is NULL !!");
4854 int err_mutex = pthread_mutex_lock(&exec_lock);
4856 _DEBUG_ERROR("Failed pthread_mutex_lock : [%d]", err_mutex);
4860 //_DEBUG_INFO("query = [%s], size = [%d]", query, size);
4861 ret = sqlite3_prepare_v2(daci_handler, query, size, &stmt, 0);
4862 if (ret != SQLITE_OK) {
4863 _DEBUG_ERROR("sqlite3_query_prepare failed[%d] : [%s]", ret, sqlite3_errmsg(daci_handler));
4866 err_mutex = pthread_mutex_unlock(&exec_lock);
4868 _DEBUG_ERROR("Failed pthread_mutex_unlock : [%d]", err_mutex);
4875 sync_agent_da_return_e __stmt_bind_text(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt, int index, const char *value)
4879 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4883 if (value != NULL) {
4884 ret = sqlite3_bind_text(stmt, index, value, strlen(value), SQLITE_STATIC);
4886 ret = __stmt_bind_null(daci_handler, stmt, index);
4888 if (ret == SYNC_AGENT_DA_SUCCESS)
4892 if (ret != SQLITE_OK) {
4893 _DEBUG_ERROR("sqlite3_stmt_bind_text failed(%d) : %s ", ret, sqlite3_errmsg(daci_handler));
4894 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4899 return SYNC_AGENT_DA_SUCCESS;
4902 sync_agent_da_return_e _stmt_bind_int(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt, int index, const int value)
4906 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4910 ret = sqlite3_bind_int(stmt, index, value);
4911 if (ret != SQLITE_OK) {
4912 _DEBUG_ERROR("sqlite3_stmt_bind_int failed(%d) : %s \n", ret, sqlite3_errmsg(daci_handler));
4913 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4918 return SYNC_AGENT_DA_SUCCESS;
4921 static sync_agent_da_return_e _stmt_bind_blob(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt, int index, const void *value, int nbyte)
4925 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4929 ret = sqlite3_bind_blob(stmt, index, value, nbyte, 0);
4930 if (ret != SQLITE_OK) {
4931 _DEBUG_ERROR("sqlite3_bind_blob failed(%d) : %s \n", ret, sqlite3_errmsg(daci_handler));
4932 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4937 return SYNC_AGENT_DA_SUCCESS;
4940 sync_agent_da_return_e __stmt_bind_null(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt, int index)
4944 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4948 ret = sqlite3_bind_null(stmt, index);
4949 if (ret != SQLITE_OK) {
4950 _DEBUG_ERROR("sqlite3_stmt_bind_null failed(%d) : %s", ret, sqlite3_errmsg(daci_handler));
4951 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4956 return SYNC_AGENT_DA_SUCCESS;
4959 sync_agent_da_return_e _stmt_read_step(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt)
4963 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4966 // int err_mutex = 0;
4968 // err_mutex = pthread_mutex_lock(&exec_lock);
4970 // _DEBUG_ERROR("Failed pthread_mutex_lock : %d", err_mutex);
4973 ret = sqlite3_step(stmt);
4975 // err_mutex = pthread_mutex_unlock(&exec_lock);
4977 // _DEBUG_ERROR("Failed pthread_mutex_unlock : %d", err_mutex);
4980 if (ret == SQLITE_ROW)
4981 return SYNC_AGENT_DA_ERR_MORE_DATA;
4983 if (ret != SQLITE_DONE) {
4984 _DEBUG_ERROR("sqlite3_stmt_step failed(%d) : %s", ret, sqlite3_errmsg(daci_handler));
4986 if (ret == SQLITE_BUSY)
4987 return SYNC_AGENT_DA_ERR_LOCKED;
4989 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4994 return SYNC_AGENT_DA_SUCCESS;
4997 static sync_agent_da_return_e __stmt_write_step(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt)
5001 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
5003 int transaction_flag = 0;
5006 if (use_transaction_thread_id != 0) {
5007 if (use_transaction_thread_id != SYNC_AGENT_DA_GET_THREAD_ID) {
5008 err_mutex = pthread_mutex_lock(&transaction_lock);
5010 _DEBUG_ERROR("Failed pthread_mutex_lock : %d", err_mutex);
5012 use_transaction_thread_id = SYNC_AGENT_DA_GET_THREAD_ID;
5013 transaction_flag = 1;
5017 err_mutex = pthread_mutex_lock(&exec_lock);
5019 _DEBUG_ERROR("Failed pthread_mutex_lock : %d", err_mutex);
5022 int ret = sqlite3_step(stmt);
5024 err_mutex = pthread_mutex_unlock(&exec_lock);
5026 _DEBUG_ERROR("Failed pthread_mutex_unlock : %d", err_mutex);
5029 if (transaction_flag) {
5030 use_transaction_thread_id = 0;
5031 err_mutex = pthread_mutex_unlock(&transaction_lock);
5033 _DEBUG_ERROR("Failed pthread_mutex_unlock : %d", err_mutex);
5037 if (ret == SQLITE_ROW) {
5038 return SYNC_AGENT_DA_ERR_MORE_DATA;
5041 if (ret != SQLITE_DONE) {
5042 _DEBUG_ERROR("sqlite3_stmt_step failed(%d) : %s", ret, sqlite3_errmsg(daci_handler));
5043 if (ret == SQLITE_BUSY) {
5044 _DEBUG_ERROR("Never reached this line!!");
5045 return SYNC_AGENT_DA_ERR_LOCKED;
5047 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
5052 return SYNC_AGENT_DA_SUCCESS;
5055 sync_agent_da_return_e _stmt_reset(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt)
5059 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
5063 if (sqlite3_reset(stmt) != SQLITE_OK) {
5064 _DEBUG_ERROR("sqlite3_stmt_reset failed(%d) : %s", ret, sqlite3_errmsg(daci_handler));
5065 return SYNC_AGENT_DA_ERRORS;
5070 return SYNC_AGENT_DA_SUCCESS;
5073 sync_agent_da_return_e __stmt_finalize(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt)
5077 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
5081 if (sqlite3_finalize(stmt) != SQLITE_OK) {
5082 _DEBUG_ERROR("sqlite3_stmt_finalize failed(%d) : %s", ret, sqlite3_errmsg(daci_handler));
5083 return SYNC_AGENT_DA_ERRORS;
5088 return SYNC_AGENT_DA_SUCCESS;
5091 char *_stmt_column_text(daci_stmt stmt, int index)
5097 temp = (char *)sqlite3_column_text(stmt, index);
5101 return SYNC_AGENT_DA_STRDUP(temp);
5104 int __stmt_column_int(daci_stmt stmt, int index)
5110 return (int)sqlite3_column_int(stmt, index);
5113 sync_agent_da_return_e _get_table(SYNC_AGENT_DA_HANDLER * daci_handler, char *query, char ***result, int *row_count, int *col_count)
5117 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERR_NOT_OPENED, "SYNC_AGENT_DA_HANDLER is NULL !!");
5118 retvm_if(query == NULL, SYNC_AGENT_DA_ERRORS, "query is NULL !!");
5123 int err_mutex = pthread_mutex_lock(&exec_lock);
5125 _DEBUG_TRACE("Failed pthread_mutex_lock : %d", err_mutex);
5127 ret = sqlite3_get_table(daci_handler, query, result, row_count, col_count, &err_msg);
5128 err_mutex = pthread_mutex_unlock(&exec_lock);
5130 _DEBUG_TRACE("Failed pthread_mutex_lock : %d", err_mutex);
5133 if (ret != SQLITE_OK) {
5134 _DEBUG_ERROR("sqlite3_get_table failed(%d) : %s", ret, err_msg);
5136 __free_table(*result);
5137 if (NULL != err_msg)
5138 sqlite3_free(err_msg);
5139 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
5144 return SYNC_AGENT_DA_SUCCESS;
5147 void __free_table(char **result)
5152 sqlite3_free_table(result);
5157 sync_agent_da_return_e _create_changelog_table(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id)
5161 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
5163 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
5164 char *new_table = 0;
5165 char *new_table_create = 0;
5167 ret = da_begin_transaction(daci_handler);
5168 if (ret != SYNC_AGENT_DA_SUCCESS) {
5169 _DEBUG_ERROR("agent_db_changelog_tbl_create failed");
5170 return SYNC_AGENT_DA_ERR_CREATE_TABLE_FAILED;
5173 /* 9. create account_item_changelog_tbl */
5174 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
5175 if (new_table == NULL) {
5176 da_end_transaction(daci_handler, SYNC_AGENT_DA_TRANSACTION_ROLLBACK);
5177 return SYNC_AGENT_DA_ERR_CREATE_TABLE_FAILED;
5180 if (__exist_table(daci_handler, new_table) == 0) {
5181 new_table_create = __replace_table_name(g_daci_create_table[SYNC_AGENT_DA_TABLE_NAME_ACCOUNT_ITEM_CHANGELOG], account_id, 4);
5183 ret = __query_exec(daci_handler, new_table_create, "Item_changelog_tbl_create failed");
5185 if (ret != SYNC_AGENT_DA_SUCCESS) {
5186 da_end_transaction(daci_handler, SYNC_AGENT_DA_TRANSACTION_ROLLBACK);
5187 return SYNC_AGENT_DA_ERR_CREATE_TABLE_FAILED;
5192 SYNC_AGENT_DA_MEMORY_FREE(new_table);
5193 SYNC_AGENT_DA_MEMORY_FREE(new_table_create);
5197 return da_end_transaction(daci_handler, SYNC_AGENT_DA_TRANSACTION_COMMIT);
5200 sync_agent_da_return_e _drop_changelog_table(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id)
5204 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
5206 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
5207 char *new_table_drop = 0;
5209 /* 9. drop account_item_changelog_tbl */
5210 new_table_drop = __replace_table_name(g_daci_drop_table[SYNC_AGENT_DA_TABLE_NAME_ACCOUNT_ITEM_CHANGELOG], account_id, 1);
5212 ret = __query_exec(daci_handler, new_table_drop, "Item_changelog_tbl_drop failed");
5213 if (ret != SYNC_AGENT_DA_SUCCESS) {
5214 /* da_end_transaction(daci_handler, SYNC_AGENT_DA_TRANSACTION_ROLLBACK);*/
5215 return SYNC_AGENT_DA_ERR_DROP_TABLE_FAILED;
5219 SYNC_AGENT_DA_MEMORY_FREE(new_table_drop);
5226 sync_agent_da_return_e _delete_changlog_table(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id)
5230 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
5232 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
5233 char *new_table_delete = 0;
5235 /* 9. delete account_item_changelog_tbl */
5236 new_table_delete = __replace_table_name(g_daci_delete_table[SYNC_AGENT_DA_TABLE_NAME_ACCOUNT_ITEM_CHANGELOG], account_id, 1);
5238 ret = __query_exec(daci_handler, new_table_delete, "Item_changelog_tbl_delete failed");
5239 if (ret != SYNC_AGENT_DA_SUCCESS) {
5240 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
5244 SYNC_AGENT_DA_MEMORY_FREE(new_table_delete);
5251 int __exist_table(SYNC_AGENT_DA_HANDLER * daci_handler, const char *table_name)
5256 int table_count = 0;
5257 char *query = "select count(*) from sqlite_master where tbl_name= ?";
5259 stmt = __query_prepare(daci_handler, query, strlen(query));
5260 if ((stmt != NULL) && (__stmt_bind_text(daci_handler, stmt, 1, table_name) == SYNC_AGENT_DA_SUCCESS)) {
5262 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA)
5263 table_count = __stmt_column_int(stmt, 0);
5265 __stmt_finalize(daci_handler, stmt);
5267 if (table_count > 0) {
5279 int _get_data_count(SYNC_AGENT_DA_HANDLER * daci_handler, char *query, int size)
5283 retvm_if(daci_handler == NULL, 0, "SYNC_AGENT_DA_HANDLER is NULL !!");
5284 retvm_if(query == NULL, 0, "query is NULL !!");
5289 stmt = __query_prepare(daci_handler, query, size);
5291 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA)
5292 data_count = __stmt_column_int(stmt, 0);
5294 __stmt_finalize(daci_handler, stmt);
5302 char *__replace_table_name(char *oldTable, int account_id, int count)
5306 retvm_if(oldTable == NULL, NULL, "old Table is NULL !!");
5308 char *new_table = 0;
5311 /* SVACE : Measure the size for allocation memory. */
5312 if (count == 1) /* table name convert */
5313 length = snprintf(0, 0, oldTable, account_id);
5314 else if (count == 4) /* table create query convert */
5315 length = snprintf(0, 0, oldTable, account_id, account_id, account_id, account_id);
5317 new_table = SYNC_AGENT_DA_MEMORY_MALLOC(char *, sizeof(char), (length + 1));
5318 if (new_table == NULL) {
5319 _DEBUG_ERROR("memory_allocation failed");
5324 snprintf(new_table, length + 1, oldTable, account_id);
5325 } else if (count == 4) {
5326 snprintf(new_table, length + 1, oldTable, account_id, account_id, account_id, account_id);
5334 char *__get_table_name(sync_agent_da_table_name_e table_name)
5338 char *table_str = 0;
5340 switch (table_name) {
5341 case SYNC_AGENT_DA_TABLE_NAME_ACCOUNT:
5343 table_str = "account_tbl";
5346 case SYNC_AGENT_DA_TABLE_NAME_FOLDER:
5348 table_str = "folder_tbl";
5351 case SYNC_AGENT_DA_TABLE_NAME_ITEM:
5353 table_str = "item_tbl";
5356 case SYNC_AGENT_DA_TABLE_NAME_CONFIG:
5358 table_str = "config_tbl";
5361 case SYNC_AGENT_DA_TABLE_NAME_ACCOUNT_ITEM_CHANGELOG:
5363 table_str = "account_item_changelog_tbl";
5366 case SYNC_AGENT_DA_TABLE_NAME_LAST_ANCHOR:
5368 table_str = "last_anchor_tbl";
5371 case SYNC_AGENT_DA_TABLE_NAME_MAPPING:
5373 table_str = "mapping_tbl";
5376 case SYNC_AGENT_DA_TABLE_NAME_ID_PROVIDER:
5378 table_str = "id_provider_tbl";
5381 case SYNC_AGENT_DA_TABLE_NAME_ID_PAGE:
5383 table_str = "id_page_tbl";
5395 char *_get_column_name(sync_agent_da_column_name_e column_name)
5399 char *column_str = 0;
5401 switch (column_name) {
5402 case SYNC_AGENT_DA_COLUMN_NAME_ITEM_ID:
5404 column_str = "item_id";
5407 case SYNC_AGENT_DA_COLUMN_NAME_SERVICE_ID:
5409 column_str = "service_id";
5421 int _get_next_account_id(void)
5425 int next_account_id = 1;
5426 int *account_id_list = 0;
5430 account_id_list = da_get_account_id_list(&count);
5431 if (account_id_list != NULL) {
5432 for (i = 0; i < count; i++) {
5433 if ((i + 1) != account_id_list[i])
5439 free(account_id_list);
5444 return next_account_id;
5447 sync_agent_da_return_e _delete_account(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_table_name_e table_name, int account_id)
5451 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
5454 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
5455 char *table_str = 0;
5456 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
5458 table_str = __get_table_name(table_name);
5460 if (!strcmp(table_str, "config_tbl")) {
5461 snprintf(g_daci_query, sizeof(g_daci_query), "delete from %s where config_id = %d", table_str, account_id);
5462 } else if (!strcmp(table_str, "id_provider_tbl") || !strcmp(table_str, "id_page_tbl")) {
5465 snprintf(g_daci_query, sizeof(g_daci_query), "delete from %s where account_id = %d", table_str, account_id);
5468 _DEBUG_TRACE("i = %d, tableName = %s, query = %s", table_name, table_str, g_daci_query);
5469 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
5471 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
5473 ret = __stmt_write_step(daci_handler, stmt);
5474 __stmt_finalize(daci_handler, stmt);
5482 *=============================================================================================================================
5484 *=============================================================================================================================
5486 void da_drop_table(SYNC_AGENT_DA_HANDLER * daci_handler, int *accountIdList, int account_count)
5490 retm_if(daci_handler == NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
5491 retm_if(accountIdList == NULL, "account Id List is NULL !!");
5495 for (i = 0; i < account_count; i++)
5496 _drop_changelog_table(daci_handler, accountIdList[i]);
5501 char *da_get_daci_file_path(void)
5507 return daci_file_path;