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)
52 sqlite3_stmt *stmt = NULL;
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)
95 sqlite3_stmt *stmt = NULL;
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 > 1) {
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 && sizeof(clientinfo->downloadinfo->content_name) > 1) {
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 > 1) {
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 && sizeof(clientinfo->downloadinfo->mime_type) > 1) {
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)
205 sqlite3_stmt *stmt = NULL;
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 <= 1
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 || sizeof(clientinfo->downloadinfo->content_name) < 1) {
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;
390 sqlite3_stmt *stmt = NULL;
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)
532 sqlite3_stmt *stmt = NULL;
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_info_free(download_dbinfo *info)
587 if (info->packagename)
588 free(info->packagename);
589 info->packagename = NULL;
590 if (info->installpath)
591 free(info->installpath);
592 info->installpath = NULL;
594 free(info->filename);
595 info->filename = NULL;
596 if (info->createdate)
597 free(info->createdate);
598 info->createdate = NULL;
603 free(info->mimetype);
604 info->mimetype = NULL;
608 if (info->saved_path)
609 free(info->saved_path);
610 info->saved_path = NULL;
615 void download_provider_db_list_free(download_dbinfo_list *list)
623 if (list->count > 0 && list->item) {
624 for (i = 0; i < list->count; i++)
625 download_provider_db_info_free(&list->item[i]);
634 download_dbinfo *download_provider_db_get_info(int requestid)
640 int buffer_length = 0;
641 sqlite3_stmt *stmt = NULL;
643 download_dbinfo *dbinfo = NULL;
645 if (_download_provider_sql_open() < 0) {
646 TRACE_DEBUG_MSG("db_util_open is failed [%s]",
647 sqlite3_errmsg(g_download_provider_db));
652 sqlite3_prepare_v2(g_download_provider_db,
653 "SELECT uniqueid, packagename, notification, installpath, filename, creationdate, state, url, mimetype, savedpath FROM downloading WHERE uniqueid = ?",
655 if (errorcode != SQLITE_OK) {
656 TRACE_DEBUG_MSG("sqlite3_prepare_v2 is failed. [%s]",
657 sqlite3_errmsg(g_download_provider_db));
658 _download_provider_sql_close(stmt);
661 if (sqlite3_bind_int(stmt, 1, requestid) != SQLITE_OK) {
662 TRACE_DEBUG_MSG("sqlite3_bind_int is failed. [%s]",
663 sqlite3_errmsg(g_download_provider_db));
664 _download_provider_sql_close(stmt);
668 if ((errorcode = sqlite3_step(stmt)) == SQLITE_ROW) {
669 dbinfo = (download_dbinfo *) calloc(1, sizeof(download_dbinfo));
670 dbinfo->requestid = sqlite3_column_int(stmt, 0);
671 buffer = (char *)(sqlite3_column_text(stmt, 1));
672 dbinfo->packagename = NULL;
674 buffer_length = strlen(buffer);
676 = (char *)calloc(buffer_length + 1, sizeof(char));
677 memcpy(dbinfo->packagename, buffer,
678 buffer_length * sizeof(char));
679 dbinfo->packagename[buffer_length] = '\0';
681 dbinfo->notification = sqlite3_column_int(stmt, 2);
682 buffer = (char *)(sqlite3_column_text(stmt, 3));
683 dbinfo->installpath = NULL;
685 buffer_length = strlen(buffer);
687 = (char *)calloc(buffer_length + 1, sizeof(char));
688 memcpy(dbinfo->installpath, buffer,
689 buffer_length * sizeof(char));
690 dbinfo->installpath[buffer_length] = '\0';
692 buffer = (char *)(sqlite3_column_text(stmt, 4));
693 dbinfo->filename = NULL;
695 buffer_length = strlen(buffer);
697 = (char *)calloc(buffer_length + 1, sizeof(char));
698 memcpy(dbinfo->filename, buffer,
699 buffer_length * sizeof(char));
700 dbinfo->filename[buffer_length] = '\0';
702 buffer = (char *)(sqlite3_column_text(stmt, 5));
703 dbinfo->createdate = NULL;
705 buffer_length = strlen(buffer);
707 = (char *)calloc(buffer_length + 1, sizeof(char));
708 memcpy(dbinfo->createdate, buffer,
709 buffer_length * sizeof(char));
710 dbinfo->createdate[buffer_length] = '\0';
712 dbinfo->state = sqlite3_column_int(stmt, 6);
713 buffer = (char *)(sqlite3_column_text(stmt, 7));
716 buffer_length = strlen(buffer);
718 = (char *)calloc(buffer_length + 1, sizeof(char));
719 memcpy(dbinfo->url, buffer,
720 buffer_length * sizeof(char));
721 dbinfo->url[buffer_length] = '\0';
723 buffer = (char *)(sqlite3_column_text(stmt, 8));
724 dbinfo->mimetype = NULL;
726 buffer_length = strlen(buffer);
728 = (char *)calloc(buffer_length + 1, sizeof(char));
729 memcpy(dbinfo->mimetype, buffer,
730 buffer_length * sizeof(char));
731 dbinfo->mimetype[buffer_length] = '\0';
733 buffer = (char *)(sqlite3_column_text(stmt, 9));
734 dbinfo->saved_path = NULL;
736 buffer_length = strlen(buffer);
738 = (char *)calloc(buffer_length + 1, sizeof(char));
739 memcpy(dbinfo->saved_path, buffer,
740 buffer_length * sizeof(char));
741 dbinfo->saved_path[buffer_length] = '\0';
744 TRACE_DEBUG_MSG("sqlite3_step is failed. [%s] errorcode[%d]",
745 sqlite3_errmsg(g_download_provider_db), errorcode);
746 __download_provider_db_close();
747 download_provider_db_info_free(dbinfo);
750 _download_provider_sql_close(stmt);
754 download_request_info *download_provider_db_get_requestinfo(download_dbinfo *dbinfo)
756 if (!dbinfo || dbinfo->requestid <= 0)
759 download_request_info *requestinfo =
760 (download_request_info *) calloc(1, sizeof(download_request_info));
761 requestinfo->requestid = dbinfo->requestid;
762 if (dbinfo->packagename) {
763 requestinfo->client_packagename.length =
764 strlen(dbinfo->packagename);
765 if (requestinfo->client_packagename.length > 1) {
766 requestinfo->client_packagename.str
769 calloc((requestinfo->client_packagename.length + 1),
771 memcpy(requestinfo->client_packagename.str,
773 requestinfo->client_packagename.length *
775 requestinfo->client_packagename.str[requestinfo->
781 requestinfo->url.length = strlen(dbinfo->url);
782 if (requestinfo->url.length > 1) {
785 (char *)calloc((requestinfo->url.length + 1),
787 memcpy(requestinfo->url.str, dbinfo->url,
788 requestinfo->url.length * sizeof(char));
789 requestinfo->url.str[requestinfo->url.length] = '\0';
792 if (dbinfo->installpath) {
793 requestinfo->install_path.length = strlen(dbinfo->installpath);
794 if (requestinfo->install_path.length > 1) {
795 requestinfo->install_path.str
798 calloc((requestinfo->install_path.length + 1),
800 memcpy(requestinfo->install_path.str,
802 requestinfo->install_path.length * sizeof(char));
803 requestinfo->install_path.str[requestinfo->install_path.
807 if (dbinfo->filename) {
808 requestinfo->filename.length = strlen(dbinfo->filename);
809 if (requestinfo->filename.length > 1) {
810 requestinfo->filename.str
812 (char *)calloc((requestinfo->filename.length + 1),
814 memcpy(requestinfo->filename.str, dbinfo->filename,
815 requestinfo->filename.length * sizeof(char));
816 requestinfo->filename.str[requestinfo->filename.
821 memset(&requestinfo->callbackinfo, 0x00, sizeof(callback_info));
822 requestinfo->notification = dbinfo->notification;
826 int download_provider_db_history_new(download_clientinfo *clientinfo)
829 sqlite3_stmt *stmt = NULL;
831 if (!clientinfo || !clientinfo->requestinfo
832 || clientinfo->requestinfo->requestid <= 0) {
833 TRACE_DEBUG_MSG("[NULL-CHECK]");
837 if (_download_provider_sql_open() < 0) {
838 TRACE_DEBUG_MSG("db_util_open is failed [%s]",
839 sqlite3_errmsg(g_download_provider_db));
844 sqlite3_prepare_v2(g_download_provider_db,
845 "INSERT INTO history (uniqueid, packagename, filename, creationdate, state, mimetype, savedpath) VALUES (?, ?, ?, DATETIME('now'), ?, ?, ?)",
847 if (errorcode != SQLITE_OK) {
848 TRACE_DEBUG_MSG("sqlite3_prepare_v2 is failed. [%s]",
849 sqlite3_errmsg(g_download_provider_db));
850 _download_provider_sql_close(stmt);
853 if (sqlite3_bind_int(stmt, 1, clientinfo->requestinfo->requestid) !=
855 TRACE_DEBUG_MSG("sqlite3_bind_int is failed. [%s]",
856 sqlite3_errmsg(g_download_provider_db));
857 _download_provider_sql_close(stmt);
860 if (clientinfo->requestinfo->client_packagename.length > 1) {
861 if (sqlite3_bind_text
862 (stmt, 2, clientinfo->requestinfo->client_packagename.str,
863 -1, NULL) != SQLITE_OK) {
864 TRACE_DEBUG_MSG("sqlite3_bind_text is failed. [%s]",
865 sqlite3_errmsg(g_download_provider_db));
866 _download_provider_sql_close(stmt);
870 if (clientinfo->downloadinfo && sizeof(clientinfo->downloadinfo->content_name) > 1) {
871 if (sqlite3_bind_text
872 (stmt, 3, clientinfo->downloadinfo->content_name, -1,
873 NULL) != SQLITE_OK) {
874 TRACE_DEBUG_MSG("sqlite3_bind_text is failed. [%s]",
875 sqlite3_errmsg(g_download_provider_db));
876 _download_provider_sql_close(stmt);
880 if (sqlite3_bind_int(stmt, 4, clientinfo->state) != SQLITE_OK) {
881 TRACE_DEBUG_MSG("sqlite3_bind_int is failed. [%s]",
882 sqlite3_errmsg(g_download_provider_db));
883 _download_provider_sql_close(stmt);
886 if (clientinfo->downloadinfo && sizeof(clientinfo->downloadinfo->mime_type) > 1) {
887 if (sqlite3_bind_text
888 (stmt, 5, clientinfo->downloadinfo->mime_type, -1,
889 NULL) != SQLITE_OK) {
890 TRACE_DEBUG_MSG("sqlite3_bind_text is failed. [%s]",
891 sqlite3_errmsg(g_download_provider_db));
892 _download_provider_sql_close(stmt);
896 if (clientinfo->tmp_saved_path) {
897 if (sqlite3_bind_text
898 (stmt, 6, clientinfo->tmp_saved_path, -1,
899 NULL) != SQLITE_OK) {
900 TRACE_DEBUG_MSG("sqlite3_bind_text is failed. [%s]",
901 sqlite3_errmsg(g_download_provider_db));
902 _download_provider_sql_close(stmt);
906 errorcode = sqlite3_step(stmt);
907 if (errorcode == SQLITE_OK || errorcode == SQLITE_DONE) {
908 _download_provider_sql_close(stmt);
909 download_provider_db_history_limit_rows();
912 TRACE_DEBUG_MSG("sqlite3_step is failed [%s]",
913 sqlite3_errmsg(g_download_provider_db));
914 __download_provider_db_close();
918 int download_provider_db_history_remove(int uniqueid)
921 sqlite3_stmt *stmt = NULL;
924 TRACE_DEBUG_MSG("[NULL-CHECK]");
928 if (_download_provider_sql_open() < 0) {
929 TRACE_DEBUG_MSG("db_util_open is failed [%s]",
930 sqlite3_errmsg(g_download_provider_db));
935 sqlite3_prepare_v2(g_download_provider_db,
936 "delete from history where uniqueid = ?",
938 if (errorcode != SQLITE_OK) {
939 TRACE_DEBUG_MSG("sqlite3_prepare_v2 is failed. [%s]",
940 sqlite3_errmsg(g_download_provider_db));
941 _download_provider_sql_close(stmt);
944 if (sqlite3_bind_int(stmt, 1, uniqueid) != SQLITE_OK) {
945 TRACE_DEBUG_MSG("sqlite3_bind_int is failed. [%s]",
946 sqlite3_errmsg(g_download_provider_db));
947 _download_provider_sql_close(stmt);
950 errorcode = sqlite3_step(stmt);
951 if (errorcode == SQLITE_OK || errorcode == SQLITE_DONE) {
952 _download_provider_sql_close(stmt);
955 TRACE_DEBUG_MSG("sqlite3_step is failed [%s]",
956 sqlite3_errmsg(g_download_provider_db));
957 __download_provider_db_close();
961 int download_provider_db_history_limit_rows()
964 sqlite3_stmt *stmt = NULL;
966 if (_download_provider_sql_open() < 0) {
967 TRACE_DEBUG_MSG("db_util_open is failed [%s]",
968 sqlite3_errmsg(g_download_provider_db));
973 sqlite3_prepare_v2(g_download_provider_db,
974 "DELETE FROM history where uniqueid NOT IN (SELECT uniqueid FROM history ORDER BY id DESC LIMIT ?)",
976 if (errorcode != SQLITE_OK) {
977 TRACE_DEBUG_MSG("sqlite3_prepare_v2 is failed. [%s]",
978 sqlite3_errmsg(g_download_provider_db));
979 _download_provider_sql_close(stmt);
982 if (sqlite3_bind_int(stmt, 1, DOWNLOAD_PROVIDER_HISTORY_DB_LIMIT_ROWS)
984 TRACE_DEBUG_MSG("sqlite3_bind_int is failed. [%s]",
985 sqlite3_errmsg(g_download_provider_db));
986 _download_provider_sql_close(stmt);
989 errorcode = sqlite3_step(stmt);
990 if (errorcode == SQLITE_OK || errorcode == SQLITE_DONE) {
991 _download_provider_sql_close(stmt);
994 TRACE_DEBUG_MSG("sqlite3_step is failed [%s]",
995 sqlite3_errmsg(g_download_provider_db));
996 __download_provider_db_close();
1000 download_dbinfo *download_provider_db_history_get_info(int requestid)
1006 int buffer_length = 0;
1007 sqlite3_stmt *stmt = NULL;
1008 char *buffer = NULL;
1009 download_dbinfo *dbinfo = NULL;
1011 if (_download_provider_sql_open() < 0) {
1012 TRACE_DEBUG_MSG("db_util_open is failed [%s]",
1013 sqlite3_errmsg(g_download_provider_db));
1018 sqlite3_prepare_v2(g_download_provider_db,
1019 "SELECT uniqueid, packagename, notification, installpath, filename, creationdate, state, url, mimetype, savedpath FROM history WHERE uniqueid = ?",
1021 if (errorcode != SQLITE_OK) {
1022 TRACE_DEBUG_MSG("sqlite3_prepare_v2 is failed. [%s]",
1023 sqlite3_errmsg(g_download_provider_db));
1024 _download_provider_sql_close(stmt);
1027 if (sqlite3_bind_int(stmt, 1, requestid) != SQLITE_OK) {
1028 TRACE_DEBUG_MSG("sqlite3_bind_int is failed. [%s]",
1029 sqlite3_errmsg(g_download_provider_db));
1030 _download_provider_sql_close(stmt);
1034 if ((errorcode = sqlite3_step(stmt)) == SQLITE_ROW) {
1035 dbinfo = (download_dbinfo *) calloc(1, sizeof(download_dbinfo));
1036 dbinfo->requestid = sqlite3_column_int(stmt, 0);
1037 buffer = (char *)(sqlite3_column_text(stmt, 1));
1038 dbinfo->packagename = NULL;
1040 buffer_length = strlen(buffer);
1042 = (char *)calloc(buffer_length + 1, sizeof(char));
1043 memcpy(dbinfo->packagename, buffer,
1044 buffer_length * sizeof(char));
1045 dbinfo->packagename[buffer_length] = '\0';
1047 dbinfo->notification = sqlite3_column_int(stmt, 2);
1048 buffer = (char *)(sqlite3_column_text(stmt, 3));
1049 dbinfo->installpath = NULL;
1051 buffer_length = strlen(buffer);
1053 = (char *)calloc(buffer_length + 1, sizeof(char));
1054 memcpy(dbinfo->installpath, buffer,
1055 buffer_length * sizeof(char));
1056 dbinfo->installpath[buffer_length] = '\0';
1058 buffer = (char *)(sqlite3_column_text(stmt, 4));
1059 dbinfo->filename = NULL;
1061 buffer_length = strlen(buffer);
1063 = (char *)calloc(buffer_length + 1, sizeof(char));
1064 memcpy(dbinfo->filename, buffer,
1065 buffer_length * sizeof(char));
1066 dbinfo->filename[buffer_length] = '\0';
1068 buffer = (char *)(sqlite3_column_text(stmt, 5));
1069 dbinfo->createdate = NULL;
1071 buffer_length = strlen(buffer);
1073 = (char *)calloc(buffer_length + 1, sizeof(char));
1074 memcpy(dbinfo->createdate, buffer,
1075 buffer_length * sizeof(char));
1076 dbinfo->createdate[buffer_length] = '\0';
1078 dbinfo->state = sqlite3_column_int(stmt, 6);
1079 buffer = (char *)(sqlite3_column_text(stmt, 7));
1082 buffer_length = strlen(buffer);
1084 = (char *)calloc(buffer_length + 1, sizeof(char));
1085 memcpy(dbinfo->url, buffer,
1086 buffer_length * sizeof(char));
1087 dbinfo->url[buffer_length] = '\0';
1089 buffer = (char *)(sqlite3_column_text(stmt, 8));
1090 dbinfo->mimetype = NULL;
1092 buffer_length = strlen(buffer);
1094 = (char *)calloc(buffer_length + 1, sizeof(char));
1095 memcpy(dbinfo->mimetype, buffer,
1096 buffer_length * sizeof(char));
1097 dbinfo->mimetype[buffer_length] = '\0';
1099 buffer = (char *)(sqlite3_column_text(stmt, 9));
1100 dbinfo->saved_path = NULL;
1102 buffer_length = strlen(buffer);
1104 = (char *)calloc(buffer_length + 1, sizeof(char));
1105 memcpy(dbinfo->saved_path, buffer,
1106 buffer_length * sizeof(char));
1107 dbinfo->saved_path[buffer_length] = '\0';
1110 TRACE_DEBUG_MSG("sqlite3_step is failed. [%s] errorcode[%d]",
1111 sqlite3_errmsg(g_download_provider_db), errorcode);
1112 __download_provider_db_close();
1113 download_provider_db_info_free(dbinfo);
1116 _download_provider_sql_close(stmt);