remove useless logic in dcm_scan_single 27/144527/3 submit/tizen/20170817.064526
authorHaejeong Kim <backto.kim@samsung.com>
Thu, 17 Aug 2017 06:00:27 +0000 (15:00 +0900)
committerHaejeong Kim <backto.kim@samsung.com>
Thu, 17 Aug 2017 06:31:52 +0000 (15:31 +0900)
Change-Id: I7bf87cb588a5ca6721d2cf2338a4295337aa9156

include/dcm_svc_db.h
src/dcm_svc_db.c
src/dcm_svc_internal.c

index 83c4e32f9117185a5d2aa256d5029624461bf0fc..43e738d72ce097c0916870701f5944399ad196cd 100755 (executable)
@@ -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);
index 9883da36086e046249b796c40274435385bc7d22..10c16e8d6955deea7a9fcb1897a9c99b26b9e883 100755 (executable)
@@ -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);
index b8de13dd8c2bce11cf0a3ce9f0f6c34b38af2765..cd9b8c2278379464996c320ddb296fbabb1e8ac2 100755 (executable)
@@ -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();