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;
613 void download_provider_db_list_free(download_dbinfo_list *list)
619 if (list->count > 0 && list->item) {
620 for (i = 0; i < list->count; i++)
621 download_provider_db_info_free(&list->item[i]);
630 download_dbinfo *download_provider_db_get_info(int requestid)
636 int buffer_length = 0;
637 sqlite3_stmt *stmt = NULL;
639 download_dbinfo *dbinfo = NULL;
641 if (_download_provider_sql_open() < 0) {
642 TRACE_DEBUG_MSG("db_util_open is failed [%s]",
643 sqlite3_errmsg(g_download_provider_db));
648 sqlite3_prepare_v2(g_download_provider_db,
649 "SELECT uniqueid, packagename, notification, installpath, filename, creationdate, state, url, mimetype, savedpath FROM downloading WHERE uniqueid = ?",
651 if (errorcode != SQLITE_OK) {
652 TRACE_DEBUG_MSG("sqlite3_prepare_v2 is failed. [%s]",
653 sqlite3_errmsg(g_download_provider_db));
654 _download_provider_sql_close(stmt);
657 if (sqlite3_bind_int(stmt, 1, requestid) != SQLITE_OK) {
658 TRACE_DEBUG_MSG("sqlite3_bind_int is failed. [%s]",
659 sqlite3_errmsg(g_download_provider_db));
660 _download_provider_sql_close(stmt);
664 if ((errorcode = sqlite3_step(stmt)) == SQLITE_ROW) {
665 dbinfo = (download_dbinfo *) calloc(1, sizeof(download_dbinfo));
666 dbinfo->requestid = sqlite3_column_int(stmt, 0);
667 buffer = (char *)(sqlite3_column_text(stmt, 1));
668 dbinfo->packagename = NULL;
670 buffer_length = strlen(buffer);
672 = (char *)calloc(buffer_length + 1, sizeof(char));
673 memcpy(dbinfo->packagename, buffer,
674 buffer_length * sizeof(char));
675 dbinfo->packagename[buffer_length] = '\0';
677 dbinfo->notification = sqlite3_column_int(stmt, 2);
678 buffer = (char *)(sqlite3_column_text(stmt, 3));
679 dbinfo->installpath = NULL;
681 buffer_length = strlen(buffer);
683 = (char *)calloc(buffer_length + 1, sizeof(char));
684 memcpy(dbinfo->installpath, buffer,
685 buffer_length * sizeof(char));
686 dbinfo->installpath[buffer_length] = '\0';
688 buffer = (char *)(sqlite3_column_text(stmt, 4));
689 dbinfo->filename = NULL;
691 buffer_length = strlen(buffer);
693 = (char *)calloc(buffer_length + 1, sizeof(char));
694 memcpy(dbinfo->filename, buffer,
695 buffer_length * sizeof(char));
696 dbinfo->filename[buffer_length] = '\0';
698 buffer = (char *)(sqlite3_column_text(stmt, 5));
699 dbinfo->createdate = NULL;
701 buffer_length = strlen(buffer);
703 = (char *)calloc(buffer_length + 1, sizeof(char));
704 memcpy(dbinfo->createdate, buffer,
705 buffer_length * sizeof(char));
706 dbinfo->createdate[buffer_length] = '\0';
708 dbinfo->state = sqlite3_column_int(stmt, 6);
709 buffer = (char *)(sqlite3_column_text(stmt, 7));
712 buffer_length = strlen(buffer);
714 = (char *)calloc(buffer_length + 1, sizeof(char));
715 memcpy(dbinfo->url, buffer,
716 buffer_length * sizeof(char));
717 dbinfo->url[buffer_length] = '\0';
719 buffer = (char *)(sqlite3_column_text(stmt, 8));
720 dbinfo->mimetype = NULL;
722 buffer_length = strlen(buffer);
724 = (char *)calloc(buffer_length + 1, sizeof(char));
725 memcpy(dbinfo->mimetype, buffer,
726 buffer_length * sizeof(char));
727 dbinfo->mimetype[buffer_length] = '\0';
729 buffer = (char *)(sqlite3_column_text(stmt, 9));
730 dbinfo->saved_path = NULL;
732 buffer_length = strlen(buffer);
734 = (char *)calloc(buffer_length + 1, sizeof(char));
735 memcpy(dbinfo->saved_path, buffer,
736 buffer_length * sizeof(char));
737 dbinfo->saved_path[buffer_length] = '\0';
740 TRACE_DEBUG_MSG("sqlite3_step is failed. [%s] errorcode[%d]",
741 sqlite3_errmsg(g_download_provider_db), errorcode);
742 __download_provider_db_close();
743 download_provider_db_info_free(dbinfo);
747 _download_provider_sql_close(stmt);
751 download_request_info *download_provider_db_get_requestinfo(download_dbinfo *dbinfo)
753 if (!dbinfo || dbinfo->requestid <= 0)
756 download_request_info *requestinfo =
757 (download_request_info *) calloc(1, sizeof(download_request_info));
758 requestinfo->requestid = dbinfo->requestid;
759 if (dbinfo->packagename) {
760 requestinfo->client_packagename.length =
761 strlen(dbinfo->packagename);
762 if (requestinfo->client_packagename.length > 1) {
763 requestinfo->client_packagename.str
766 calloc((requestinfo->client_packagename.length + 1),
768 memcpy(requestinfo->client_packagename.str,
770 requestinfo->client_packagename.length *
772 requestinfo->client_packagename.str[requestinfo->
778 requestinfo->url.length = strlen(dbinfo->url);
779 if (requestinfo->url.length > 1) {
782 (char *)calloc((requestinfo->url.length + 1),
784 memcpy(requestinfo->url.str, dbinfo->url,
785 requestinfo->url.length * sizeof(char));
786 requestinfo->url.str[requestinfo->url.length] = '\0';
789 if (dbinfo->installpath) {
790 requestinfo->install_path.length = strlen(dbinfo->installpath);
791 if (requestinfo->install_path.length > 1) {
792 requestinfo->install_path.str
795 calloc((requestinfo->install_path.length + 1),
797 memcpy(requestinfo->install_path.str,
799 requestinfo->install_path.length * sizeof(char));
800 requestinfo->install_path.str[requestinfo->install_path.
804 if (dbinfo->filename) {
805 requestinfo->filename.length = strlen(dbinfo->filename);
806 if (requestinfo->filename.length > 1) {
807 requestinfo->filename.str
809 (char *)calloc((requestinfo->filename.length + 1),
811 memcpy(requestinfo->filename.str, dbinfo->filename,
812 requestinfo->filename.length * sizeof(char));
813 requestinfo->filename.str[requestinfo->filename.
818 memset(&requestinfo->callbackinfo, 0x00, sizeof(callback_info));
819 requestinfo->notification = dbinfo->notification;
823 int download_provider_db_history_new(download_clientinfo *clientinfo)
826 sqlite3_stmt *stmt = NULL;
828 if (!clientinfo || !clientinfo->requestinfo
829 || clientinfo->requestinfo->requestid <= 0) {
830 TRACE_DEBUG_MSG("[NULL-CHECK]");
834 if (_download_provider_sql_open() < 0) {
835 TRACE_DEBUG_MSG("db_util_open is failed [%s]",
836 sqlite3_errmsg(g_download_provider_db));
841 sqlite3_prepare_v2(g_download_provider_db,
842 "INSERT INTO history (uniqueid, packagename, filename, creationdate, state, mimetype, savedpath) VALUES (?, ?, ?, DATETIME('now'), ?, ?, ?)",
844 if (errorcode != SQLITE_OK) {
845 TRACE_DEBUG_MSG("sqlite3_prepare_v2 is failed. [%s]",
846 sqlite3_errmsg(g_download_provider_db));
847 _download_provider_sql_close(stmt);
850 if (sqlite3_bind_int(stmt, 1, clientinfo->requestinfo->requestid) !=
852 TRACE_DEBUG_MSG("sqlite3_bind_int is failed. [%s]",
853 sqlite3_errmsg(g_download_provider_db));
854 _download_provider_sql_close(stmt);
857 if (clientinfo->requestinfo->client_packagename.length > 1) {
858 if (sqlite3_bind_text
859 (stmt, 2, clientinfo->requestinfo->client_packagename.str,
860 -1, NULL) != SQLITE_OK) {
861 TRACE_DEBUG_MSG("sqlite3_bind_text is failed. [%s]",
862 sqlite3_errmsg(g_download_provider_db));
863 _download_provider_sql_close(stmt);
867 if (clientinfo->downloadinfo && sizeof(clientinfo->downloadinfo->content_name) > 1) {
868 if (sqlite3_bind_text
869 (stmt, 3, clientinfo->downloadinfo->content_name, -1,
870 NULL) != SQLITE_OK) {
871 TRACE_DEBUG_MSG("sqlite3_bind_text is failed. [%s]",
872 sqlite3_errmsg(g_download_provider_db));
873 _download_provider_sql_close(stmt);
877 if (sqlite3_bind_int(stmt, 4, clientinfo->state) != SQLITE_OK) {
878 TRACE_DEBUG_MSG("sqlite3_bind_int is failed. [%s]",
879 sqlite3_errmsg(g_download_provider_db));
880 _download_provider_sql_close(stmt);
883 if (clientinfo->downloadinfo && sizeof(clientinfo->downloadinfo->mime_type) > 1) {
884 if (sqlite3_bind_text
885 (stmt, 5, clientinfo->downloadinfo->mime_type, -1,
886 NULL) != SQLITE_OK) {
887 TRACE_DEBUG_MSG("sqlite3_bind_text is failed. [%s]",
888 sqlite3_errmsg(g_download_provider_db));
889 _download_provider_sql_close(stmt);
893 if (clientinfo->tmp_saved_path) {
894 if (sqlite3_bind_text
895 (stmt, 6, clientinfo->tmp_saved_path, -1,
896 NULL) != SQLITE_OK) {
897 TRACE_DEBUG_MSG("sqlite3_bind_text is failed. [%s]",
898 sqlite3_errmsg(g_download_provider_db));
899 _download_provider_sql_close(stmt);
903 errorcode = sqlite3_step(stmt);
904 if (errorcode == SQLITE_OK || errorcode == SQLITE_DONE) {
905 _download_provider_sql_close(stmt);
906 download_provider_db_history_limit_rows();
909 TRACE_DEBUG_MSG("sqlite3_step is failed [%s]",
910 sqlite3_errmsg(g_download_provider_db));
911 __download_provider_db_close();
915 int download_provider_db_history_remove(int uniqueid)
918 sqlite3_stmt *stmt = NULL;
921 TRACE_DEBUG_MSG("[NULL-CHECK]");
925 if (_download_provider_sql_open() < 0) {
926 TRACE_DEBUG_MSG("db_util_open is failed [%s]",
927 sqlite3_errmsg(g_download_provider_db));
932 sqlite3_prepare_v2(g_download_provider_db,
933 "delete from history where uniqueid = ?",
935 if (errorcode != SQLITE_OK) {
936 TRACE_DEBUG_MSG("sqlite3_prepare_v2 is failed. [%s]",
937 sqlite3_errmsg(g_download_provider_db));
938 _download_provider_sql_close(stmt);
941 if (sqlite3_bind_int(stmt, 1, uniqueid) != SQLITE_OK) {
942 TRACE_DEBUG_MSG("sqlite3_bind_int is failed. [%s]",
943 sqlite3_errmsg(g_download_provider_db));
944 _download_provider_sql_close(stmt);
947 errorcode = sqlite3_step(stmt);
948 if (errorcode == SQLITE_OK || errorcode == SQLITE_DONE) {
949 _download_provider_sql_close(stmt);
952 TRACE_DEBUG_MSG("sqlite3_step is failed [%s]",
953 sqlite3_errmsg(g_download_provider_db));
954 __download_provider_db_close();
958 int download_provider_db_history_limit_rows()
961 sqlite3_stmt *stmt = NULL;
963 if (_download_provider_sql_open() < 0) {
964 TRACE_DEBUG_MSG("db_util_open is failed [%s]",
965 sqlite3_errmsg(g_download_provider_db));
970 sqlite3_prepare_v2(g_download_provider_db,
971 "DELETE FROM history where uniqueid NOT IN (SELECT uniqueid FROM history ORDER BY id DESC LIMIT ?)",
973 if (errorcode != SQLITE_OK) {
974 TRACE_DEBUG_MSG("sqlite3_prepare_v2 is failed. [%s]",
975 sqlite3_errmsg(g_download_provider_db));
976 _download_provider_sql_close(stmt);
979 if (sqlite3_bind_int(stmt, 1, DOWNLOAD_PROVIDER_HISTORY_DB_LIMIT_ROWS)
981 TRACE_DEBUG_MSG("sqlite3_bind_int is failed. [%s]",
982 sqlite3_errmsg(g_download_provider_db));
983 _download_provider_sql_close(stmt);
986 errorcode = sqlite3_step(stmt);
987 if (errorcode == SQLITE_OK || errorcode == SQLITE_DONE) {
988 _download_provider_sql_close(stmt);
991 TRACE_DEBUG_MSG("sqlite3_step is failed [%s]",
992 sqlite3_errmsg(g_download_provider_db));
993 __download_provider_db_close();
997 download_dbinfo *download_provider_db_history_get_info(int requestid)
1003 int buffer_length = 0;
1004 sqlite3_stmt *stmt = NULL;
1005 char *buffer = NULL;
1006 download_dbinfo *dbinfo = NULL;
1008 if (_download_provider_sql_open() < 0) {
1009 TRACE_DEBUG_MSG("db_util_open is failed [%s]",
1010 sqlite3_errmsg(g_download_provider_db));
1015 sqlite3_prepare_v2(g_download_provider_db,
1016 "SELECT packagename, filename, creationdate, state, mimetype, savedpath FROM history WHERE uniqueid = ?",
1018 if (errorcode != SQLITE_OK) {
1019 TRACE_DEBUG_MSG("sqlite3_prepare_v2 is failed. [%s]",
1020 sqlite3_errmsg(g_download_provider_db));
1021 _download_provider_sql_close(stmt);
1024 if (sqlite3_bind_int(stmt, 1, requestid) != SQLITE_OK) {
1025 TRACE_DEBUG_MSG("sqlite3_bind_int is failed. [%s]",
1026 sqlite3_errmsg(g_download_provider_db));
1027 _download_provider_sql_close(stmt);
1031 if ((errorcode = sqlite3_step(stmt)) == SQLITE_ROW) {
1032 dbinfo = (download_dbinfo *) calloc(1, sizeof(download_dbinfo));
1033 dbinfo->requestid = requestid;
1034 buffer = (char *)(sqlite3_column_text(stmt, 0));
1035 dbinfo->packagename = NULL;
1037 buffer_length = strlen(buffer);
1039 = (char *)calloc(buffer_length + 1, sizeof(char));
1040 memcpy(dbinfo->packagename, buffer,
1041 buffer_length * sizeof(char));
1042 dbinfo->packagename[buffer_length] = '\0';
1044 buffer = (char *)(sqlite3_column_text(stmt, 1));
1045 dbinfo->filename = NULL;
1047 buffer_length = strlen(buffer);
1049 = (char *)calloc(buffer_length + 1, sizeof(char));
1050 memcpy(dbinfo->filename, buffer,
1051 buffer_length * sizeof(char));
1052 dbinfo->filename[buffer_length] = '\0';
1054 buffer = (char *)(sqlite3_column_text(stmt, 2));
1055 dbinfo->createdate = NULL;
1057 buffer_length = strlen(buffer);
1059 = (char *)calloc(buffer_length + 1, sizeof(char));
1060 memcpy(dbinfo->createdate, buffer,
1061 buffer_length * sizeof(char));
1062 dbinfo->createdate[buffer_length] = '\0';
1064 dbinfo->state = sqlite3_column_int(stmt, 3);
1065 buffer = (char *)(sqlite3_column_text(stmt, 4));
1066 dbinfo->mimetype = NULL;
1068 buffer_length = strlen(buffer);
1070 = (char *)calloc(buffer_length + 1, sizeof(char));
1071 memcpy(dbinfo->mimetype, buffer,
1072 buffer_length * sizeof(char));
1073 dbinfo->mimetype[buffer_length] = '\0';
1075 buffer = (char *)(sqlite3_column_text(stmt, 5));
1076 dbinfo->saved_path = NULL;
1078 buffer_length = strlen(buffer);
1080 = (char *)calloc(buffer_length + 1, sizeof(char));
1081 memcpy(dbinfo->saved_path, buffer,
1082 buffer_length * sizeof(char));
1083 dbinfo->saved_path[buffer_length] = '\0';
1086 TRACE_DEBUG_MSG("sqlite3_step is failed. [%s] errorcode[%d]",
1087 sqlite3_errmsg(g_download_provider_db), errorcode);
1088 __download_provider_db_close();
1089 download_provider_db_info_free(dbinfo);
1093 _download_provider_sql_close(stmt);