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," "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, 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].access_name);
1409 ret = __stmt_write_step(daci_handler, stmt);
1410 if ((ret != SYNC_AGENT_DA_ERR_MORE_DATA) && (ret != SYNC_AGENT_DA_SUCCESS)) {
1411 __stmt_finalize(daci_handler, stmt);
1412 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
1414 _stmt_reset(daci_handler, stmt);
1417 __stmt_finalize(daci_handler, stmt);
1424 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)
1428 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1429 retvm_if(item == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_item_s is NULL !!");
1432 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1433 char **id_list = NULL;
1436 for (i = 0; i < count; i++) {
1437 if (item[i].item_id != NULL) {
1438 if (da_is_exist_item(daci_handler, item[i].item_id) == 1)
1439 return SYNC_AGENT_DA_ERR_PRIMARY_KEY_NOT_UNIQUE;
1443 char *query = "insert into item_tbl (item_id, data_store_id, account_id, folder_id, service_id, access_name) values (?, ?, ?, ?, ?, ?)";
1445 stmt = __query_prepare(daci_handler, query, strlen(query));
1447 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
1450 for (i = 0; i < count; i++) {
1451 if (item[i].item_id != NULL) {
1452 __stmt_bind_text(daci_handler, stmt, 1, item[i].item_id);
1453 *item_id = strdup(item[i].item_id);
1455 id_list = sync_agent_generate_item_luid(1, 1);
1456 if (id_list != NULL) {
1457 __stmt_bind_text(daci_handler, stmt, 1, id_list[0]);
1459 *item_id = strdup(id_list[0]);
1461 if (id_list[0] != NULL)
1464 if (id_list != NULL)
1469 _DEBUG_ERROR("sync_agent_generate_item_luid() failed !!");
1470 return SYNC_AGENT_DA_ERRORS;
1473 _stmt_bind_int(daci_handler, stmt, 2, item[i].data_store_id);
1474 _stmt_bind_int(daci_handler, stmt, 3, item[i].account_id);
1475 __stmt_bind_text(daci_handler, stmt, 4, item[i].folder_id);
1476 __stmt_bind_text(daci_handler, stmt, 5, item[i].service_id);
1477 __stmt_bind_text(daci_handler, stmt, 6, item[i].access_name);
1479 ret = __stmt_write_step(daci_handler, stmt);
1480 if ((ret != SYNC_AGENT_DA_ERR_MORE_DATA) && (ret != SYNC_AGENT_DA_SUCCESS)) {
1481 __stmt_finalize(daci_handler, stmt);
1482 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
1484 _stmt_reset(daci_handler, stmt);
1487 __stmt_finalize(daci_handler, stmt);
1494 sync_agent_da_return_e da_delete_item_by_Item_id(SYNC_AGENT_DA_HANDLER * daci_handler, char *itemId)
1498 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1499 retvm_if(itemId == NULL, SYNC_AGENT_DA_ERRORS, "item Id is NULL !!");
1501 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1503 char query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = {0,};
1505 snprintf(query, sizeof(query), "delete from item_tbl where item_id = %s", itemId);
1507 //_DEBUG_INFO("query = [%s]", query);
1509 stmt = __query_prepare(daci_handler, query, strlen(query));
1511 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
1513 ret = __stmt_write_step(daci_handler, stmt);
1514 __stmt_finalize(daci_handler, stmt);
1521 sync_agent_da_return_e da_delete_item_by_item_type_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int itemTypeId)
1525 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1527 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1531 sync_agent_da_item_info_s *item_info = 0;
1532 char *query = "delete from item_tbl where account_id = ? and data_store_id = ?";
1534 /* delete changelog */
1535 item_info = da_get_item_info_by_item_type_id(daci_handler, account_id, itemTypeId, &count);
1537 for (i = 0; i < count; i++) {
1538 ret = da_delete_item_changelog_by_item_id(daci_handler, account_id, item_info[i].itemId);
1539 if (ret != SYNC_AGENT_DA_SUCCESS)
1544 stmt = __query_prepare(daci_handler, query, strlen(query));
1548 _stmt_bind_int(daci_handler, stmt, 1, account_id);
1549 _stmt_bind_int(daci_handler, stmt, 2, itemTypeId);
1551 ret = __stmt_write_step(daci_handler, stmt);
1552 if (ret != SYNC_AGENT_DA_SUCCESS) {
1556 sync_agent_free_memory_item_info(item_info, count);
1560 return __stmt_finalize(daci_handler, stmt);
1564 sync_agent_free_memory_item_info(item_info, count);
1567 __stmt_finalize(daci_handler, stmt);
1569 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
1572 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)
1576 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1578 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1581 char *query = "delete from item_tbl where account_id = ? and data_store_id = ?";
1583 stmt = __query_prepare(daci_handler, query, strlen(query));
1587 _stmt_bind_int(daci_handler, stmt, 1, account_id);
1588 _stmt_bind_int(daci_handler, stmt, 2, item_type_id);
1590 ret = __stmt_write_step(daci_handler, stmt);
1591 if (ret != SYNC_AGENT_DA_SUCCESS) {
1597 return __stmt_finalize(daci_handler, stmt);
1602 __stmt_finalize(daci_handler, stmt);
1604 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
1607 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)
1611 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1613 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1616 sync_agent_da_item_info_s *item_info = 0;
1618 /* delete changelog */
1619 item_info = da_get_item_info_by_item_type_id_and_operation_id(daci_handler, account_id, itemTypeId, 303, &count);
1621 for (i = 0; i < count; i++) {
1622 ret = da_delete_item_by_Item_id(daci_handler, item_info[i].itemId);
1623 if (ret != SYNC_AGENT_DA_SUCCESS)
1626 ret = da_delete_item_changelog_by_item_id(daci_handler, account_id, item_info[i].itemId);
1627 if (ret != SYNC_AGENT_DA_SUCCESS)
1632 sync_agent_free_memory_item_info(item_info, count);
1640 sync_agent_free_memory_item_info(item_info, count);
1642 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
1645 char *da_get_item_item_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *serviceId, int itemTypeId)
1649 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
1650 retvm_if(serviceId == NULL, NULL, "service Id is NULL !!");
1653 char *query = "select item_id from item_tbl where account_id = ? and service_id = ? and data_store_id = ?";
1656 stmt = __query_prepare(daci_handler, query, strlen(query));
1658 _stmt_bind_int(daci_handler, stmt, 1, account_id);
1659 __stmt_bind_text(daci_handler, stmt, 2, serviceId);
1660 _stmt_bind_int(daci_handler, stmt, 3, itemTypeId);
1662 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA)
1663 item_id = _stmt_column_text(stmt, 0);
1665 __stmt_finalize(daci_handler, stmt);
1673 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)
1677 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1678 retvm_if(service_id == NULL, SYNC_AGENT_DA_ERRORS, "service Id is NULL !!");
1680 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
1682 char *query = "select item_id from item_tbl where account_id = ? and service_id = ? and data_store_id = ?";
1684 stmt = __query_prepare(daci_handler, query, strlen(query));
1686 _stmt_bind_int(daci_handler, stmt, 1, account_id);
1687 __stmt_bind_text(daci_handler, stmt, 2, service_id);
1688 _stmt_bind_int(daci_handler, stmt, 3, item_type_id);
1690 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
1691 *item_id = _stmt_column_text(stmt, 0);
1692 ret = SYNC_AGENT_DA_SUCCESS;
1695 __stmt_finalize(daci_handler, stmt);
1703 char *da_get_item_service_id(SYNC_AGENT_DA_HANDLER * daci_handler, char *itemId)
1707 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
1708 retvm_if(itemId == NULL, NULL, "item Id is NULL !!");
1711 char query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = {0,};
1712 char *service_id = 0;
1714 snprintf(query, sizeof(query), "select service_id from item_tbl where item_id = %s", itemId);
1716 //_DEBUG_INFO("query = [%s]", query);
1717 stmt = __query_prepare(daci_handler, query, strlen(query));
1719 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA)
1720 service_id = _stmt_column_text(stmt, 0);
1722 __stmt_finalize(daci_handler, stmt);
1729 sync_agent_da_item_s *da_get_item(SYNC_AGENT_DA_HANDLER * daci_handler, char *itemId)
1733 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
1734 retvm_if(itemId == NULL, NULL, "item Id is NULL !!");
1737 char *query = "select * from item_tbl where item_id = ?";
1738 sync_agent_da_item_s *item = 0;
1740 stmt = __query_prepare(daci_handler, query, strlen(query));
1742 __stmt_bind_text(daci_handler, stmt, 1, itemId);
1744 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
1745 item = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_item_s *, sizeof(sync_agent_da_item_s), 1);
1747 __stmt_finalize(daci_handler, stmt);
1749 _DEBUG_ERROR("memory_allocation failed");
1753 item->item_id = _stmt_column_text(stmt, 0);
1754 item->data_store_id = __stmt_column_int(stmt, 1);
1755 item->account_id = __stmt_column_int(stmt, 2);
1756 item->folder_id = _stmt_column_text(stmt, 3);
1757 item->service_id = _stmt_column_text(stmt, 4);
1758 item->access_name = _stmt_column_text(stmt, 6);
1760 __stmt_finalize(daci_handler, stmt);
1768 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)
1772 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1773 retvm_if(item_id == NULL, SYNC_AGENT_DA_ERRORS, "item Id is NULL !!");
1775 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1777 char query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = {0,};
1779 snprintf(query, sizeof(query), "select * from item_tbl where item_id = %s", item_id);
1781 //_DEBUG_INFO("query = [%s]", query);
1783 stmt = __query_prepare(daci_handler, query, strlen(query));
1785 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
1786 (*sync_agent_item)->item_id = _stmt_column_text(stmt, 0);
1787 (*sync_agent_item)->data_store_id = __stmt_column_int(stmt, 1);
1788 (*sync_agent_item)->account_id = __stmt_column_int(stmt, 2);
1789 (*sync_agent_item)->folder_id = _stmt_column_text(stmt, 3);
1790 (*sync_agent_item)->service_id = _stmt_column_text(stmt, 4);
1791 (*sync_agent_item)->access_name = _stmt_column_text(stmt, 6);
1793 __stmt_finalize(daci_handler, stmt);
1800 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)
1804 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1805 retvm_if(item_id == NULL, SYNC_AGENT_DA_ERRORS, "item Id is NULL !!");
1807 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1809 char query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = {0,};
1811 snprintf(query, sizeof(query), "select * from item_tbl where item_id = %s", item_id);
1813 //_DEBUG_INFO("query = [%s]", query);
1815 stmt = __query_prepare(daci_handler, query, strlen(query));
1817 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
1818 (*sync_agent_item)->data_store_id = __stmt_column_int(stmt, 1);
1820 __stmt_finalize(daci_handler, stmt);
1827 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)
1831 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1832 retvm_if(item_id == NULL, SYNC_AGENT_DA_ERRORS, "item Id is NULL !!");
1834 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1836 char query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = {0,};
1838 snprintf(query, sizeof(query), "select * from item_tbl where item_id = %s", item_id);
1840 //_DEBUG_INFO("query = [%s]", query);
1842 stmt = __query_prepare(daci_handler, query, strlen(query));
1844 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
1845 (*sync_agent_item)->account_id = __stmt_column_int(stmt, 2);
1847 __stmt_finalize(daci_handler, stmt);
1854 sync_agent_da_id_list_s *da_get_all_item_id(SYNC_AGENT_DA_HANDLER * daci_handler)
1858 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
1860 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1861 sync_agent_da_id_list_s *id_list = 0;
1867 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
1869 snprintf(g_daci_query, sizeof(g_daci_query), "select item_id from item_tbl");
1871 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
1873 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
1874 id_list = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_id_list_s *, sizeof(sync_agent_da_id_list_s), 1);
1875 if (id_list == NULL) {
1876 _DEBUG_ERROR("memory_allocation failed");
1880 id_list->count = row_count;
1881 id_list->id = SYNC_AGENT_DA_MEMORY_CALLOC(char **, sizeof(char *), row_count);
1883 for (i = 0; i < row_count; i++) {
1884 id_list->id[i] = SYNC_AGENT_DA_STRDUP(result[index]);
1892 __free_table(result);
1899 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)
1903 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
1904 retvm_if(folderId == NULL, NULL, "folder Id is NULL !!");
1906 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1907 sync_agent_da_id_list_s *id_list = 0;
1908 char *column_str = 0;
1914 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
1916 column_str = _get_column_name(column_name);
1918 snprintf(g_daci_query, sizeof(g_daci_query), "select %s from item_tbl where folder_id = \'%s\'", column_str, folderId);
1920 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
1922 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
1923 id_list = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_id_list_s *, sizeof(sync_agent_da_id_list_s), 1);
1924 if (id_list == NULL) {
1925 _DEBUG_ERROR("memory_allocation failed");
1929 id_list->count = row_count;
1930 id_list->id = SYNC_AGENT_DA_MEMORY_CALLOC(char **, sizeof(char *), row_count);
1932 for (i = 0; i < row_count; i++) {
1933 id_list->id[i] = SYNC_AGENT_DA_STRDUP(result[index]);
1941 __free_table(result);
1948 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)
1952 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1953 retvm_if(folder_id == NULL, SYNC_AGENT_DA_ERRORS, "folder id is NULL !!");
1955 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
1957 char *column_str = 0;
1963 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
1965 column_str = _get_column_name(column_name);
1967 snprintf(g_daci_query, sizeof(g_daci_query), "select %s from item_tbl where folder_id = \'%s\'", column_str, folder_id);
1969 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
1971 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
1972 for (i = 0; i < row_count; i++) {
1974 item_id = SYNC_AGENT_DA_STRDUP(result[index]);
1977 *list = g_list_append(*list, item_id);
1982 __free_table(result);
1989 sync_agent_da_item_s *da_get_item_by_account_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int itemTypeId, int *count)
1993 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
1995 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1996 sync_agent_da_item_s *item = 0;
1998 char *new_table = 0;
2003 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2005 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
2006 if (new_table == NULL)
2009 // 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);
2010 snprintf(g_daci_query, sizeof(g_daci_query),
2011 "select item.item_id, item.data_store_id, item.account_id, item.folder_id, item.service_id, item.access_name " "from item_tbl as item " "left join %s as changelog " "using (item_id) "
2012 "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);
2013 _DEBUG_INFO("g_daci_query = %s", g_daci_query);
2015 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
2018 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
2019 item = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_item_s *, sizeof(sync_agent_da_item_s), row_count);
2021 _DEBUG_ERROR("memory_allocation failed");
2025 for (i = 0; i < row_count; i++) {
2026 item[i].item_id = SYNC_AGENT_DA_STRDUP(result[index]);
2028 item[i].data_store_id = SYNC_AGENT_DA_ATOI(result[index]);
2030 item[i].account_id = SYNC_AGENT_DA_ATOI(result[index]);
2032 item[i].folder_id = SYNC_AGENT_DA_STRDUP(result[index]);
2034 item[i].service_id = SYNC_AGENT_DA_STRDUP(result[index]);
2036 item[i].access_name = SYNC_AGENT_DA_STRDUP(result[index]);
2043 __free_table(result);
2046 SYNC_AGENT_DA_MEMORY_FREE(new_table);
2053 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)
2057 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
2059 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
2060 sync_agent_da_item_s *item;
2062 char *new_table = 0;
2067 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2069 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
2070 if (new_table == NULL)
2073 // 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);
2074 snprintf(g_daci_query, sizeof(g_daci_query),
2075 "select item.item_id, item.data_store_id, item.account_id, item.folder_id, item.service_id, item.access_name " "from item_tbl as item " "left join %s as changelog " "using (item_id) "
2076 "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);
2077 _DEBUG_INFO("g_daci_query = %s", g_daci_query);
2079 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
2081 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
2082 for (i = 0; i < row_count; i++) {
2084 ret = sync_agent_create_item(&item);
2085 if (ret != SYNC_AGENT_DA_SUCCESS) {
2086 _DEBUG_ERROR("sync_agent_create_item() failed !!");
2090 item->item_id = SYNC_AGENT_DA_STRDUP(result[index]);
2092 item->data_store_id = SYNC_AGENT_DA_ATOI(result[index]);
2094 item->account_id = SYNC_AGENT_DA_ATOI(result[index]);
2096 item->folder_id = SYNC_AGENT_DA_STRDUP(result[index]);
2098 item->service_id = SYNC_AGENT_DA_STRDUP(result[index]);
2100 item->access_name = SYNC_AGENT_DA_STRDUP(result[index]);
2103 *list = g_list_append(*list, item);
2109 __free_table(result);
2112 SYNC_AGENT_DA_MEMORY_FREE(new_table);
2119 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)
2123 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
2125 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
2126 sync_agent_da_item_info_s *itemInfo = 0;
2127 char *new_table = 0;
2133 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2135 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
2136 if (new_table == NULL)
2138 snprintf(g_daci_query, sizeof(g_daci_query),
2139 "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,
2140 account_id, itemTypeId);
2142 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
2144 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
2145 itemInfo = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_item_info_s *, sizeof(sync_agent_da_item_info_s), row_count);
2146 if (itemInfo == NULL) {
2147 _DEBUG_ERROR("memory_allocation failed");
2150 for (i = 0; i < row_count; i++) {
2151 itemInfo[i].itemId = SYNC_AGENT_DA_STRDUP(result[index]);
2153 itemInfo[i].itemTypeId = SYNC_AGENT_DA_ATOI(result[index]);
2155 itemInfo[i].serviceId = SYNC_AGENT_DA_STRDUP(result[index]);
2157 itemInfo[i].operationId = SYNC_AGENT_DA_ATOI(result[index]);
2159 itemInfo[i].syncStatus = SYNC_AGENT_DA_STRDUP(result[index]);
2167 __free_table(result);
2170 SYNC_AGENT_DA_MEMORY_FREE(new_table);
2177 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)
2181 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
2183 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
2184 sync_agent_da_item_info_s *itemInfo = 0;
2185 char *new_table = 0;
2191 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2193 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
2194 if (new_table == NULL)
2196 snprintf(g_daci_query, sizeof(g_daci_query),
2197 "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) "
2198 "where item.account_id = %d and item.data_store_id = %d and changelog.operation_id = %d", new_table, account_id, itemTypeId, operationId);
2200 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
2202 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
2203 itemInfo = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_item_info_s *, sizeof(sync_agent_da_item_info_s), row_count);
2204 if (itemInfo == NULL) {
2205 _DEBUG_ERROR("memory_allocation failed");
2208 for (i = 0; i < row_count; i++) {
2209 itemInfo[i].itemId = SYNC_AGENT_DA_STRDUP(result[index]);
2211 itemInfo[i].itemTypeId = SYNC_AGENT_DA_ATOI(result[index]);
2213 itemInfo[i].serviceId = SYNC_AGENT_DA_STRDUP(result[index]);
2215 itemInfo[i].operationId = SYNC_AGENT_DA_ATOI(result[index]);
2217 itemInfo[i].syncStatus = SYNC_AGENT_DA_STRDUP(result[index]);
2225 __free_table(result);
2228 SYNC_AGENT_DA_MEMORY_FREE(new_table);
2235 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)
2239 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
2241 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
2242 char *new_table = 0;
2248 char *item_id = NULL;
2249 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2251 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
2252 if (new_table == NULL) {
2253 _DEBUG_ERROR("__replace_table_name() failed !!");
2254 return SYNC_AGENT_DA_ERRORS;
2257 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,
2258 item_type_id, operation_id);
2260 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
2261 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
2262 for (i = 0; i < row_count; i++) {
2264 item_id = SYNC_AGENT_DA_STRDUP(result[index]);
2267 *list = g_list_append(*list, item_id);
2270 _DEBUG_INFO("no data !!");
2274 __free_table(result);
2277 SYNC_AGENT_DA_MEMORY_FREE(new_table);
2284 sync_agent_da_item_s *da_get_item_mapping_service_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *itemId, int *count)
2288 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
2289 retvm_if(itemId == NULL, NULL, "item Id is NULL !!");
2292 sync_agent_da_item_s *item = 0;
2295 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2297 snprintf(g_daci_query, sizeof(g_daci_query),
2298 "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\') "
2299 "and (account_id != %d and item_id != \'%s\')", account_id, itemId, account_id, itemId, account_id, itemId);
2301 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
2302 *count = data_count;
2304 if (data_count != 0) {
2305 /* query initialize */
2306 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
2308 item = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_item_s *, sizeof(sync_agent_da_item_s), data_count);
2310 _DEBUG_ERROR("memory_allocation failed");
2314 snprintf(g_daci_query, sizeof(g_daci_query),
2315 "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\') "
2316 "and (account_id != %d and item_id != \'%s\')", account_id, itemId, account_id, itemId, account_id, itemId);
2318 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
2320 for (i = 0; i < data_count; i++) {
2321 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA)
2324 item[i].item_id = _stmt_column_text(stmt, 0);
2325 item[i].data_store_id = __stmt_column_int(stmt, 1);
2326 item[i].account_id = __stmt_column_int(stmt, 2);
2327 item[i].folder_id = _stmt_column_text(stmt, 3);
2328 item[i].service_id = _stmt_column_text(stmt, 4);
2329 item[i].access_name = _stmt_column_text(stmt, 6);
2332 __stmt_finalize(daci_handler, stmt);
2341 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)
2345 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
2346 retvm_if(item_id == NULL, SYNC_AGENT_DA_ERRORS, "item id is NULL !!");
2348 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
2350 sync_agent_da_item_s *item;
2353 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2355 snprintf(g_daci_query, sizeof(g_daci_query),
2356 "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\') "
2357 "and (account_id != %d and item_id != \'%s\')", account_id, item_id, account_id, item_id, account_id, item_id);
2359 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
2361 if (data_count != 0) {
2362 /* query initialize */
2363 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
2365 snprintf(g_daci_query, sizeof(g_daci_query),
2366 "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\') "
2367 "and (account_id != %d and item_id != \'%s\')", account_id, item_id, account_id, item_id, account_id, item_id);
2369 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
2371 for (i = 0; i < data_count; i++) {
2372 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA)
2376 ret = sync_agent_create_item(&item);
2377 if (ret != SYNC_AGENT_DA_SUCCESS) {
2378 _DEBUG_ERROR("sync_agent_create_item() failed !!");
2382 item->item_id = _stmt_column_text(stmt, 0);
2383 item->data_store_id = __stmt_column_int(stmt, 1);
2384 item->account_id = __stmt_column_int(stmt, 2);
2385 item->folder_id = _stmt_column_text(stmt, 3);
2386 item->service_id = _stmt_column_text(stmt, 4);
2387 item->access_name = _stmt_column_text(stmt, 6);
2389 *list = g_list_append(*list, item);
2392 __stmt_finalize(daci_handler, stmt);
2395 _DEBUG_ERROR("no data !!");
2396 ret = SYNC_AGENT_DA_SUCCESS;
2404 sync_agent_da_id_list_s *da_get_item_id_list_by_datastore_id(SYNC_AGENT_DA_HANDLER * daci_handler, int data_store_id)
2408 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
2411 sync_agent_da_id_list_s *item_id_list = 0;
2414 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2416 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from item_tbl where data_store_id = %d", data_store_id);
2418 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
2420 if (data_count != 0) {
2421 /* query initialize */
2422 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
2424 item_id_list = (sync_agent_da_id_list_s *) calloc(1, sizeof(sync_agent_da_id_list_s));
2425 if (item_id_list == NULL) {
2426 _DEBUG_ERROR("CALLOC failed !!!");
2429 item_id_list->id = (char **)calloc(data_count, sizeof(char *));
2430 if (item_id_list->id == NULL) {
2432 if (item_id_list != NULL)
2435 _DEBUG_ERROR("CALLOC failed !!!");
2438 item_id_list->count = data_count;
2440 snprintf(g_daci_query, sizeof(g_daci_query), "select item_id from item_tbl where data_store_id = %d", data_store_id);
2442 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
2444 for (i = 0; i < data_count; i++) {
2445 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA) {
2449 item_id_list->id[i] = _stmt_column_text(stmt, 0);
2452 __stmt_finalize(daci_handler, stmt);
2458 return item_id_list;
2461 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)
2465 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
2471 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2473 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from item_tbl where data_store_id = %d", data_store_id);
2475 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
2477 if (data_count != 0) {
2478 /* query initialize */
2479 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
2481 snprintf(g_daci_query, sizeof(g_daci_query), "select item_id from item_tbl where data_store_id = %d", data_store_id);
2483 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
2485 for (i = 0; i < data_count; i++) {
2486 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA) {
2491 item_id = _stmt_column_text(stmt, 0);
2493 *list = g_list_append(*list, item_id);
2496 __stmt_finalize(daci_handler, stmt);
2502 return SYNC_AGENT_DA_SUCCESS;
2505 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)
2509 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
2512 sync_agent_da_id_list_s *item_id_list = 0;
2515 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2517 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);
2519 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
2521 if (data_count != 0) {
2522 /* query initialize */
2523 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
2525 item_id_list = (sync_agent_da_id_list_s *) calloc(1, sizeof(sync_agent_da_id_list_s));
2526 if (item_id_list == NULL) {
2527 _DEBUG_ERROR("CALLOC failed !!!");
2530 item_id_list->id = (char **)calloc(data_count, sizeof(char *));
2531 if (item_id_list->id == NULL) {
2533 if (item_id_list != NULL)
2536 _DEBUG_ERROR("CALLOC failed !!!");
2539 item_id_list->count = data_count;
2541 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);
2543 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
2545 for (i = 0; i < data_count; i++) {
2546 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA) {
2550 item_id_list->id[i] = _stmt_column_text(stmt, 0);
2553 __stmt_finalize(daci_handler, stmt);
2559 return item_id_list;
2562 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)
2566 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
2572 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2574 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);
2576 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
2578 if (data_count != 0) {
2579 /* query initialize */
2580 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
2582 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);
2584 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
2586 for (i = 0; i < data_count; i++) {
2587 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA) {
2592 item_id = _stmt_column_text(stmt, 0);
2594 *list = g_list_append(*list, item_id);
2597 __stmt_finalize(daci_handler, stmt);
2603 return SYNC_AGENT_DA_SUCCESS;
2606 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)
2610 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
2612 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
2613 sync_agent_da_id_list_s *id_list = 0;
2614 char *new_table = 0;
2620 char query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2622 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
2623 if (new_table == NULL)
2626 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,
2627 data_store_id, operation_id);
2629 ret = _get_table(daci_handler, query, &result, &row_count, &col_count);
2630 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
2631 id_list = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_id_list_s *, sizeof(sync_agent_da_id_list_s), 1);
2633 if (id_list == NULL) {
2634 _DEBUG_ERROR("memory_allocation failed");
2638 id_list->count = row_count;
2639 id_list->id = SYNC_AGENT_DA_MEMORY_CALLOC(char **, sizeof(char *), row_count);
2641 for (i = 0; i < row_count; i++) {
2642 id_list->id[i] = SYNC_AGENT_DA_STRDUP(result[index]);
2648 if (result != NULL) {
2649 __free_table(result);
2652 SYNC_AGENT_DA_MEMORY_FREE(new_table);
2659 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)
2663 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
2665 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
2667 char *new_table = 0;
2673 char query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2675 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
2676 if (new_table == NULL)
2679 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,
2680 data_store_id, operation_id);
2682 ret = _get_table(daci_handler, query, &result, &row_count, &col_count);
2683 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
2684 for (i = 0; i < row_count; i++) {
2686 item_id = SYNC_AGENT_DA_STRDUP(result[index]);
2689 *list = g_list_append(*list, item_id);
2693 if (result != NULL) {
2694 __free_table(result);
2697 SYNC_AGENT_DA_MEMORY_FREE(new_table);
2704 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)
2708 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
2709 retvm_if(folder_id == NULL, NULL, "folder id is NULL !!");
2711 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
2712 sync_agent_da_id_list_s *id_list = 0;
2713 char *new_table = 0;
2719 char query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2721 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
2722 if (new_table == NULL)
2725 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",
2726 new_table, account_id, data_store_id, folder_id, operation_id);
2727 _DEBUG_INFO("request quary is [%s]\n", query);
2729 ret = _get_table(daci_handler, query, &result, &row_count, &col_count);
2730 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
2731 id_list = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_id_list_s *, sizeof(sync_agent_da_id_list_s), 1);
2733 if (id_list == NULL) {
2734 _DEBUG_ERROR("memory_allocation failed");
2738 id_list->count = row_count;
2739 id_list->id = SYNC_AGENT_DA_MEMORY_CALLOC(char **, sizeof(char *), row_count);
2741 for (i = 0; i < row_count; i++) {
2742 id_list->id[i] = SYNC_AGENT_DA_STRDUP(result[index]);
2748 if (result != NULL) {
2749 __free_table(result);
2752 SYNC_AGENT_DA_MEMORY_FREE(new_table);
2759 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)
2763 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
2764 retvm_if(folder_id == NULL, SYNC_AGENT_DA_ERRORS, "folder id is NULL !!");
2766 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
2768 char *new_table = 0;
2774 char query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2776 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
2777 if (new_table == NULL)
2780 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",
2781 new_table, account_id, data_store_id, folder_id, operation_id);
2782 _DEBUG_INFO("request quary is [%s]\n", query);
2784 ret = _get_table(daci_handler, query, &result, &row_count, &col_count);
2785 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
2786 for (i = 0; i < row_count; i++) {
2788 item_id = SYNC_AGENT_DA_STRDUP(result[index]);
2791 *list = g_list_append(*list, item_id);
2795 if (result != NULL) {
2796 __free_table(result);
2799 SYNC_AGENT_DA_MEMORY_FREE(new_table);
2806 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)
2810 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
2811 retvm_if(folder_id == NULL, SYNC_AGENT_DA_ERRORS, "folder id is NULL !!");
2813 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
2815 char *new_table = 0;
2821 char query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2823 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
2824 if (new_table == NULL)
2827 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);
2828 _DEBUG_INFO("request quary is [%s]\n", query);
2830 ret = _get_table(daci_handler, query, &result, &row_count, &col_count);
2831 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
2832 for (i = 0; i < row_count; i++) {
2834 item_id = SYNC_AGENT_DA_STRDUP(result[index]);
2836 *list = g_list_append(*list, item_id);
2840 if (result != NULL) {
2841 __free_table(result);
2844 SYNC_AGENT_DA_MEMORY_FREE(new_table);
2849 int da_is_exist_item(SYNC_AGENT_DA_HANDLER * daci_handler, char *itemId)
2853 retvm_if(daci_handler == NULL, 0, "SYNC_AGENT_DA_HANDLER is NULL !!");
2854 retvm_if(itemId == NULL, 0, "item Id is NULL !!");
2858 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2860 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from item_tbl where item_id = \'%s\'", itemId);
2862 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
2864 if (data_count == 0) {
2867 _DEBUG_ERROR("itemId [%s] already exist number of [%d]", itemId, data_count);
2875 sync_agent_da_return_e da_add_config(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_config_s * config)
2879 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
2880 retvm_if(config == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_config_s is NULL !!");
2883 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
2884 char *query = "insert into config_tbl (config_id, key, value, type, access_name) values (?, ?, ?, ?, ?)";
2887 ret = da_is_exist_config(daci_handler, config->config_id, config->key, &exist);
2888 if (ret != SYNC_AGENT_DA_SUCCESS) {
2889 _DEBUG_ERROR("da_is_exist_config is failed");
2894 return SYNC_AGENT_DA_ERR_PRIMARY_KEY_NOT_UNIQUE;
2896 stmt = __query_prepare(daci_handler, query, strlen(query));
2898 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
2900 _stmt_bind_int(daci_handler, stmt, 1, config->config_id);
2901 __stmt_bind_text(daci_handler, stmt, 2, config->key);
2902 __stmt_bind_text(daci_handler, stmt, 3, config->value);
2903 __stmt_bind_text(daci_handler, stmt, 4, config->type);
2904 __stmt_bind_text(daci_handler, stmt, 5, config->access_name);
2906 ret = __stmt_write_step(daci_handler, stmt);
2907 __stmt_finalize(daci_handler, stmt);
2914 sync_agent_da_return_e da_add_config_list(SYNC_AGENT_DA_HANDLER * daci_handler, GList * config_list)
2918 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
2919 retvm_if(config_list == NULL, SYNC_AGENT_DA_ERRORS, "config_list is NULL !!");
2922 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
2925 sync_agent_da_config_s *config = NULL;
2927 char *query = "insert into config_tbl (config_id, key, value, type, access_name) values (?, ?, ?, ?, ?)";
2930 for (iter = config_list; iter != NULL; iter = g_list_next(iter)) {
2931 config = (sync_agent_da_config_s *) iter->data;
2932 ret = da_is_exist_config(daci_handler, config->config_id, config->key, &exist);
2933 if (ret != SYNC_AGENT_DA_SUCCESS) {
2934 _DEBUG_ERROR("da_is_exist_config is failed");
2939 return SYNC_AGENT_DA_ERR_PRIMARY_KEY_NOT_UNIQUE;
2942 stmt = __query_prepare(daci_handler, query, strlen(query));
2944 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
2946 for (iter = config_list; iter != NULL; iter = g_list_next(iter)) {
2947 config = (sync_agent_da_config_s *) iter->data;
2949 _stmt_bind_int(daci_handler, stmt, 1, config->config_id);
2950 __stmt_bind_text(daci_handler, stmt, 2, config->key);
2951 __stmt_bind_text(daci_handler, stmt, 3, config->value);
2952 __stmt_bind_text(daci_handler, stmt, 4, config->type);
2953 __stmt_bind_text(daci_handler, stmt, 5, config->access_name);
2955 ret = __stmt_write_step(daci_handler, stmt);
2956 if ((ret != SYNC_AGENT_DA_ERR_MORE_DATA) && (ret != SYNC_AGENT_DA_SUCCESS)) {
2957 __stmt_finalize(daci_handler, stmt);
2958 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
2960 _stmt_reset(daci_handler, stmt);
2962 __stmt_finalize(daci_handler, stmt);
2969 sync_agent_da_return_e da_delete_config_by_key(SYNC_AGENT_DA_HANDLER * daci_handler, int configId, char *key)
2973 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
2974 retvm_if(key == NULL, SYNC_AGENT_DA_ERRORS, "key is NULL !!");
2976 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
2978 char *query = "delete from config_tbl where config_id = ? and key = ?";
2980 stmt = __query_prepare(daci_handler, query, strlen(query));
2982 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
2984 _stmt_bind_int(daci_handler, stmt, 1, configId);
2985 __stmt_bind_text(daci_handler, stmt, 2, key);
2987 ret = __stmt_write_step(daci_handler, stmt);
2988 __stmt_finalize(daci_handler, stmt);
2995 sync_agent_da_return_e da_get_config_by_account_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, GList ** list)
2999 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3001 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3003 sync_agent_da_config_s *config = 0;
3006 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3007 GList *config_list = NULL;
3009 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from config_tbl where config_id = %d", account_id);
3011 data_Count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
3013 if (data_Count != 0) {
3014 /* query initialize */
3015 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
3017 snprintf(g_daci_query, sizeof(g_daci_query), "select * from config_tbl where config_id = %d", account_id);
3019 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
3021 for (i = 0; i < data_Count; i++) {
3022 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA)
3025 config = (sync_agent_da_config_s *) calloc(1, sizeof(sync_agent_da_config_s));
3026 if (config == NULL) {
3027 _DEBUG_ERROR("memory_allocation failed");
3028 ret = SYNC_AGENT_DA_ERR_MEMORY_FULL;
3032 config->config_id = __stmt_column_int(stmt, 0);
3033 config->key = _stmt_column_text(stmt, 1);
3034 config->value = _stmt_column_text(stmt, 2);
3035 config->type = _stmt_column_text(stmt, 3);
3036 config->access_name = _stmt_column_text(stmt, 5);
3038 config_list = g_list_append(config_list, config);
3040 __stmt_finalize(daci_handler, stmt);
3044 *list = config_list;
3051 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)
3055 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3056 retvm_if(key == NULL, SYNC_AGENT_DA_ERRORS, "key is NULL !!");
3058 int ret = SYNC_AGENT_DA_SUCCESS;
3060 char *query = "select key, value, type, access_name from config_tbl where config_id = ? and key =?";
3062 stmt = __query_prepare(daci_handler, query, strlen(query));
3064 return SYNC_AGENT_DA_ERRORS;
3067 _stmt_bind_int(daci_handler, stmt, 1, config_id);
3068 __stmt_bind_text(daci_handler, stmt, 2, key);
3070 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
3071 (*config)->config_id = config_id;
3072 (*config)->key = _stmt_column_text(stmt, 0);
3073 (*config)->value = _stmt_column_text(stmt, 1);
3074 (*config)->type = _stmt_column_text(stmt, 2);
3075 (*config)->access_name = _stmt_column_text(stmt, 3);
3077 ret = SYNC_AGENT_DA_ERR_NO_DATA;
3080 __stmt_finalize(daci_handler, stmt);
3087 sync_agent_da_return_e da_is_exist_config(SYNC_AGENT_DA_HANDLER * daci_handler, int config_id, char *key, int *exist)
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;
3097 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3099 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from config_tbl where config_id = %d and key = \'%s\'", config_id, key);
3101 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
3103 if (data_count == 0)
3113 sync_agent_da_return_e da_update_config(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_config_s * config)
3117 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3118 retvm_if(config == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_config_s is NULL !!");
3120 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3123 ret = da_is_exist_config(daci_handler, config->config_id, config->key, &exist);
3124 if (ret != SYNC_AGENT_DA_SUCCESS) {
3125 _DEBUG_ERROR("da_is_exist_config is failed");
3130 ret = da_set_config_value(daci_handler, config);
3132 ret = da_add_config(daci_handler, config);
3134 if (ret != SYNC_AGENT_DA_SUCCESS)
3135 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3142 sync_agent_da_return_e da_set_config_value(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_config_s * config)
3146 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3147 retvm_if(config == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_config_s is NULL !!");
3149 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3152 char *query = "update config_tbl set value = ?, type = ?, last_update = current_timestamp, access_name = ? " "where config_id = ? and key = ?";
3154 stmt = __query_prepare(daci_handler, query, strlen(query));
3156 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3158 __stmt_bind_text(daci_handler, stmt, 1, config->value);
3159 __stmt_bind_text(daci_handler, stmt, 2, config->type);
3160 __stmt_bind_text(daci_handler, stmt, 3, config->access_name);
3161 _stmt_bind_int(daci_handler, stmt, 4, config->config_id);
3162 __stmt_bind_text(daci_handler, stmt, 5, config->key);
3164 ret = _stmt_read_step(daci_handler, stmt);
3165 __stmt_finalize(daci_handler, stmt);
3172 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)
3176 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3177 retvm_if(itemChangelog == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_item_changelog_s is NULL !!");
3179 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3182 char *new_table = 0;
3183 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3185 for (i = 0; i < count; i++) {
3186 if (da_is_exist_item_changelog(daci_handler, account_id, itemChangelog[i].item_id) == 1)
3187 return SYNC_AGENT_DA_ERR_PRIMARY_KEY_NOT_UNIQUE;
3190 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3191 if (new_table == NULL)
3192 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3194 snprintf(g_daci_query, sizeof(g_daci_query), "insert into %s (item_id, operation_id, status, access_name) values (?, ?, ?, ?)", new_table);
3196 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
3198 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3199 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3202 for (i = 0; i < count; i++) {
3203 __stmt_bind_text(daci_handler, stmt, 1, itemChangelog[i].item_id);
3204 _stmt_bind_int(daci_handler, stmt, 2, itemChangelog[i].operation_id);
3205 __stmt_bind_text(daci_handler, stmt, 3, ((itemChangelog[i].status == 0) ? "SYNC_REQUIRED" : itemChangelog[i].status));
3206 __stmt_bind_text(daci_handler, stmt, 4, itemChangelog[i].access_name);
3208 ret = __stmt_write_step(daci_handler, stmt);
3209 if ((ret != SYNC_AGENT_DA_ERR_MORE_DATA) && (ret != SYNC_AGENT_DA_SUCCESS)) {
3210 __stmt_finalize(daci_handler, stmt);
3211 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3212 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3214 _stmt_reset(daci_handler, stmt);
3217 ret = __stmt_finalize(daci_handler, stmt);
3220 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3227 sync_agent_da_return_e da_delete_item_changelog_by_item_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *itemId)
3231 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3232 retvm_if(itemId == NULL, SYNC_AGENT_DA_ERRORS, "item Id is NULL !!");
3234 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3236 char *new_table = 0;
3237 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3239 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3240 if (new_table == NULL)
3241 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3243 snprintf(g_daci_query, sizeof(g_daci_query), "delete from %s where item_id = ?", new_table);
3245 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
3247 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3248 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3251 __stmt_bind_text(daci_handler, stmt, 1, itemId);
3253 ret = __stmt_write_step(daci_handler, stmt);
3254 __stmt_finalize(daci_handler, stmt);
3257 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3264 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)
3268 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3269 retvm_if(itemIdList == NULL, SYNC_AGENT_DA_ERRORS, "item Id List is NULL !!");
3272 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3273 char *new_table = 0;
3275 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3277 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3278 if (new_table == NULL)
3279 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3281 snprintf(g_daci_query, sizeof(g_daci_query), "delete from %s where item_id = ?", new_table);
3283 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
3285 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3286 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3289 for (i = 0; i < count; i++) {
3290 __stmt_bind_text(daci_handler, stmt, 1, itemIdList[i]);
3292 ret = __stmt_write_step(daci_handler, stmt);
3294 if (ret != SYNC_AGENT_DA_SUCCESS) {
3295 __stmt_finalize(daci_handler, stmt);
3296 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3297 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3299 _stmt_reset(daci_handler, stmt);
3301 __stmt_finalize(daci_handler, stmt);
3304 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3311 sync_agent_da_return_e da_delete_item_changelog_by_item_type_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int itemTypeId)
3315 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3317 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3319 char *new_table = 0;
3320 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3322 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3323 if (new_table == NULL) {
3324 ret = SYNC_AGENT_DA_ERR_QUERY_FAILED;
3328 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,
3329 new_table, account_id, itemTypeId);
3331 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
3333 ret = SYNC_AGENT_DA_ERR_QUERY_FAILED;
3337 ret = __stmt_write_step(daci_handler, stmt);
3338 if (ret != SYNC_AGENT_DA_SUCCESS) {
3339 ret = SYNC_AGENT_DA_ERR_QUERY_FAILED;
3346 __stmt_finalize(daci_handler, stmt);
3349 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3356 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)
3360 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3361 retvm_if(itemChangelog == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_item_changelog_s is NULL !!");
3363 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3365 char *new_table = 0;
3366 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3368 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3369 if (new_table == NULL)
3370 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3372 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);
3374 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
3376 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3377 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3380 _stmt_bind_int(daci_handler, stmt, 1, itemChangelog->operation_id);
3381 __stmt_bind_text(daci_handler, stmt, 2, itemChangelog->status);
3382 __stmt_bind_text(daci_handler, stmt, 3, itemChangelog->access_name);
3383 __stmt_bind_text(daci_handler, stmt, 4, itemChangelog->item_id);
3385 ret = __stmt_write_step(daci_handler, stmt);
3386 __stmt_finalize(daci_handler, stmt);
3389 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3396 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)
3400 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3401 retvm_if(itemChangelog == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_item_changelog_s is NULL !!");
3403 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3405 char *new_table = 0;
3406 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3408 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3409 if (new_table == NULL)
3410 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3412 snprintf(g_daci_query, sizeof(g_daci_query), "update %s set status = ?, last_update = current_timestamp, access_name = ? where item_id = ?", new_table);
3414 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
3416 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3417 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3420 __stmt_bind_text(daci_handler, stmt, 1, itemChangelog->status);
3421 __stmt_bind_text(daci_handler, stmt, 2, itemChangelog->access_name);
3422 __stmt_bind_text(daci_handler, stmt, 3, itemChangelog->item_id);
3424 ret = __stmt_write_step(daci_handler, stmt);
3425 __stmt_finalize(daci_handler, stmt);
3428 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3435 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)
3439 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3440 retvm_if(itemTypeIdList == NULL, SYNC_AGENT_DA_ERRORS, "item Type Id List is NULL !!");
3442 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3444 char *new_table = 0;
3448 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3450 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3451 if (new_table == NULL)
3452 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3454 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,
3457 for (i = 0; i < folderIdCount; i++) {
3458 len = g_strlcat(g_daci_query, "item.folder_id = \'", SYNC_AGENT_DA_MAX_QUERY_LENGTH);
3459 len = g_strlcat(g_daci_query, folderIdList[i], SYNC_AGENT_DA_MAX_QUERY_LENGTH);
3461 if (i < folderIdCount - 1) {
3462 len = g_strlcat(g_daci_query, "\' or ", SYNC_AGENT_DA_MAX_QUERY_LENGTH);
3464 len = g_strlcat(g_daci_query, "\') and (", SYNC_AGENT_DA_MAX_QUERY_LENGTH);
3467 if (len >= SYNC_AGENT_DA_MAX_QUERY_LENGTH) {
3468 _DEBUG_ERROR("g_daci_query buffer overflow !!");
3469 /* todo : exception handling */
3473 for (i = 0; i < itemTypeIdCount; i++) {
3474 memset(temp_str, 0x00, sizeof(temp_str));
3475 snprintf(temp_str, sizeof(temp_str), "%d", itemTypeIdList[i]);
3477 len = g_strlcat(g_daci_query, "item.data_store_id = ", SYNC_AGENT_DA_MAX_QUERY_LENGTH);
3478 len = g_strlcat(g_daci_query, temp_str, SYNC_AGENT_DA_MAX_QUERY_LENGTH);
3480 if (i < itemTypeIdCount - 1) {
3481 len = g_strlcat(g_daci_query, " or ", SYNC_AGENT_DA_MAX_QUERY_LENGTH);
3483 len = g_strlcat(g_daci_query, ") )", SYNC_AGENT_DA_MAX_QUERY_LENGTH);
3486 if (len >= SYNC_AGENT_DA_MAX_QUERY_LENGTH) {
3487 _DEBUG_ERROR("g_daci_query buffer overflow !!");
3488 /* todo : exception handling */
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 ret = __stmt_write_step(daci_handler, stmt);
3499 __stmt_finalize(daci_handler, stmt);
3502 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3509 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)
3513 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3515 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERR_QUERY_FAILED;
3517 char *new_table = 0;
3518 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3520 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3521 if (new_table == NULL)
3524 snprintf(g_daci_query, sizeof(g_daci_query), "select * from %s where item_id = \'%s\'", new_table, itemChangelog->item_id);
3526 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
3528 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
3529 itemChangelog->operation_id = __stmt_column_int(stmt, 1);
3530 itemChangelog->status = _stmt_column_text(stmt, 2);
3531 itemChangelog->access_name = _stmt_column_text(stmt, 4);
3532 ret = SYNC_AGENT_DA_SUCCESS;
3533 } else if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_SUCCESS) {
3534 ret = SYNC_AGENT_DA_ERR_NO_DATA;
3536 __stmt_finalize(daci_handler, stmt);
3540 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3542 _DEBUG_INFO("[%s] End !\n", __func__);
3549 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)
3553 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3554 retvm_if(item_id == NULL, SYNC_AGENT_DA_ERRORS, "item id is NULL !!");
3556 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERR_QUERY_FAILED;
3558 char *new_table = 0;
3559 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3561 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3562 if (new_table == NULL)
3565 snprintf(g_daci_query, sizeof(g_daci_query), "select * from %s where item_id = \'%s\'", new_table, item_id);
3567 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
3569 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
3570 (*sync_agent_changelog)->item_id = SYNC_AGENT_DA_STRDUP(item_id);
3571 (*sync_agent_changelog)->operation_id = __stmt_column_int(stmt, 1);
3572 (*sync_agent_changelog)->status = _stmt_column_text(stmt, 2);
3573 (*sync_agent_changelog)->access_name = _stmt_column_text(stmt, 4);
3574 ret = SYNC_AGENT_DA_SUCCESS;
3575 } else if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_SUCCESS) {
3576 ret = SYNC_AGENT_DA_ERR_NO_DATA;
3578 __stmt_finalize(daci_handler, stmt);
3582 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3589 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)
3593 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3595 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
3596 sync_agent_da_item_changelog_s *item_changelog;
3597 char *new_table = 0;
3603 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3605 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3606 if (new_table == NULL)
3608 // 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);
3609 snprintf(g_daci_query, sizeof(g_daci_query),
3610 "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,
3613 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
3614 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
3615 for (i = 0; i < row_count; i++) {
3616 item_changelog = NULL;
3617 ret = sync_agent_create_changelog(&item_changelog);
3618 if (ret != SYNC_AGENT_DA_SUCCESS) {
3619 _DEBUG_ERROR("sync_agent_create_changelog() failed !!");
3623 item_changelog->item_id = SYNC_AGENT_DA_STRDUP(result[index]);
3625 item_changelog->operation_id = SYNC_AGENT_DA_ATOI(result[index]);
3627 item_changelog->status = SYNC_AGENT_DA_STRDUP(result[index]);
3629 item_changelog->access_name = SYNC_AGENT_DA_STRDUP(result[index]);
3632 *list = g_list_append(*list, item_changelog);
3639 __free_table(result);
3642 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3649 sync_agent_da_item_changelog_s *get_itemChangelogByOperationId(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int operationId, int *count)
3653 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
3656 sync_agent_da_item_changelog_s *item_changelog = 0;
3657 char *new_table = 0;
3660 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3662 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3663 if (new_table == NULL)
3664 return item_changelog;
3666 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from %s where operation_id = %d", new_table, operationId);
3668 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
3669 *count = data_count;
3671 if (data_count != 0) {
3672 /* query initialize */
3673 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
3675 item_changelog = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_item_changelog_s *, sizeof(sync_agent_da_item_changelog_s), data_count);
3676 if (item_changelog == NULL) {
3677 _DEBUG_ERROR("memory_allocation failed");
3680 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3682 return item_changelog;
3685 snprintf(g_daci_query, sizeof(g_daci_query), "select * from %s where operation_id = %d", new_table, operationId);
3687 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
3689 for (i = 0; i < data_count; i++) {
3690 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA)
3693 item_changelog[i].item_id = _stmt_column_text(stmt, 0);
3694 item_changelog[i].operation_id = __stmt_column_int(stmt, 1);
3695 item_changelog[i].status = _stmt_column_text(stmt, 2);
3696 item_changelog[i].access_name = _stmt_column_text(stmt, 4);
3698 __stmt_finalize(daci_handler, stmt);
3703 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3707 return item_changelog;
3710 int da_is_exist_item_changelog(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *itemId)
3714 retvm_if(daci_handler == NULL, 0, "SYNC_AGENT_DA_HANDLER is NULL !!");
3715 retvm_if(itemId == NULL, 0, "item Id is NULL !!");
3718 char *new_table = 0;
3720 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3722 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3723 if (new_table == NULL)
3726 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from %s where item_id = \'%s\'", new_table, itemId);
3728 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
3730 if (data_count == 0)
3734 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3741 sync_agent_da_return_e da_add_last_anchor(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_last_anchor_s * last_anchor)
3745 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3746 retvm_if(last_anchor == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_last_anchor_s is NULL !!");
3748 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3752 if (da_is_exist_last_anchor(daci_handler, last_anchor->account_id, last_anchor->data_store_id) == 1)
3753 return SYNC_AGENT_DA_ERR_PRIMARY_KEY_NOT_UNIQUE;
3755 query = "insert into last_anchor_tbl (account_id, data_store_id, last_anchor_server, last_anchor_client, access_name) values (?, ?, ?, ?, ?)";
3757 stmt = __query_prepare(daci_handler, query, strlen(query));
3759 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3761 _stmt_bind_int(daci_handler, stmt, 1, last_anchor->account_id);
3762 _stmt_bind_int(daci_handler, stmt, 2, last_anchor->data_store_id);
3763 __stmt_bind_text(daci_handler, stmt, 3, last_anchor->last_anchor_server);
3764 __stmt_bind_text(daci_handler, stmt, 4, last_anchor->last_anchor_client);
3765 __stmt_bind_text(daci_handler, stmt, 5, last_anchor->access_name);
3767 ret = __stmt_write_step(daci_handler, stmt);
3768 __stmt_finalize(daci_handler, stmt);
3775 sync_agent_da_return_e da_delete_last_anchor_by_account_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id)
3779 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3781 sync_agent_da_return_e ret = _delete_account(daci_handler, SYNC_AGENT_DA_TABLE_NAME_LAST_ANCHOR, account_id);
3782 if (ret != SYNC_AGENT_DA_SUCCESS)
3783 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3790 sync_agent_da_return_e da_delete_last_anchor_by_item_type_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int itemTypeId)
3794 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3796 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3798 char *query = "delete from last_anchor_tbl where account_id = ? and data_store_id = ?";
3800 stmt = __query_prepare(daci_handler, query, strlen(query));
3802 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3804 _stmt_bind_int(daci_handler, stmt, 1, account_id);
3805 _stmt_bind_int(daci_handler, stmt, 2, itemTypeId);
3807 ret = __stmt_write_step(daci_handler, stmt);
3808 __stmt_finalize(daci_handler, stmt);
3815 sync_agent_da_return_e da_set_last_anchor(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_last_anchor_s * last_anchor)
3819 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3820 retvm_if(last_anchor == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_last_anchor_s is NULL !!");
3822 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3824 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 = ?";
3826 stmt = __query_prepare(daci_handler, query, strlen(query));
3828 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3830 __stmt_bind_text(daci_handler, stmt, 1, last_anchor->last_anchor_server);
3831 __stmt_bind_text(daci_handler, stmt, 2, last_anchor->last_anchor_client);
3832 __stmt_bind_text(daci_handler, stmt, 3, last_anchor->access_name);
3833 _stmt_bind_int(daci_handler, stmt, 4, last_anchor->account_id);
3834 _stmt_bind_int(daci_handler, stmt, 5, last_anchor->data_store_id);
3836 ret = __stmt_write_step(daci_handler, stmt);
3837 __stmt_finalize(daci_handler, stmt);
3844 sync_agent_da_last_anchor_s *da_get_last_anchor_by_account_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int *count)
3848 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
3850 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3851 sync_agent_da_last_anchor_s *last_anchor = 0;
3857 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3859 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);
3861 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
3864 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
3865 last_anchor = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_last_anchor_s *, sizeof(sync_agent_da_last_anchor_s), row_count);
3866 if (last_anchor == NULL) {
3867 _DEBUG_ERROR("memory_allocation failed");
3871 for (i = 0; i < row_count; i++) {
3872 last_anchor[i].account_id = SYNC_AGENT_DA_ATOI(result[index]);
3874 last_anchor[i].data_store_id = SYNC_AGENT_DA_ATOI(result[index]);
3876 last_anchor[i].last_anchor_server = SYNC_AGENT_DA_STRDUP(result[index]);
3878 last_anchor[i].last_anchor_client = SYNC_AGENT_DA_STRDUP(result[index]);
3880 last_anchor[i].access_name = 0;
3887 __free_table(result);
3894 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)
3898 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
3900 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3901 sync_agent_da_last_anchor_s *last_anchor = 0;
3907 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3909 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);
3911 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
3914 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
3915 last_anchor = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_last_anchor_s *, sizeof(sync_agent_da_last_anchor_s), row_count);
3916 if (last_anchor == NULL) {
3917 _DEBUG_ERROR("memory_allocation failed");
3921 for (i = 0; i < row_count; i++) {
3922 last_anchor[i].account_id = SYNC_AGENT_DA_ATOI(result[index]);
3924 last_anchor[i].data_store_id = SYNC_AGENT_DA_ATOI(result[index]);
3926 last_anchor[i].last_anchor_server = SYNC_AGENT_DA_STRDUP(result[index]);
3928 last_anchor[i].last_anchor_client = SYNC_AGENT_DA_STRDUP(result[index]);
3930 last_anchor[i].access_name = 0;
3937 __free_table(result);
3944 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)
3948 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3950 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
3951 sync_agent_da_last_anchor_s *last_anchor = NULL;
3957 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3959 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);
3961 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
3962 // *count = row_count;
3964 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
3965 for (i = 0; i < row_count; i++) {
3967 ret = sync_agent_create_last_anchor(&last_anchor);
3968 if (ret != SYNC_AGENT_DA_SUCCESS) {
3969 _DEBUG_ERROR("sync_agent_create_last_anchor() failed !!");
3973 last_anchor->account_id = SYNC_AGENT_DA_ATOI(result[index]);
3975 last_anchor->data_store_id = SYNC_AGENT_DA_ATOI(result[index]);
3977 last_anchor->last_anchor_server = SYNC_AGENT_DA_STRDUP(result[index]);
3979 last_anchor->last_anchor_client = SYNC_AGENT_DA_STRDUP(result[index]);
3981 last_anchor->access_name = NULL;
3983 *list = g_list_append(*list, last_anchor);
3985 } else if (ret != SYNC_AGENT_DA_SUCCESS) {
3986 _DEBUG_ERROR("__get_table() failed !!");
3993 __free_table(result);
4000 int da_is_exist_last_anchor(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int itemTypeId)
4004 retvm_if(daci_handler == NULL, 0, "SYNC_AGENT_DA_HANDLER is NULL !!");
4008 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
4010 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);
4012 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
4014 if (data_count == 0)
4022 sync_agent_da_return_e da_add_mapping(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_mapping_s * mapping)
4026 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4027 retvm_if(mapping == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_mapping_s is NULL !!");
4029 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
4033 if (da_is_exist_mapping_by_luid(daci_handler, mapping->account_id, mapping->luid) == 1) {
4034 _DEBUG_INFO("exist mapping item");
4035 return SYNC_AGENT_DA_ERR_PRIMARY_KEY_NOT_UNIQUE;
4038 query = "insert into mapping_tbl (account_id, data_store_id, luid, guid, access_name) values (?, ?, ?, ?, ?)";
4040 stmt = __query_prepare(daci_handler, query, strlen(query));
4042 _DEBUG_ERROR("stmt is NULL !!");
4043 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4046 _DEBUG_INFO("account_id = %d", mapping->account_id);
4047 _DEBUG_INFO("data_store_id = %d", mapping->data_store_id);
4048 _DEBUG_INFO("luid = %s", mapping->luid);
4049 _DEBUG_INFO("guid = %s", mapping->guid);
4050 _DEBUG_INFO("access_name = %s", mapping->access_name);
4052 _stmt_bind_int(daci_handler, stmt, 1, mapping->account_id);
4053 _stmt_bind_int(daci_handler, stmt, 2, mapping->data_store_id);
4054 __stmt_bind_text(daci_handler, stmt, 3, mapping->luid);
4055 __stmt_bind_text(daci_handler, stmt, 4, mapping->guid);
4056 __stmt_bind_text(daci_handler, stmt, 5, mapping->access_name);
4058 _DEBUG_INFO("query = %s", query);
4060 ret = __stmt_write_step(daci_handler, stmt);
4061 __stmt_finalize(daci_handler, stmt);
4068 sync_agent_da_return_e da_delete_mapping_by_account_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id)
4072 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4074 sync_agent_da_return_e ret = _delete_account(daci_handler, SYNC_AGENT_DA_TABLE_NAME_MAPPING, account_id);
4075 if (ret != SYNC_AGENT_DA_SUCCESS)
4076 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4083 sync_agent_da_return_e da_delete_mapping_by_luid(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *luid)
4087 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4088 retvm_if(luid == NULL, SYNC_AGENT_DA_ERRORS, "luid is NULL !!");
4090 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
4092 char *query = "delete from mapping_tbl where account_id = ? and luid = ?";
4094 stmt = __query_prepare(daci_handler, query, strlen(query));
4096 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4098 _stmt_bind_int(daci_handler, stmt, 1, account_id);
4099 __stmt_bind_text(daci_handler, stmt, 2, luid);
4101 ret = __stmt_write_step(daci_handler, stmt);
4102 __stmt_finalize(daci_handler, stmt);
4109 sync_agent_da_mapping_s *da_get_mapping_by_account_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int *count)
4113 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
4116 sync_agent_da_mapping_s *mapping = 0;
4119 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
4121 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from mapping_tbl where account_id = %d", account_id);
4123 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
4124 *count = data_count;
4126 if (data_count != 0) {
4127 /* query initialize */
4128 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
4130 mapping = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_mapping_s *, sizeof(sync_agent_da_mapping_s), data_count);
4131 if (mapping == NULL) {
4132 _DEBUG_ERROR("memory_allocation failed");
4136 snprintf(g_daci_query, sizeof(g_daci_query), "select * from mapping_tbl where account_id = %d", account_id);
4138 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
4140 for (i = 0; i < data_count; i++) {
4141 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA)
4144 mapping[i].account_id = __stmt_column_int(stmt, 0);
4145 mapping[i].data_store_id = __stmt_column_int(stmt, 1);
4146 mapping[i].luid = _stmt_column_text(stmt, 2);
4147 mapping[i].guid = _stmt_column_text(stmt, 3);
4148 mapping[i].access_name = _stmt_column_text(stmt, 5);
4150 __stmt_finalize(daci_handler, stmt);
4159 sync_agent_da_return_e da_get_mapping_by_account_id_new(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, GList ** list)
4163 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4165 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
4167 sync_agent_da_mapping_s *mapping;
4170 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
4172 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from mapping_tbl where account_id = %d", account_id);
4174 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
4176 if (data_count != 0) {
4177 /* query initialize */
4178 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
4180 snprintf(g_daci_query, sizeof(g_daci_query), "select * from mapping_tbl where account_id = %d", account_id);
4182 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
4184 for (i = 0; i < data_count; i++) {
4185 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA)
4189 ret = sync_agent_create_mapping(&mapping);
4190 if (ret != SYNC_AGENT_DA_SUCCESS) {
4191 _DEBUG_ERROR("sync_agent_create_mapping() failed !!");
4195 mapping->account_id = __stmt_column_int(stmt, 0);
4196 mapping->data_store_id = __stmt_column_int(stmt, 1);
4197 mapping->luid = _stmt_column_text(stmt, 2);
4198 mapping->guid = _stmt_column_text(stmt, 3);
4199 mapping->access_name = _stmt_column_text(stmt, 5);
4201 *list = g_list_append(*list, mapping);
4203 __stmt_finalize(daci_handler, stmt);
4205 _DEBUG_ERROR("stmt is NULL !!");
4208 _DEBUG_INFO("no data !!");
4209 ret = SYNC_AGENT_DA_SUCCESS;
4217 char *da_get_mapping_guid(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *luid)
4221 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
4222 retvm_if(luid == NULL, NULL, "luid is NULL !!");
4225 char *query = "select guid from mapping_tbl where account_id = ? and luid = ?";
4228 stmt = __query_prepare(daci_handler, query, strlen(query));
4230 _stmt_bind_int(daci_handler, stmt, 1, account_id);
4231 __stmt_bind_text(daci_handler, stmt, 2, luid);
4233 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA)
4234 guid = _stmt_column_text(stmt, 0);
4236 __stmt_finalize(daci_handler, stmt);
4244 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)
4248 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4249 retvm_if(luid == NULL, SYNC_AGENT_DA_ERRORS, "luid is NULL !!");
4251 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
4253 char *query = "select * from mapping_tbl where account_id = ? and luid = ?";
4255 stmt = __query_prepare(daci_handler, query, strlen(query));
4257 _stmt_bind_int(daci_handler, stmt, 1, account_id);
4258 __stmt_bind_text(daci_handler, stmt, 2, luid);
4260 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
4261 (*sync_agent_mapping)->account_id = __stmt_column_int(stmt, 0);
4262 (*sync_agent_mapping)->data_store_id = __stmt_column_int(stmt, 1);
4263 (*sync_agent_mapping)->luid = _stmt_column_text(stmt, 2);
4264 (*sync_agent_mapping)->guid = _stmt_column_text(stmt, 3);
4265 (*sync_agent_mapping)->access_name = _stmt_column_text(stmt, 5);
4266 ret = SYNC_AGENT_DA_SUCCESS;
4269 __stmt_finalize(daci_handler, stmt);
4271 _DEBUG_ERROR("stmt is NULL !!");
4279 int da_is_exist_mapping_by_account_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id)
4283 retvm_if(daci_handler == NULL, 0, "SYNC_AGENT_DA_HANDLER is NULL !!");
4287 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
4289 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from mapping_tbl where account_id = %d", account_id);
4291 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
4293 if (data_count == 0)
4301 int da_is_exist_mapping_by_luid(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *luid)
4305 retvm_if(daci_handler == NULL, 0, "SYNC_AGENT_DA_HANDLER is NULL !!");
4306 retvm_if(luid == NULL, 0, "luid is NULL !!");
4310 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
4312 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from mapping_tbl where account_id = %d and luid = \'%s\'", account_id, luid);
4314 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
4316 if (data_count == 0)
4319 _DEBUG_INFO("ret : %d", ret);
4326 sync_agent_da_return_e da_add_id_provider(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_id_provider_s * id_provider)
4330 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4331 retvm_if(id_provider == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_id_provider_s is NULL !!");
4334 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
4337 query = "insert into id_provider_tbl (id_provider_code, id_capacity, bit_per_page, last_id, free_bit_cnt) values (?, ?, ?, ?, ?)";
4339 stmt = __query_prepare(daci_handler, query, strlen(query));
4341 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4344 _stmt_bind_int(daci_handler, stmt, 1, id_provider->id_provider_code);
4345 _stmt_bind_int(daci_handler, stmt, 2, id_provider->id_capacity);
4346 _stmt_bind_int(daci_handler, stmt, 3, id_provider->bit_per_page);
4347 _stmt_bind_int(daci_handler, stmt, 4, id_provider->last_id);
4348 _stmt_bind_int(daci_handler, stmt, 5, id_provider->free_bit_cnt);
4350 ret = __stmt_write_step(daci_handler, stmt);
4351 if (ret != SYNC_AGENT_DA_SUCCESS) {
4352 __stmt_finalize(daci_handler, stmt);
4353 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4356 __stmt_finalize(daci_handler, stmt);
4363 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)
4367 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4369 int ret = SYNC_AGENT_DA_SUCCESS;
4371 char *query = "select id_capacity, bit_per_page, last_id, free_bit_cnt from id_provider_tbl where id_provider_code = ?";
4373 stmt = __query_prepare(daci_handler, query, strlen(query));
4375 _stmt_bind_int(daci_handler, stmt, 1, id_provider_code);
4377 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
4378 *id_provider = (sync_agent_da_id_provider_s *) calloc(1, sizeof(sync_agent_da_id_provider_s));
4379 if (*id_provider == NULL) {
4380 _DEBUG_ERROR("CALLOC failed !!!");
4381 return SYNC_AGENT_DA_ERRORS;
4383 (*id_provider)->id_capacity = __stmt_column_int(stmt, 0);
4384 (*id_provider)->bit_per_page = __stmt_column_int(stmt, 1);
4385 (*id_provider)->last_id = __stmt_column_int(stmt, 2);
4386 (*id_provider)->free_bit_cnt = __stmt_column_int(stmt, 3);
4388 ret = SYNC_AGENT_DA_ERR_NO_DATA;
4390 __stmt_finalize(daci_handler, stmt);
4398 sync_agent_da_return_e da_update_id_provider(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_id_provider_s * id_provider)
4402 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4403 retvm_if(id_provider == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_id_provider_s is NULL !!");
4405 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
4407 char *query = "update id_provider_tbl set last_id = ?, free_bit_cnt = ? where id_provider_code = ?";
4409 stmt = __query_prepare(daci_handler, query, strlen(query));
4411 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4413 _stmt_bind_int(daci_handler, stmt, 1, id_provider->last_id);
4414 _stmt_bind_int(daci_handler, stmt, 2, id_provider->free_bit_cnt);
4415 _stmt_bind_int(daci_handler, stmt, 3, id_provider->id_provider_code);
4417 ret = __stmt_write_step(daci_handler, stmt);
4418 __stmt_finalize(daci_handler, stmt);
4425 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)
4429 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4430 retvm_if(id_page == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_id_page_s is NULL !!");
4433 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
4436 query = "insert into id_page_tbl (page_index, id_provider_code, page_bit) values (?, ?, ?)";
4438 stmt = __query_prepare(daci_handler, query, strlen(query));
4440 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4443 _stmt_bind_int(daci_handler, stmt, 1, id_page->page_index);
4444 _stmt_bind_int(daci_handler, stmt, 2, id_page->id_provider_code);
4445 _stmt_bind_blob(daci_handler, stmt, 3, id_page->page_bit, page_byte_size);
4447 for (; i < page_byte_size; i++) {
4448 _DEBUG_INFO("[%d] %d\n", i, (id_page->page_bit)[i]);
4451 ret = __stmt_write_step(daci_handler, stmt);
4452 if (ret != SYNC_AGENT_DA_SUCCESS) {
4453 __stmt_finalize(daci_handler, stmt);
4454 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4457 __stmt_finalize(daci_handler, stmt);
4464 sync_agent_da_return_e da_delete_id_page(SYNC_AGENT_DA_HANDLER * daci_handler, unsigned int id_provider_code, unsigned int page_index)
4468 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4470 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
4472 char *query = "delete from id_page_tbl where id_provider_code = ? and page_index = ?";
4474 stmt = __query_prepare(daci_handler, query, strlen(query));
4476 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4478 _stmt_bind_int(daci_handler, stmt, 1, id_provider_code);
4479 _stmt_bind_int(daci_handler, stmt, 2, page_index);
4481 ret = __stmt_write_step(daci_handler, stmt);
4482 __stmt_finalize(daci_handler, stmt);
4489 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)
4493 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4495 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
4497 char *query = "select page_bit from id_page_tbl where id_provider_code = ? and page_index = ?";
4499 stmt = __query_prepare(daci_handler, query, strlen(query));
4501 _stmt_bind_int(daci_handler, stmt, 1, id_provider_code);
4502 _stmt_bind_int(daci_handler, stmt, 2, page_index);
4504 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
4505 int byte_len = sqlite3_column_bytes(stmt, 0);
4506 byte_len += 1; /* The count which sqlite3_column_bytes returns doesn't include trailing \0 in case of string. */
4507 *page_bit = (char *)calloc(byte_len, sizeof(char));
4508 if (*page_bit == NULL) {
4509 _DEBUG_ERROR("CALLOC failed !!!");
4510 return SYNC_AGENT_DA_ERRORS;
4513 const unsigned char *geted_page_bit = sqlite3_column_text(stmt, 0);
4515 memcpy(*page_bit, geted_page_bit, byte_len);
4517 _DEBUG_INFO("NO DATA");
4520 __stmt_finalize(daci_handler, stmt);
4528 sync_agent_da_return_e da_get_id_page_index(SYNC_AGENT_DA_HANDLER * daci_handler, unsigned int id_provider_code, int *count)
4532 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4534 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
4536 char *query = "select count(*) from id_page_tbl where id_provider_code = ?;";
4538 stmt = __query_prepare(daci_handler, query, strlen(query));
4540 _stmt_bind_int(daci_handler, stmt, 1, id_provider_code);
4542 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
4543 *count = __stmt_column_int(stmt, 0);
4545 _DEBUG_INFO("NO DATA");
4548 __stmt_finalize(daci_handler, stmt);
4556 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)
4560 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4561 retvm_if(id_page == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_id_page_s is NULL !!");
4563 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
4565 char *query = "update id_page_tbl set page_bit = ? where id_provider_code = ? and page_index = ?";
4567 stmt = __query_prepare(daci_handler, query, strlen(query));
4569 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4571 _stmt_bind_blob(daci_handler, stmt, 1, id_page->page_bit, page_byte_size);
4572 _stmt_bind_int(daci_handler, stmt, 2, id_page->id_provider_code);
4573 _stmt_bind_int(daci_handler, stmt, 3, id_page->page_index);
4575 ret = __stmt_write_step(daci_handler, stmt);
4576 __stmt_finalize(daci_handler, stmt);
4583 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)
4587 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4589 char query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
4590 char *new_table = 0;
4593 _DEBUG_INFO("data_store_id = %d", data_store_id);
4595 new_table = __replace_table_name("account_%d_item_changelog_tbl", fw_account_id, 1);
4596 if (new_table == NULL) {
4597 _DEBUG_ERROR("__replace_table_name is failed");
4599 return SYNC_AGENT_DA_ERRORS;
4602 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"
4603 " 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);
4604 _DEBUG_INFO("query = %s", query);
4605 data_count = _get_data_count(daci_handler, query, strlen(query));
4607 *item_count = data_count;
4609 if (new_table != NULL)
4614 return SYNC_AGENT_DA_SUCCESS;
4618 int _busy_handler(void *pData, int count)
4622 _DEBUG_TRACE("__busy_handler %d called", count);
4624 /* sleep time when SQLITE_LOCK */
4629 /* retry will be stopped if busy handler return 0 */
4630 return SYNC_AGENT_DA_RETRY_COUNT - count;
4633 sync_agent_da_return_e __query_exec(SYNC_AGENT_DA_HANDLER * daci_handler, char *query, char *err_msg)
4637 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERR_NOT_OPENED, "SYNC_AGENT_DA_HANDLER is NULL !!");
4638 retvm_if(query == NULL, SYNC_AGENT_DA_ERRORS, "query is NULL !!");
4640 char *query_msg = 0;
4643 int err_mutex = pthread_mutex_lock(&exec_lock);
4645 _DEBUG_ERROR("Failed pthread_mutex_lock : %d", err_mutex);
4647 ret = sqlite3_exec(daci_handler, query, 0, 0, &query_msg);
4648 err_mutex = pthread_mutex_unlock(&exec_lock);
4650 _DEBUG_ERROR("Failed pthread_mutex_unlock : %d", err_mutex);
4653 if (ret != SQLITE_OK) {
4654 _DEBUG_ERROR("%s(%d) : %s", err_msg, ret, query_msg);
4656 if (NULL != query_msg)
4657 sqlite3_free(query_msg);
4659 if (ret == SQLITE_BUSY)
4660 return SYNC_AGENT_DA_ERR_LOCKED;
4662 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4667 return SYNC_AGENT_DA_SUCCESS;
4670 daci_stmt __query_prepare(SYNC_AGENT_DA_HANDLER * daci_handler, char *query, int size)
4674 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
4675 retvm_if(query == NULL, NULL, "query is NULL !!");
4680 int err_mutex = pthread_mutex_lock(&exec_lock);
4682 _DEBUG_ERROR("Failed pthread_mutex_lock : [%d]", err_mutex);
4686 //_DEBUG_INFO("query = [%s], size = [%d]", query, size);
4687 ret = sqlite3_prepare_v2(daci_handler, query, size, &stmt, 0);
4688 if (ret != SQLITE_OK) {
4689 _DEBUG_ERROR("sqlite3_query_prepare failed[%d] : [%s]", ret, sqlite3_errmsg(daci_handler));
4692 err_mutex = pthread_mutex_unlock(&exec_lock);
4694 _DEBUG_ERROR("Failed pthread_mutex_unlock : [%d]", err_mutex);
4701 sync_agent_da_return_e __stmt_bind_text(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt, int index, const char *value)
4705 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4709 if (value != NULL) {
4710 ret = sqlite3_bind_text(stmt, index, value, strlen(value), SQLITE_STATIC);
4712 ret = __stmt_bind_null(daci_handler, stmt, index);
4714 if (ret == SYNC_AGENT_DA_SUCCESS)
4718 if (ret != SQLITE_OK) {
4719 _DEBUG_ERROR("sqlite3_stmt_bind_text failed(%d) : %s ", ret, sqlite3_errmsg(daci_handler));
4720 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4725 return SYNC_AGENT_DA_SUCCESS;
4728 sync_agent_da_return_e _stmt_bind_int(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt, int index, const int value)
4732 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4736 ret = sqlite3_bind_int(stmt, index, value);
4737 if (ret != SQLITE_OK) {
4738 _DEBUG_ERROR("sqlite3_stmt_bind_int failed(%d) : %s \n", ret, sqlite3_errmsg(daci_handler));
4739 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4744 return SYNC_AGENT_DA_SUCCESS;
4747 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)
4751 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4755 ret = sqlite3_bind_blob(stmt, index, value, nbyte, 0);
4756 if (ret != SQLITE_OK) {
4757 _DEBUG_ERROR("sqlite3_bind_blob failed(%d) : %s \n", ret, sqlite3_errmsg(daci_handler));
4758 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4763 return SYNC_AGENT_DA_SUCCESS;
4766 sync_agent_da_return_e __stmt_bind_null(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt, int index)
4770 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4774 ret = sqlite3_bind_null(stmt, index);
4775 if (ret != SQLITE_OK) {
4776 _DEBUG_ERROR("sqlite3_stmt_bind_null failed(%d) : %s", ret, sqlite3_errmsg(daci_handler));
4777 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4782 return SYNC_AGENT_DA_SUCCESS;
4785 sync_agent_da_return_e _stmt_read_step(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt)
4789 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4792 // int err_mutex = 0;
4794 // err_mutex = pthread_mutex_lock(&exec_lock);
4796 // _DEBUG_ERROR("Failed pthread_mutex_lock : %d", err_mutex);
4799 ret = sqlite3_step(stmt);
4801 // err_mutex = pthread_mutex_unlock(&exec_lock);
4803 // _DEBUG_ERROR("Failed pthread_mutex_unlock : %d", err_mutex);
4806 if (ret == SQLITE_ROW)
4807 return SYNC_AGENT_DA_ERR_MORE_DATA;
4809 if (ret != SQLITE_DONE) {
4810 _DEBUG_ERROR("sqlite3_stmt_step failed(%d) : %s", ret, sqlite3_errmsg(daci_handler));
4812 if (ret == SQLITE_BUSY)
4813 return SYNC_AGENT_DA_ERR_LOCKED;
4815 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4820 return SYNC_AGENT_DA_SUCCESS;
4823 static sync_agent_da_return_e __stmt_write_step(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt)
4827 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4829 int transaction_flag = 0;
4832 if (use_transaction_thread_id != 0) {
4833 if (use_transaction_thread_id != SYNC_AGENT_DA_GET_THREAD_ID) {
4834 err_mutex = pthread_mutex_lock(&transaction_lock);
4836 _DEBUG_ERROR("Failed pthread_mutex_lock : %d", err_mutex);
4838 use_transaction_thread_id = SYNC_AGENT_DA_GET_THREAD_ID;
4839 transaction_flag = 1;
4843 err_mutex = pthread_mutex_lock(&exec_lock);
4845 _DEBUG_ERROR("Failed pthread_mutex_lock : %d", err_mutex);
4848 int ret = sqlite3_step(stmt);
4850 err_mutex = pthread_mutex_unlock(&exec_lock);
4852 _DEBUG_ERROR("Failed pthread_mutex_unlock : %d", err_mutex);
4855 if (transaction_flag) {
4856 use_transaction_thread_id = 0;
4857 err_mutex = pthread_mutex_unlock(&transaction_lock);
4859 _DEBUG_ERROR("Failed pthread_mutex_unlock : %d", err_mutex);
4863 if (ret == SQLITE_ROW) {
4864 return SYNC_AGENT_DA_ERR_MORE_DATA;
4867 if (ret != SQLITE_DONE) {
4868 _DEBUG_ERROR("sqlite3_stmt_step failed(%d) : %s", ret, sqlite3_errmsg(daci_handler));
4869 if (ret == SQLITE_BUSY) {
4870 _DEBUG_ERROR("Never reached this line!!");
4871 return SYNC_AGENT_DA_ERR_LOCKED;
4873 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4878 return SYNC_AGENT_DA_SUCCESS;
4881 sync_agent_da_return_e _stmt_reset(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt)
4885 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4889 if (sqlite3_reset(stmt) != SQLITE_OK) {
4890 _DEBUG_ERROR("sqlite3_stmt_reset failed(%d) : %s", ret, sqlite3_errmsg(daci_handler));
4891 return SYNC_AGENT_DA_ERRORS;
4896 return SYNC_AGENT_DA_SUCCESS;
4899 sync_agent_da_return_e __stmt_finalize(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt)
4903 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4907 if (sqlite3_finalize(stmt) != SQLITE_OK) {
4908 _DEBUG_ERROR("sqlite3_stmt_finalize failed(%d) : %s", ret, sqlite3_errmsg(daci_handler));
4909 return SYNC_AGENT_DA_ERRORS;
4914 return SYNC_AGENT_DA_SUCCESS;
4917 char *_stmt_column_text(daci_stmt stmt, int index)
4923 temp = (char *)sqlite3_column_text(stmt, index);
4927 return SYNC_AGENT_DA_STRDUP(temp);
4930 int __stmt_column_int(daci_stmt stmt, int index)
4936 return (int)sqlite3_column_int(stmt, index);
4939 sync_agent_da_return_e _get_table(SYNC_AGENT_DA_HANDLER * daci_handler, char *query, char ***result, int *row_count, int *col_count)
4943 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERR_NOT_OPENED, "SYNC_AGENT_DA_HANDLER is NULL !!");
4944 retvm_if(query == NULL, SYNC_AGENT_DA_ERRORS, "query is NULL !!");
4949 int err_mutex = pthread_mutex_lock(&exec_lock);
4951 _DEBUG_TRACE("Failed pthread_mutex_lock : %d", err_mutex);
4953 ret = sqlite3_get_table(daci_handler, query, result, row_count, col_count, &err_msg);
4954 err_mutex = pthread_mutex_unlock(&exec_lock);
4956 _DEBUG_TRACE("Failed pthread_mutex_lock : %d", err_mutex);
4959 if (ret != SQLITE_OK) {
4960 _DEBUG_ERROR("sqlite3_get_table failed(%d) : %s", ret, err_msg);
4962 __free_table(*result);
4963 if (NULL != err_msg)
4964 sqlite3_free(err_msg);
4965 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4970 return SYNC_AGENT_DA_SUCCESS;
4973 void __free_table(char **result)
4978 sqlite3_free_table(result);
4983 sync_agent_da_return_e _create_changelog_table(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id)
4987 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4989 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
4990 char *new_table = 0;
4991 char *new_table_create = 0;
4993 ret = da_begin_transaction(daci_handler);
4994 if (ret != SYNC_AGENT_DA_SUCCESS) {
4995 _DEBUG_ERROR("agent_db_changelog_tbl_create failed");
4996 return SYNC_AGENT_DA_ERR_CREATE_TABLE_FAILED;
4999 /* 9. create account_item_changelog_tbl */
5000 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
5001 if (new_table == NULL) {
5002 da_end_transaction(daci_handler, SYNC_AGENT_DA_TRANSACTION_ROLLBACK);
5003 return SYNC_AGENT_DA_ERR_CREATE_TABLE_FAILED;
5006 if (__exist_table(daci_handler, new_table) == 0) {
5007 new_table_create = __replace_table_name(g_daci_create_table[SYNC_AGENT_DA_TABLE_NAME_ACCOUNT_ITEM_CHANGELOG], account_id, 4);
5009 ret = __query_exec(daci_handler, new_table_create, "Item_changelog_tbl_create failed");
5011 if (ret != SYNC_AGENT_DA_SUCCESS) {
5012 da_end_transaction(daci_handler, SYNC_AGENT_DA_TRANSACTION_ROLLBACK);
5013 return SYNC_AGENT_DA_ERR_CREATE_TABLE_FAILED;
5018 SYNC_AGENT_DA_MEMORY_FREE(new_table);
5019 SYNC_AGENT_DA_MEMORY_FREE(new_table_create);
5023 return da_end_transaction(daci_handler, SYNC_AGENT_DA_TRANSACTION_COMMIT);
5026 sync_agent_da_return_e _drop_changelog_table(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id)
5030 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
5032 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
5033 char *new_table_drop = 0;
5035 /* 9. drop account_item_changelog_tbl */
5036 new_table_drop = __replace_table_name(g_daci_drop_table[SYNC_AGENT_DA_TABLE_NAME_ACCOUNT_ITEM_CHANGELOG], account_id, 1);
5038 ret = __query_exec(daci_handler, new_table_drop, "Item_changelog_tbl_drop failed");
5039 if (ret != SYNC_AGENT_DA_SUCCESS) {
5040 /* da_end_transaction(daci_handler, SYNC_AGENT_DA_TRANSACTION_ROLLBACK);*/
5041 return SYNC_AGENT_DA_ERR_DROP_TABLE_FAILED;
5045 SYNC_AGENT_DA_MEMORY_FREE(new_table_drop);
5052 sync_agent_da_return_e _delete_changlog_table(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id)
5056 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
5058 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
5059 char *new_table_delete = 0;
5061 /* 9. delete account_item_changelog_tbl */
5062 new_table_delete = __replace_table_name(g_daci_delete_table[SYNC_AGENT_DA_TABLE_NAME_ACCOUNT_ITEM_CHANGELOG], account_id, 1);
5064 ret = __query_exec(daci_handler, new_table_delete, "Item_changelog_tbl_delete failed");
5065 if (ret != SYNC_AGENT_DA_SUCCESS) {
5066 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
5070 SYNC_AGENT_DA_MEMORY_FREE(new_table_delete);
5077 int __exist_table(SYNC_AGENT_DA_HANDLER * daci_handler, const char *table_name)
5082 int table_count = 0;
5083 char *query = "select count(*) from sqlite_master where tbl_name= ?";
5085 stmt = __query_prepare(daci_handler, query, strlen(query));
5086 if ((stmt != NULL) && (__stmt_bind_text(daci_handler, stmt, 1, table_name) == SYNC_AGENT_DA_SUCCESS)) {
5088 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA)
5089 table_count = __stmt_column_int(stmt, 0);
5091 __stmt_finalize(daci_handler, stmt);
5093 if (table_count > 0) {
5105 int _get_data_count(SYNC_AGENT_DA_HANDLER * daci_handler, char *query, int size)
5109 retvm_if(daci_handler == NULL, 0, "SYNC_AGENT_DA_HANDLER is NULL !!");
5110 retvm_if(query == NULL, 0, "query is NULL !!");
5115 stmt = __query_prepare(daci_handler, query, size);
5117 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA)
5118 data_count = __stmt_column_int(stmt, 0);
5120 __stmt_finalize(daci_handler, stmt);
5128 char *__replace_table_name(char *oldTable, int account_id, int count)
5132 retvm_if(oldTable == NULL, NULL, "old Table is NULL !!");
5134 char *new_table = 0;
5137 /* SVACE : Measure the size for allocation memory. */
5138 if (count == 1) /* table name convert */
5139 length = snprintf(0, 0, oldTable, account_id);
5140 else if (count == 4) /* table create query convert */
5141 length = snprintf(0, 0, oldTable, account_id, account_id, account_id, account_id);
5143 new_table = SYNC_AGENT_DA_MEMORY_MALLOC(char *, sizeof(char), (length + 1));
5144 if (new_table == NULL) {
5145 _DEBUG_ERROR("memory_allocation failed");
5150 snprintf(new_table, length + 1, oldTable, account_id);
5151 } else if (count == 4) {
5152 snprintf(new_table, length + 1, oldTable, account_id, account_id, account_id, account_id);
5160 char *__get_table_name(sync_agent_da_table_name_e table_name)
5164 char *table_str = 0;
5166 switch (table_name) {
5167 case SYNC_AGENT_DA_TABLE_NAME_ACCOUNT:
5169 table_str = "account_tbl";
5172 case SYNC_AGENT_DA_TABLE_NAME_FOLDER:
5174 table_str = "folder_tbl";
5177 case SYNC_AGENT_DA_TABLE_NAME_ITEM:
5179 table_str = "item_tbl";
5182 case SYNC_AGENT_DA_TABLE_NAME_CONFIG:
5184 table_str = "config_tbl";
5187 case SYNC_AGENT_DA_TABLE_NAME_ACCOUNT_ITEM_CHANGELOG:
5189 table_str = "account_item_changelog_tbl";
5192 case SYNC_AGENT_DA_TABLE_NAME_LAST_ANCHOR:
5194 table_str = "last_anchor_tbl";
5197 case SYNC_AGENT_DA_TABLE_NAME_MAPPING:
5199 table_str = "mapping_tbl";
5202 case SYNC_AGENT_DA_TABLE_NAME_ID_PROVIDER:
5204 table_str = "id_provider_tbl";
5207 case SYNC_AGENT_DA_TABLE_NAME_ID_PAGE:
5209 table_str = "id_page_tbl";
5221 char *_get_column_name(sync_agent_da_column_name_e column_name)
5225 char *column_str = 0;
5227 switch (column_name) {
5228 case SYNC_AGENT_DA_COLUMN_NAME_ITEM_ID:
5230 column_str = "item_id";
5233 case SYNC_AGENT_DA_COLUMN_NAME_SERVICE_ID:
5235 column_str = "service_id";
5247 int _get_next_account_id(void)
5251 int next_account_id = 1;
5252 int *account_id_list = 0;
5256 account_id_list = da_get_account_id_list(&count);
5257 if (account_id_list != NULL) {
5258 for (i = 0; i < count; i++) {
5259 if ((i + 1) != account_id_list[i])
5265 free(account_id_list);
5270 return next_account_id;
5273 sync_agent_da_return_e _delete_account(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_table_name_e table_name, int account_id)
5277 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
5280 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
5281 char *table_str = 0;
5282 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
5284 table_str = __get_table_name(table_name);
5286 if (!strcmp(table_str, "config_tbl")) {
5287 snprintf(g_daci_query, sizeof(g_daci_query), "delete from %s where config_id = %d", table_str, account_id);
5288 } else if (!strcmp(table_str, "id_provider_tbl") || !strcmp(table_str, "id_page_tbl")) {
5291 snprintf(g_daci_query, sizeof(g_daci_query), "delete from %s where account_id = %d", table_str, account_id);
5294 _DEBUG_TRACE("i = %d, tableName = %s, query = %s", table_name, table_str, g_daci_query);
5295 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
5297 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
5299 ret = __stmt_write_step(daci_handler, stmt);
5300 __stmt_finalize(daci_handler, stmt);
5308 *=============================================================================================================================
5310 *=============================================================================================================================
5312 void da_drop_table(SYNC_AGENT_DA_HANDLER * daci_handler, int *accountIdList, int account_count)
5316 retm_if(daci_handler == NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
5317 retm_if(accountIdList == NULL, "account Id List is NULL !!");
5321 for (i = 0; i < account_count; i++)
5322 _drop_changelog_table(daci_handler, accountIdList[i]);
5327 char *da_get_daci_file_path(void)
5333 return daci_file_path;