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)
{
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);
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);
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)) {
/* 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();
{
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();