From 87b7a8ddab91e0af70696494d0924723c5c50d33 Mon Sep 17 00:00:00 2001 From: Haejeong Kim Date: Thu, 17 Aug 2017 15:00:27 +0900 Subject: [PATCH] remove useless logic in dcm_scan_single Change-Id: I7bf87cb588a5ca6721d2cf2338a4295337aa9156 --- include/dcm_svc_db.h | 1 + src/dcm_svc_db.c | 72 ++++++++++++++++++++++++-------- src/dcm_svc_internal.c | 95 +++++++----------------------------------- 3 files changed, 71 insertions(+), 97 deletions(-) diff --git a/include/dcm_svc_db.h b/include/dcm_svc_db.h index 83c4e32..43e738d 100755 --- a/include/dcm_svc_db.h +++ b/include/dcm_svc_db.h @@ -63,6 +63,7 @@ typedef enum { int dcm_svc_db_connect(uid_t uid); int dcm_svc_db_disconnect(); +int dcm_svc_db_get_scan_image_info_by_path(const char *file_path, dcm_svc_item_s **scan_item); int dcm_svc_db_get_scan_image_list_by_path(GList **image_list, const char *file_path); int dcm_svc_db_get_scan_image_list_from_db(GList **image_list); int dcm_svc_db_insert_category_to_db(void *item); diff --git a/src/dcm_svc_db.c b/src/dcm_svc_db.c index 9883da3..10c16e8 100755 --- a/src/dcm_svc_db.c +++ b/src/dcm_svc_db.c @@ -203,6 +203,54 @@ int dcm_svc_db_disconnect(void) return MS_MEDIA_ERR_NONE; } +int dcm_svc_db_get_scan_image_info_by_path(const char *file_path, dcm_svc_item_s **scan_item) +{ + int ret = MS_MEDIA_ERR_NONE; + char *query_string = NULL; + sqlite3_stmt *sql_stmt = NULL; + dcm_svc_item_s *_item = NULL; + + dcm_debug_fenter(); + + DCM_CHECK_VAL(db_handle, MS_MEDIA_ERR_INVALID_PARAMETER); + DCM_CHECK_VAL(file_path, MS_MEDIA_ERR_INVALID_PARAMETER); + + /* Make query */ + query_string = sqlite3_mprintf(SELECT_MEDIA_INFO_BY_FILE_PATH_FROM_DB, file_path); + DCM_CHECK_VAL(query_string, MS_MEDIA_ERR_OUT_OF_MEMORY); + + ret = __dcm_svc_sql_prepare_to_step((sqlite3 *)db_handle, query_string, &sql_stmt); + dcm_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "Fail __dcm_svc_sql_prepare_to_step [%d]", ret); + + _item = (dcm_svc_item_s *) g_malloc0(sizeof(dcm_svc_item_s)); + if (_item == NULL) { + dcm_error("Failed to allocate memory for _item!"); + DCM_SQLITE3_FINALIZE(sql_stmt); + return MS_MEDIA_ERR_OUT_OF_MEMORY; + } + + _item->media_uuid = g_strdup((const char *)sqlite3_column_text(sql_stmt, 0)); + _item->file_path = g_strdup(file_path); + _item->storage_uuid = g_strdup((const char *)sqlite3_column_text(sql_stmt, 1)); + _item->image_width = sqlite3_column_int(sql_stmt, 2); + _item->image_height = sqlite3_column_int(sql_stmt, 3); + _item->image_orientation = sqlite3_column_int(sql_stmt, 4); + _item->mime_type = g_strdup((const char *)sqlite3_column_text(sql_stmt, 5)); + _item->modified_time = sqlite3_column_int(sql_stmt, 6); + + /* scan item retrieved by this function will be marked as SCAN_SINGLE */ + _item->scan_item_type = DCM_SCAN_ITEM_TYPE_SCAN_SINGLE; + + DCM_SQLITE3_FINALIZE(sql_stmt); + + dcm_sec_debug("media uuid: [%s] file path: [%s]", _item->media_uuid, _item->file_path); + + *scan_item = _item; + + dcm_debug_fleave(); + + return ret; +} int dcm_svc_db_get_scan_image_list_by_path(GList **image_list, const char *file_path) { @@ -232,15 +280,9 @@ int dcm_svc_db_get_scan_image_list_by_path(GList **image_list, const char *file_ continue; } - if (DCM_STRING_VALID((const char *)sqlite3_column_text(sql_stmt, 0))) - scan_item->media_uuid = strdup((const char *)sqlite3_column_text(sql_stmt, 0)); - - if (DCM_STRING_VALID(file_path)) - scan_item->file_path = strdup(file_path); - - if (DCM_STRING_VALID((const char *)sqlite3_column_text(sql_stmt, 1))) - scan_item->storage_uuid = strdup((const char *)sqlite3_column_text(sql_stmt, 1)); - + scan_item->media_uuid = g_strdup((const char *)sqlite3_column_text(sql_stmt, 0)); + scan_item->file_path = g_strdup(file_path); + scan_item->storage_uuid = g_strdup((const char *)sqlite3_column_text(sql_stmt, 1)); scan_item->image_width = sqlite3_column_int(sql_stmt, 2); scan_item->image_height = sqlite3_column_int(sql_stmt, 3); scan_item->image_orientation = sqlite3_column_int(sql_stmt, 4); @@ -290,15 +332,9 @@ int dcm_svc_db_get_scan_image_list_from_db(GList **image_list) continue; } - if (DCM_STRING_VALID((const char *)sqlite3_column_text(sql_stmt, 0))) - scan_item->media_uuid = strdup((const char *)sqlite3_column_text(sql_stmt, 0)); - - if (DCM_STRING_VALID((const char *)sqlite3_column_text(sql_stmt, 1))) - scan_item->file_path = strdup((const char *)sqlite3_column_text(sql_stmt, 1)); - - if (DCM_STRING_VALID((const char *)sqlite3_column_text(sql_stmt, 2))) - scan_item->storage_uuid = strdup((const char *)sqlite3_column_text(sql_stmt, 2)); - + scan_item->media_uuid = g_strdup((const char *)sqlite3_column_text(sql_stmt, 0)); + scan_item->file_path = g_strdup((const char *)sqlite3_column_text(sql_stmt, 1)); + scan_item->storage_uuid = g_strdup((const char *)sqlite3_column_text(sql_stmt, 2)); scan_item->image_width = sqlite3_column_int(sql_stmt, 3); scan_item->image_height = sqlite3_column_int(sql_stmt, 4); scan_item->image_orientation = sqlite3_column_int(sql_stmt, 5); diff --git a/src/dcm_svc_internal.c b/src/dcm_svc_internal.c index b8de13d..cd9b8c2 100755 --- a/src/dcm_svc_internal.c +++ b/src/dcm_svc_internal.c @@ -142,30 +142,6 @@ static int __dcm_scan_get_item_list(dcm_scan_s *data) return MS_MEDIA_ERR_NONE; } -static int __dcm_scan_get_item_list_by_path(const char *file_path, dcm_scan_s *data) -{ - int ret = MS_MEDIA_ERR_NONE; - - /* Get scan image list from db */ - ret = dcm_svc_db_get_scan_image_list_by_path(&(data->scan_single_item_list), file_path); - if (ret != MS_MEDIA_ERR_NONE) { - dcm_error("Failed to get image list from db! ret: %d", ret); - return ret; - } - - if (data->scan_single_item_list == NULL) { - dcm_debug("No image list for scanning"); - return MS_MEDIA_ERR_DB_NO_RECORD; - } - - if ((data->scan_single_item_list != NULL) && (g_list_length(data->scan_single_item_list) == 0)) { - dcm_debug("No image list from db!"); - return MS_MEDIA_ERR_DB_NO_RECORD; - } - - return MS_MEDIA_ERR_NONE; -} - static int __dcm_scan_send_result(dcm_scan_s *data, const char *msg, const unsigned int count, dcm_ipc_port_e port) { if ((data->scan_all_item_list == NULL) && (data->scan_single_item_list == NULL)) { @@ -318,7 +294,8 @@ static int __dcm_scan_process(dcm_svc_item_s *scan_item) /* Free image buffer */ DCM_SAFE_FREE(image_info.pixel); } else { - dcm_warn("The file does not exist! Skip dcm scan for this file ..."); + dcm_warn("The file does not exist! "); + ret = MS_MEDIA_ERR_INVALID_PATH; } dcm_debug_fleave(); @@ -551,76 +528,36 @@ int dcm_scan_single(const char *file_path, uid_t uid, int *face_count) { int ret = MS_MEDIA_ERR_NONE; dcm_svc_item_s *scan_item = NULL; - unsigned int list_len = 0; - dcm_scan_s *dcm_scan_data = NULL; - - DCM_CHECK_VAL(file_path, MS_MEDIA_ERR_INVALID_PARAMETER); - DCM_CHECK_VAL(face_count, MS_MEDIA_ERR_INVALID_PARAMETER); dcm_debug_fenter(); - /* Init global variables */ - dcm_scan_data = (dcm_scan_s *)calloc(1, sizeof(dcm_scan_s)); - if (dcm_scan_data == NULL) { - dcm_error("Failed to create DCM scan data!"); - return MS_MEDIA_ERR_OUT_OF_MEMORY; - } - - ret = dcm_scan_init(dcm_scan_data); - if (ret != MS_MEDIA_ERR_NONE) { - dcm_error("Failed to initialize scan thread global variable! err: %d", ret); - goto DCM_SVC_SCAN_SINGLE_FAILED; - } - - __dcm_scan_clear_single_item(dcm_scan_data); + DCM_CHECK_VAL(file_path, MS_MEDIA_ERR_INVALID_PARAMETER); + DCM_CHECK_VAL(face_count, MS_MEDIA_ERR_INVALID_PARAMETER); ret = dcm_svc_db_connect(uid); - if (ret != MS_MEDIA_ERR_NONE) - dcm_error("Failed to connect db! err: %d", ret); + dcm_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "Fail dcm_svc_db_connect"); - ret = __dcm_scan_get_item_list_by_path(file_path, dcm_scan_data); - if (ret == MS_MEDIA_ERR_DB_NO_RECORD) { - dcm_debug("No items to Scan. Scan operation completed!!!"); - __dcm_scan_clear_single_item(dcm_scan_data); - goto DCM_SVC_SCAN_SINGLE_FAILED; - } - - dcm_debug("append scan item to scan item list"); + ret = dcm_svc_db_get_scan_image_info_by_path(file_path, &scan_item); + dcm_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "Fail dcm_svc_db_get_scan_image_info_by_path"); + dcm_retvm_if(scan_item == NULL, ret, "scan_item is NULL"); - /* DCM scan started */ - list_len = (unsigned int)g_list_length(dcm_scan_data->scan_single_item_list); - if (dcm_scan_data->scan_single_curr_index < list_len) { - scan_item = (dcm_svc_item_s *)g_list_nth_data(dcm_scan_data->scan_single_item_list, dcm_scan_data->scan_single_curr_index); - dcm_sec_debug("current index: %d, path: %s, scan type: %d", dcm_scan_data->scan_single_curr_index, scan_item->file_path, scan_item->scan_item_type); - - ret = __dcm_scan_process(scan_item); - if (ret != MS_MEDIA_ERR_NONE) { - dcm_error("Failed to process scan job! err: %d", ret); - - /* If the scan item is not scanned, insert media uuid into face_scan_list */ - if (ret != MS_MEDIA_ERROR_ALREADY_SCANNED) - dcm_svc_db_insert_face_to_face_scan_list(scan_item); - } + ret = __dcm_scan_process(scan_item); + if (ret != MS_MEDIA_ERR_NONE) { + dcm_error("Failed to process scan job! err: %d", ret); - (dcm_scan_data->scan_single_curr_index)++; + /* If the scan item is not scanned, insert media uuid into face_scan_list */ + if (ret != MS_MEDIA_ERROR_ALREADY_SCANNED) + dcm_svc_db_insert_face_to_face_scan_list(scan_item); } -DCM_SVC_SCAN_SINGLE_FAILED: ret = dcm_svc_db_disconnect(); if (ret != MS_MEDIA_ERR_NONE) dcm_error("Failed to disconnect db! err: %d", ret); - if (scan_item != NULL) - *face_count = scan_item->face_count; - else - *face_count = 0; - + *face_count = scan_item->face_count; dcm_debug("*face_count is %d", *face_count); - __dcm_scan_clear_single_item(dcm_scan_data); - ret = dcm_scan_finalize(dcm_scan_data); - if (ret != MS_MEDIA_ERR_NONE) - dcm_error("Failed to de-initialize scan thread global variable! err: %d", ret); + DCM_SAFE_FREE(scan_item); dcm_debug_fleave(); -- 2.34.1