6 #include "download-provider-config.h"
7 #include "download-provider-db.h"
8 #include "download-provider-log.h"
10 __thread sqlite3 *g_download_provider_db = 0;
12 void __download_provider_db_close()
14 if (g_download_provider_db) {
15 db_util_close(g_download_provider_db);
17 g_download_provider_db = 0;
20 int __download_provider_db_open()
22 if (db_util_open(DOWNLOAD_PROVIDER_DOWNLOADING_DB_NAME,
23 &g_download_provider_db,
24 DB_UTIL_REGISTER_HOOK_METHOD) != SQLITE_OK) {
25 TRACE_DEBUG_MSG("failed db_util_open [%s][%s]",
26 DOWNLOAD_PROVIDER_DOWNLOADING_DB_NAME,
27 sqlite3_errmsg(g_download_provider_db));
28 __download_provider_db_close();
31 return g_download_provider_db ? 0 : -1;
34 void _download_provider_sql_close(sqlite3_stmt *stmt)
36 if (sqlite3_finalize(stmt) != SQLITE_OK)
37 TRACE_DEBUG_MSG("failed sqlite3_finalize [%s]",
38 sqlite3_errmsg(g_download_provider_db));
40 __download_provider_db_close();
43 int _download_provider_sql_open()
45 __download_provider_db_close();
46 return __download_provider_db_open();
49 int download_provider_db_requestinfo_remove(int uniqueid)
55 TRACE_DEBUG_MSG("[NULL-CHECK]");
59 if (_download_provider_sql_open() < 0) {
60 TRACE_DEBUG_MSG("db_util_open is failed [%s]",
61 sqlite3_errmsg(g_download_provider_db));
66 sqlite3_prepare_v2(g_download_provider_db,
67 "delete from downloading where uniqueid = ?",
69 if (errorcode != SQLITE_OK) {
70 TRACE_DEBUG_MSG("sqlite3_prepare_v2 is failed. [%s]",
71 sqlite3_errmsg(g_download_provider_db));
72 _download_provider_sql_close(stmt);
75 if (sqlite3_bind_int(stmt, 1, uniqueid) != SQLITE_OK) {
76 TRACE_DEBUG_MSG("sqlite3_bind_int is failed. [%s]",
77 sqlite3_errmsg(g_download_provider_db));
78 _download_provider_sql_close(stmt);
81 errorcode = sqlite3_step(stmt);
82 if (errorcode == SQLITE_OK || errorcode == SQLITE_DONE) {
83 _download_provider_sql_close(stmt);
86 TRACE_DEBUG_MSG("sqlite3_step is failed [%s]",
87 sqlite3_errmsg(g_download_provider_db));
88 __download_provider_db_close();
92 int download_provider_db_requestinfo_new(download_clientinfo *clientinfo)
97 if (!clientinfo || !clientinfo->requestinfo
98 || clientinfo->requestinfo->requestid <= 0) {
99 TRACE_DEBUG_MSG("[NULL-CHECK]");
103 if (_download_provider_sql_open() < 0) {
104 TRACE_DEBUG_MSG("db_util_open is failed [%s]",
105 sqlite3_errmsg(g_download_provider_db));
110 sqlite3_prepare_v2(g_download_provider_db,
111 "INSERT INTO downloading (uniqueid, packagename, notification, installpath, filename, creationdate, state, url, mimetype, savedpath) VALUES (?, ?, ?, ?, ?, DATETIME('now'), ?, ?, ?, ?)",
113 if (errorcode != SQLITE_OK) {
114 TRACE_DEBUG_MSG("sqlite3_prepare_v2 is failed. [%s]",
115 sqlite3_errmsg(g_download_provider_db));
116 _download_provider_sql_close(stmt);
119 if (sqlite3_bind_int(stmt, 1, clientinfo->requestinfo->requestid) !=
121 TRACE_DEBUG_MSG("sqlite3_bind_int is failed. [%s]",
122 sqlite3_errmsg(g_download_provider_db));
123 _download_provider_sql_close(stmt);
126 if (clientinfo->requestinfo->client_packagename.length > 0) {
127 if (sqlite3_bind_text
128 (stmt, 2, clientinfo->requestinfo->client_packagename.str,
129 -1, NULL) != SQLITE_OK) {
130 TRACE_DEBUG_MSG("sqlite3_bind_text is failed. [%s]",
131 sqlite3_errmsg(g_download_provider_db));
132 _download_provider_sql_close(stmt);
137 if (sqlite3_bind_int(stmt, 3, clientinfo->requestinfo->notification) !=
139 TRACE_DEBUG_MSG("sqlite3_bind_int is failed. [%s]",
140 sqlite3_errmsg(g_download_provider_db));
141 _download_provider_sql_close(stmt);
144 if (clientinfo->downloadinfo && clientinfo->downloadinfo->content_name) {
145 if (sqlite3_bind_text
146 (stmt, 5, clientinfo->downloadinfo->content_name, -1,
147 NULL) != SQLITE_OK) {
148 TRACE_DEBUG_MSG("sqlite3_bind_text is failed. [%s]",
149 sqlite3_errmsg(g_download_provider_db));
150 _download_provider_sql_close(stmt);
154 if (sqlite3_bind_int(stmt, 6, clientinfo->state) != SQLITE_OK) {
155 TRACE_DEBUG_MSG("sqlite3_bind_int is failed. [%s]",
156 sqlite3_errmsg(g_download_provider_db));
157 _download_provider_sql_close(stmt);
160 if (clientinfo->requestinfo->url.length > 0) {
161 if (sqlite3_bind_text
162 (stmt, 7, clientinfo->requestinfo->url.str, -1,
163 NULL) != SQLITE_OK) {
164 TRACE_DEBUG_MSG("sqlite3_bind_text is failed. [%s]",
165 sqlite3_errmsg(g_download_provider_db));
166 _download_provider_sql_close(stmt);
170 if (clientinfo->downloadinfo && clientinfo->downloadinfo->mime_type) {
171 if (sqlite3_bind_text
172 (stmt, 8, clientinfo->downloadinfo->mime_type, -1,
173 NULL) != SQLITE_OK) {
174 TRACE_DEBUG_MSG("sqlite3_bind_text is failed. [%s]",
175 sqlite3_errmsg(g_download_provider_db));
176 _download_provider_sql_close(stmt);
180 if (clientinfo->tmp_saved_path) {
181 if (sqlite3_bind_text
182 (stmt, 9, clientinfo->tmp_saved_path, -1,
183 NULL) != SQLITE_OK) {
184 TRACE_DEBUG_MSG("sqlite3_bind_text is failed. [%s]",
185 sqlite3_errmsg(g_download_provider_db));
186 _download_provider_sql_close(stmt);
190 errorcode = sqlite3_step(stmt);
191 if (errorcode == SQLITE_OK || errorcode == SQLITE_DONE) {
192 _download_provider_sql_close(stmt);
195 TRACE_DEBUG_MSG("sqlite3_step is failed [%s]",
196 sqlite3_errmsg(g_download_provider_db));
197 __download_provider_db_close();
201 int download_provider_db_requestinfo_update_column(download_clientinfo *clientinfo,
202 download_db_column_type type)
207 if (!clientinfo || !clientinfo->requestinfo
208 || clientinfo->requestinfo->requestid <= 0) {
209 TRACE_DEBUG_MSG("[NULL-CHECK]");
213 if (_download_provider_sql_open() < 0) {
214 TRACE_DEBUG_MSG("db_util_open is failed [%s]",
215 sqlite3_errmsg(g_download_provider_db));
220 case DOWNLOAD_DB_PACKAGENAME:
221 if (clientinfo->requestinfo->client_packagename.length <= 0
222 || !clientinfo->requestinfo->client_packagename.str) {
223 TRACE_DEBUG_MSG("[NULL-CHECK] type [%d]", type);
224 _download_provider_sql_close(stmt);
228 sqlite3_prepare_v2(g_download_provider_db,
229 "UPDATE downloading SET packagename = ? WHERE uniqueid = ?",
231 if (errorcode != SQLITE_OK) {
232 TRACE_DEBUG_MSG("sqlite3_prepare_v2 is failed. [%s]",
233 sqlite3_errmsg(g_download_provider_db));
234 _download_provider_sql_close(stmt);
237 if (sqlite3_bind_text
238 (stmt, 1, clientinfo->requestinfo->client_packagename.str,
239 -1, NULL) != SQLITE_OK) {
240 TRACE_DEBUG_MSG("sqlite3_bind_int is failed. [%s]",
241 sqlite3_errmsg(g_download_provider_db));
242 _download_provider_sql_close(stmt);
246 case DOWNLOAD_DB_NOTIFICATION:
248 sqlite3_prepare_v2(g_download_provider_db,
249 "UPDATE downloading SET notification = ? WHERE uniqueid = ?",
251 if (errorcode != SQLITE_OK) {
252 TRACE_DEBUG_MSG("sqlite3_prepare_v2 is failed. [%s]",
253 sqlite3_errmsg(g_download_provider_db));
254 _download_provider_sql_close(stmt);
259 clientinfo->requestinfo->notification) != SQLITE_OK) {
260 TRACE_DEBUG_MSG("sqlite3_bind_int is failed. [%s]",
261 sqlite3_errmsg(g_download_provider_db));
262 _download_provider_sql_close(stmt);
266 case DOWNLOAD_DB_STATE:
268 sqlite3_prepare_v2(g_download_provider_db,
269 "UPDATE downloading SET state = ? WHERE uniqueid = ?",
271 if (errorcode != SQLITE_OK) {
272 TRACE_DEBUG_MSG("sqlite3_prepare_v2 is failed. [%s]",
273 sqlite3_errmsg(g_download_provider_db));
274 _download_provider_sql_close(stmt);
277 if (sqlite3_bind_int(stmt, 1, clientinfo->state) != SQLITE_OK) {
278 TRACE_DEBUG_MSG("sqlite3_bind_int is failed. [%s]",
279 sqlite3_errmsg(g_download_provider_db));
280 _download_provider_sql_close(stmt);
284 case DOWNLOAD_DB_MIMETYPE:
285 if (!clientinfo->downloadinfo) {
286 TRACE_DEBUG_MSG("[NULL-CHECK] type [%d]", type);
287 _download_provider_sql_close(stmt);
291 sqlite3_prepare_v2(g_download_provider_db,
292 "UPDATE downloading SET mimetype = ? WHERE uniqueid = ?",
294 if (errorcode != SQLITE_OK) {
295 TRACE_DEBUG_MSG("sqlite3_prepare_v2 is failed. [%s]",
296 sqlite3_errmsg(g_download_provider_db));
297 _download_provider_sql_close(stmt);
300 if (sqlite3_bind_text
301 (stmt, 1, clientinfo->downloadinfo->mime_type, -1,
302 NULL) != SQLITE_OK) {
303 TRACE_DEBUG_MSG("sqlite3_bind_int is failed. [%s]",
304 sqlite3_errmsg(g_download_provider_db));
305 _download_provider_sql_close(stmt);
309 case DOWNLOAD_DB_FILENAME:
310 if (!clientinfo->downloadinfo
311 || !clientinfo->downloadinfo->content_name) {
312 TRACE_DEBUG_MSG("[NULL-CHECK] type [%d]", type);
313 _download_provider_sql_close(stmt);
317 sqlite3_prepare_v2(g_download_provider_db,
318 "UPDATE downloading SET filename = ? WHERE uniqueid = ?",
320 if (errorcode != SQLITE_OK) {
321 TRACE_DEBUG_MSG("sqlite3_prepare_v2 is failed. [%s]",
322 sqlite3_errmsg(g_download_provider_db));
323 _download_provider_sql_close(stmt);
326 if (sqlite3_bind_text
327 (stmt, 1, clientinfo->downloadinfo->content_name, -1,
328 NULL) != SQLITE_OK) {
329 TRACE_DEBUG_MSG("sqlite3_bind_int is failed. [%s]",
330 sqlite3_errmsg(g_download_provider_db));
331 _download_provider_sql_close(stmt);
335 case DOWNLOAD_DB_SAVEDPATH:
336 if (!clientinfo->tmp_saved_path) {
337 TRACE_DEBUG_MSG("[NULL-CHECK] type [%d]", type);
338 _download_provider_sql_close(stmt);
342 sqlite3_prepare_v2(g_download_provider_db,
343 "UPDATE downloading SET savedpath = ? WHERE uniqueid = ?",
345 if (errorcode != SQLITE_OK) {
346 TRACE_DEBUG_MSG("sqlite3_prepare_v2 is failed. [%s]",
347 sqlite3_errmsg(g_download_provider_db));
348 _download_provider_sql_close(stmt);
351 if (sqlite3_bind_text
352 (stmt, 1, clientinfo->tmp_saved_path, -1,
353 NULL) != SQLITE_OK) {
354 TRACE_DEBUG_MSG("sqlite3_bind_int is failed. [%s]",
355 sqlite3_errmsg(g_download_provider_db));
356 _download_provider_sql_close(stmt);
361 TRACE_DEBUG_MSG("Wrong type [%d]", type);
365 if (sqlite3_bind_int(stmt, 2, clientinfo->requestinfo->requestid) !=
367 TRACE_DEBUG_MSG("sqlite3_bind_int is failed. [%s]",
368 sqlite3_errmsg(g_download_provider_db));
369 _download_provider_sql_close(stmt);
373 errorcode = sqlite3_step(stmt);
374 if (errorcode == SQLITE_OK || errorcode == SQLITE_DONE) {
375 _download_provider_sql_close(stmt);
378 TRACE_DEBUG_MSG("sqlite3_step is failed [%s]",
379 sqlite3_errmsg(g_download_provider_db));
380 __download_provider_db_close();
384 download_dbinfo_list *download_provider_db_get_list(int state)
389 int buffer_length = 0;
392 download_dbinfo_list *m_list = NULL;
394 listcount = download_provider_db_list_count(state);
398 if (_download_provider_sql_open() < 0) {
399 TRACE_DEBUG_MSG("db_util_open is failed [%s]",
400 sqlite3_errmsg(g_download_provider_db));
404 if (state != DOWNLOAD_STATE_NONE) {
406 sqlite3_prepare_v2(g_download_provider_db,
407 "SELECT uniqueid, packagename, notification, installpath, filename, creationdate, state, url, mimetype, savedpath FROM downloading WHERE state = ?",
409 if (errorcode != SQLITE_OK) {
410 TRACE_DEBUG_MSG("sqlite3_prepare_v2 is failed. [%s]",
411 sqlite3_errmsg(g_download_provider_db));
412 _download_provider_sql_close(stmt);
415 if (sqlite3_bind_int(stmt, 1, state) != SQLITE_OK) {
416 TRACE_DEBUG_MSG("sqlite3_bind_int is failed. [%s]",
417 sqlite3_errmsg(g_download_provider_db));
418 _download_provider_sql_close(stmt);
423 sqlite3_prepare_v2(g_download_provider_db,
424 "SELECT uniqueid, packagename, notification, installpath, filename, creationdate, state, url, mimetype, savedpath FROM downloading",
426 if (errorcode != SQLITE_OK) {
427 TRACE_DEBUG_MSG("sqlite3_prepare_v2 is failed. [%s]",
428 sqlite3_errmsg(g_download_provider_db));
429 _download_provider_sql_close(stmt);
433 m_list = (download_dbinfo_list *) calloc(1, sizeof(download_dbinfo_list));
435 (download_dbinfo *) calloc(listcount, sizeof(download_dbinfo));
436 m_list->count = listcount;
438 while ((errorcode = sqlite3_step(stmt)) == SQLITE_ROW
439 && (i < listcount)) {
440 m_list->item[i].requestid = sqlite3_column_int(stmt, 0);
441 buffer = (char *)(sqlite3_column_text(stmt, 1));
442 m_list->item[i].packagename = NULL;
444 buffer_length = strlen(buffer);
445 m_list->item[i].packagename
446 = (char *)calloc(buffer_length + 1, sizeof(char));
447 memcpy(m_list->item[i].packagename, buffer,
448 buffer_length * sizeof(char));
449 m_list->item[i].packagename[buffer_length] = '\0';
451 m_list->item[i].notification = sqlite3_column_int(stmt, 2);
452 buffer = (char *)(sqlite3_column_text(stmt, 3));
453 m_list->item[i].installpath = NULL;
455 buffer_length = strlen(buffer);
456 m_list->item[i].installpath
457 = (char *)calloc(buffer_length + 1, sizeof(char));
458 memcpy(m_list->item[i].installpath, buffer,
459 buffer_length * sizeof(char));
460 m_list->item[i].installpath[buffer_length] = '\0';
462 buffer = (char *)(sqlite3_column_text(stmt, 4));
463 m_list->item[i].filename = NULL;
465 buffer_length = strlen(buffer);
466 m_list->item[i].filename
467 = (char *)calloc(buffer_length + 1, sizeof(char));
468 memcpy(m_list->item[i].filename, buffer,
469 buffer_length * sizeof(char));
470 m_list->item[i].filename[buffer_length] = '\0';
472 buffer = (char *)(sqlite3_column_text(stmt, 5));
473 m_list->item[i].createdate = NULL;
475 buffer_length = strlen(buffer);
476 m_list->item[i].createdate
477 = (char *)calloc(buffer_length + 1, sizeof(char));
478 memcpy(m_list->item[i].createdate, buffer,
479 buffer_length * sizeof(char));
480 m_list->item[i].createdate[buffer_length] = '\0';
482 m_list->item[i].state = sqlite3_column_int(stmt, 6);
483 buffer = (char *)(sqlite3_column_text(stmt, 7));
484 m_list->item[i].url = NULL;
486 buffer_length = strlen(buffer);
488 = (char *)calloc(buffer_length + 1, sizeof(char));
489 memcpy(m_list->item[i].url, buffer,
490 buffer_length * sizeof(char));
491 m_list->item[i].url[buffer_length] = '\0';
493 buffer = (char *)(sqlite3_column_text(stmt, 8));
494 m_list->item[i].mimetype = NULL;
496 buffer_length = strlen(buffer);
497 m_list->item[i].mimetype
498 = (char *)calloc(buffer_length + 1, sizeof(char));
499 memcpy(m_list->item[i].mimetype, buffer,
500 buffer_length * sizeof(char));
501 m_list->item[i].mimetype[buffer_length] = '\0';
503 buffer = (char *)(sqlite3_column_text(stmt, 9));
504 m_list->item[i].saved_path = NULL;
506 buffer_length = strlen(buffer);
507 m_list->item[i].saved_path
508 = (char *)calloc(buffer_length + 1, sizeof(char));
509 memcpy(m_list->item[i].saved_path, buffer,
510 buffer_length * sizeof(char));
511 m_list->item[i].saved_path[buffer_length] = '\0';
518 TRACE_DEBUG_MSG("sqlite3_step is failed. [%s]",
519 sqlite3_errmsg(g_download_provider_db));
520 __download_provider_db_close();
521 download_provider_db_list_free(m_list);
524 _download_provider_sql_close(stmt);
528 int download_provider_db_list_count(int state)
534 if (_download_provider_sql_open() < 0) {
535 TRACE_DEBUG_MSG("db_util_open is failed [%s]",
536 sqlite3_errmsg(g_download_provider_db));
540 if (state != DOWNLOAD_STATE_NONE) {
542 sqlite3_prepare_v2(g_download_provider_db,
543 "SELECT count(*) FROM downloading WHERE state = ?",
545 if (errorcode != SQLITE_OK) {
546 TRACE_DEBUG_MSG("sqlite3_prepare_v2 is failed. [%s]",
547 sqlite3_errmsg(g_download_provider_db));
548 _download_provider_sql_close(stmt);
551 if (sqlite3_bind_int(stmt, 1, state) != SQLITE_OK) {
552 TRACE_DEBUG_MSG("sqlite3_bind_int is failed. [%s]",
553 sqlite3_errmsg(g_download_provider_db));
554 _download_provider_sql_close(stmt);
559 sqlite3_prepare_v2(g_download_provider_db,
560 "SELECT count(*) FROM downloading",
562 if (errorcode != SQLITE_OK) {
563 TRACE_DEBUG_MSG("sqlite3_prepare_v2 is failed. [%s]",
564 sqlite3_errmsg(g_download_provider_db));
565 _download_provider_sql_close(stmt);
569 errorcode = sqlite3_step(stmt);
570 if (errorcode == SQLITE_ROW) {
571 count = sqlite3_column_int(stmt, 0);
572 _download_provider_sql_close(stmt);
575 TRACE_DEBUG_MSG("sqlite3_step is failed. [%s]",
576 sqlite3_errmsg(g_download_provider_db));
577 __download_provider_db_close();
581 void download_provider_db_list_free(download_dbinfo_list *list)
589 if (list->count > 0 && list->item) {
590 for (i = 0; i < list->count; i++) {
591 list->item[i].requestid = 0;
592 if (list->item[i].packagename)
593 free(list->item[i].packagename);
594 list->item[i].packagename = NULL;
595 if (list->item[i].installpath)
596 free(list->item[i].installpath);
597 list->item[i].installpath = NULL;
598 if (list->item[i].filename)
599 free(list->item[i].filename);
600 list->item[i].filename = NULL;
601 if (list->item[i].createdate)
602 free(list->item[i].createdate);
603 list->item[i].createdate = NULL;
604 if (list->item[i].url)
605 free(list->item[i].url);
606 list->item[i].url = NULL;
607 if (list->item[i].mimetype)
608 free(list->item[i].mimetype);
609 list->item[i].mimetype = NULL;
610 if (list->item[i].etag)
611 free(list->item[i].etag);
612 list->item[i].etag = NULL;
613 if (list->item[i].saved_path)
614 free(list->item[i].saved_path);
615 list->item[i].saved_path = NULL;
624 download_request_info *download_provider_db_get_requestinfo(download_dbinfo *dbinfo)
626 if (!dbinfo || dbinfo->requestid <= 0)
629 download_request_info *requestinfo =
630 (download_request_info *) calloc(1, sizeof(download_request_info));
631 requestinfo->requestid = dbinfo->requestid;
632 if (dbinfo->packagename) {
633 requestinfo->client_packagename.length =
634 strlen(dbinfo->packagename);
635 if (requestinfo->client_packagename.length > 0) {
636 requestinfo->client_packagename.str
639 calloc((requestinfo->client_packagename.length + 1),
641 memcpy(requestinfo->client_packagename.str,
643 requestinfo->client_packagename.length *
645 requestinfo->client_packagename.str[requestinfo->
651 requestinfo->url.length = strlen(dbinfo->url);
652 if (requestinfo->url.length > 0) {
655 (char *)calloc((requestinfo->url.length + 1),
657 memcpy(requestinfo->url.str, dbinfo->url,
658 requestinfo->url.length * sizeof(char));
659 requestinfo->url.str[requestinfo->url.length] = '\0';
662 if (dbinfo->installpath) {
663 requestinfo->install_path.length = strlen(dbinfo->installpath);
664 if (requestinfo->install_path.length > 0) {
665 requestinfo->install_path.str
668 calloc((requestinfo->install_path.length + 1),
670 memcpy(requestinfo->install_path.str,
672 requestinfo->install_path.length * sizeof(char));
673 requestinfo->install_path.str[requestinfo->install_path.
677 if (dbinfo->filename) {
678 requestinfo->filename.length = strlen(dbinfo->filename);
679 if (requestinfo->filename.length > 0) {
680 requestinfo->filename.str
682 (char *)calloc((requestinfo->filename.length + 1),
684 memcpy(requestinfo->filename.str, dbinfo->filename,
685 requestinfo->filename.length * sizeof(char));
686 requestinfo->filename.str[requestinfo->filename.
691 memset(&requestinfo->callbackinfo, 0x00, sizeof(callback_info));
692 requestinfo->notification = dbinfo->notification;
696 int download_provider_db_history_new(download_clientinfo *clientinfo)
701 if (!clientinfo || !clientinfo->requestinfo
702 || clientinfo->requestinfo->requestid <= 0) {
703 TRACE_DEBUG_MSG("[NULL-CHECK]");
707 if (_download_provider_sql_open() < 0) {
708 TRACE_DEBUG_MSG("db_util_open is failed [%s]",
709 sqlite3_errmsg(g_download_provider_db));
714 sqlite3_prepare_v2(g_download_provider_db,
715 "INSERT INTO history (uniqueid, packagename, filename, creationdate, state, mimetype, savedpath) VALUES (?, ?, ?, DATETIME('now'), ?, ?, ?)",
717 if (errorcode != SQLITE_OK) {
718 TRACE_DEBUG_MSG("sqlite3_prepare_v2 is failed. [%s]",
719 sqlite3_errmsg(g_download_provider_db));
720 _download_provider_sql_close(stmt);
723 if (sqlite3_bind_int(stmt, 1, clientinfo->requestinfo->requestid) !=
725 TRACE_DEBUG_MSG("sqlite3_bind_int is failed. [%s]",
726 sqlite3_errmsg(g_download_provider_db));
727 _download_provider_sql_close(stmt);
730 if (clientinfo->requestinfo->client_packagename.length > 0) {
731 if (sqlite3_bind_text
732 (stmt, 2, clientinfo->requestinfo->client_packagename.str,
733 -1, NULL) != SQLITE_OK) {
734 TRACE_DEBUG_MSG("sqlite3_bind_text is failed. [%s]",
735 sqlite3_errmsg(g_download_provider_db));
736 _download_provider_sql_close(stmt);
740 if (clientinfo->downloadinfo && clientinfo->downloadinfo->content_name) {
741 if (sqlite3_bind_text
742 (stmt, 3, clientinfo->downloadinfo->content_name, -1,
743 NULL) != SQLITE_OK) {
744 TRACE_DEBUG_MSG("sqlite3_bind_text is failed. [%s]",
745 sqlite3_errmsg(g_download_provider_db));
746 _download_provider_sql_close(stmt);
750 if (sqlite3_bind_int(stmt, 4, clientinfo->state) != SQLITE_OK) {
751 TRACE_DEBUG_MSG("sqlite3_bind_int is failed. [%s]",
752 sqlite3_errmsg(g_download_provider_db));
753 _download_provider_sql_close(stmt);
756 if (clientinfo->downloadinfo && clientinfo->downloadinfo->mime_type) {
757 if (sqlite3_bind_text
758 (stmt, 5, clientinfo->downloadinfo->mime_type, -1,
759 NULL) != SQLITE_OK) {
760 TRACE_DEBUG_MSG("sqlite3_bind_text is failed. [%s]",
761 sqlite3_errmsg(g_download_provider_db));
762 _download_provider_sql_close(stmt);
766 if (clientinfo->tmp_saved_path) {
767 if (sqlite3_bind_text
768 (stmt, 6, clientinfo->tmp_saved_path, -1,
769 NULL) != SQLITE_OK) {
770 TRACE_DEBUG_MSG("sqlite3_bind_text is failed. [%s]",
771 sqlite3_errmsg(g_download_provider_db));
772 _download_provider_sql_close(stmt);
776 errorcode = sqlite3_step(stmt);
777 if (errorcode == SQLITE_OK || errorcode == SQLITE_DONE) {
778 _download_provider_sql_close(stmt);
779 download_provider_db_history_limit_rows();
782 TRACE_DEBUG_MSG("sqlite3_step is failed [%s]",
783 sqlite3_errmsg(g_download_provider_db));
784 __download_provider_db_close();
788 int download_provider_db_history_remove(int uniqueid)
794 TRACE_DEBUG_MSG("[NULL-CHECK]");
798 if (_download_provider_sql_open() < 0) {
799 TRACE_DEBUG_MSG("db_util_open is failed [%s]",
800 sqlite3_errmsg(g_download_provider_db));
805 sqlite3_prepare_v2(g_download_provider_db,
806 "delete from history where uniqueid = ?",
808 if (errorcode != SQLITE_OK) {
809 TRACE_DEBUG_MSG("sqlite3_prepare_v2 is failed. [%s]",
810 sqlite3_errmsg(g_download_provider_db));
811 _download_provider_sql_close(stmt);
814 if (sqlite3_bind_int(stmt, 1, uniqueid) != SQLITE_OK) {
815 TRACE_DEBUG_MSG("sqlite3_bind_int is failed. [%s]",
816 sqlite3_errmsg(g_download_provider_db));
817 _download_provider_sql_close(stmt);
820 errorcode = sqlite3_step(stmt);
821 if (errorcode == SQLITE_OK || errorcode == SQLITE_DONE) {
822 _download_provider_sql_close(stmt);
825 TRACE_DEBUG_MSG("sqlite3_step is failed [%s]",
826 sqlite3_errmsg(g_download_provider_db));
827 __download_provider_db_close();
831 int download_provider_db_history_limit_rows()
836 if (_download_provider_sql_open() < 0) {
837 TRACE_DEBUG_MSG("db_util_open is failed [%s]",
838 sqlite3_errmsg(g_download_provider_db));
843 sqlite3_prepare_v2(g_download_provider_db,
844 "DELETE FROM history where uniqueid NOT IN (SELECT uniqueid FROM history ORDER BY id DESC LIMIT ?)",
846 if (errorcode != SQLITE_OK) {
847 TRACE_DEBUG_MSG("sqlite3_prepare_v2 is failed. [%s]",
848 sqlite3_errmsg(g_download_provider_db));
849 _download_provider_sql_close(stmt);
852 if (sqlite3_bind_int(stmt, 1, DOWNLOAD_PROVIDER_HISTORY_DB_LIMIT_ROWS)
854 TRACE_DEBUG_MSG("sqlite3_bind_int is failed. [%s]",
855 sqlite3_errmsg(g_download_provider_db));
856 _download_provider_sql_close(stmt);
859 errorcode = sqlite3_step(stmt);
860 if (errorcode == SQLITE_OK || errorcode == SQLITE_DONE) {
861 _download_provider_sql_close(stmt);
864 TRACE_DEBUG_MSG("sqlite3_step is failed [%s]",
865 sqlite3_errmsg(g_download_provider_db));
866 __download_provider_db_close();