From: Marcin Bialek Date: Wed, 4 May 2022 10:04:34 +0000 (+0200) Subject: [Content] Replace media_info_set_display_name function with media_info_move_to_db X-Git-Tag: submit/tizen/20220516.050748~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=57581381743c14c4f36c44073a29105c4a2550f8;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [Content] Replace media_info_set_display_name function with media_info_move_to_db media_info_set_display_name function is going to be removed and has to be replaced. [Verification] Code compiles. TCT tests for content module pass. Changes were also tested manually. Change-Id: Ia623409bd22836aff2089b5811e088f50c575810 Signed-off-by: Marcin Bialek --- diff --git a/src/content/content_manager.cc b/src/content/content_manager.cc index f7f5064..4f22a0d 100644 --- a/src/content/content_manager.cc +++ b/src/content/content_manager.cc @@ -422,8 +422,7 @@ void ContentDirToJson(media_folder_h folder, picojson::object& o) { static int setContent(media_info_h media, const picojson::value& content) { ScopeLogger(); - int ret; - std::string name = content.get("name").to_str(); + int ret = MEDIA_CONTENT_ERROR_NONE; std::string description = content.get("description").to_str(); int rating = std::stoi(content.get("rating").to_str()); bool is_fav = content.get("isFavorite").get(); @@ -440,11 +439,6 @@ static int setContent(media_info_h media, const picojson::value& content) { return ret; } - ret = media_info_set_display_name(media, name.c_str()); - if (ret != MEDIA_CONTENT_ERROR_NONE) { - LoggerE("Updating name failed."); - } - ret = media_info_set_description(media, description.c_str()); if (ret != MEDIA_CONTENT_ERROR_NONE) { LoggerE("Updating description failed."); @@ -503,6 +497,68 @@ static int setContent(media_info_h media, const picojson::value& content) { return MEDIA_CONTENT_ERROR_NONE; } +static int updateContent(const picojson::value& content) { + ScopeLogger(); + + int ret = MEDIA_CONTENT_ERROR_NONE; + std::string id = content.get("id").to_str(); + std::string new_name = content.get("name").to_str(); + media_info_h media = nullptr; + char* name = nullptr; + char* path = nullptr; + SCOPE_EXIT { + if (media) { + media_info_destroy(media); + } + if (name) { + free(name); + } + if (path) { + free(path); + } + }; + + ret = media_info_get_media_from_db(id.c_str(), &media); + if (ret != MEDIA_CONTENT_ERROR_NONE) { + LoggerE("media_info_get_media_from_db failed: %d", ret); + return ret; + } + ret = setContent(media, content); + if (ret != MEDIA_CONTENT_ERROR_NONE) { + LoggerE("setContent failed: %d", ret); + return ret; + } + ret = media_info_update_to_db(media); + if (ret != MEDIA_CONTENT_ERROR_NONE) { + LoggerE("media_info_update_to_db failed: %d", ret); + return ret; + } + ret = media_info_get_display_name(media, &name); + if (ret != MEDIA_CONTENT_ERROR_NONE) { + LoggerE("media_info_get_display_name failed: %d", ret); + return ret; + } + const std::string name_str(name); + if (name_str != new_name) { + ret = media_info_get_file_path(media, &path); + if (ret != MEDIA_CONTENT_ERROR_NONE) { + LoggerE("media_info_get_file_path failed: %d", ret); + return ret; + } + std::string path_str(path); + const size_t p = path_str.rfind(name_str); + path_str.replace(p, name_str.length(), new_name); + LoggerD("new media path: %s", path_str.c_str()); + ret = media_info_move_to_db(media, path_str.c_str()); + if (ret != MEDIA_CONTENT_ERROR_NONE) { + LoggerE("media_info_move_to_db failed: %d", ret); + return ret; + } + } + + return ret; +} + static void FolderToJson(media_folder_h folder, picojson::object* out) { ScopeLogger(); @@ -987,46 +1043,25 @@ void ContentManager::removePlaylist(std::string playlistId, int ContentManager::update(const picojson::value& args) { ScopeLogger(); - - int ret; - picojson::value content = args.get("content"); - std::string id = content.get("id").to_str(); - - media_info_h media = NULL; - ret = media_info_get_media_from_db(id.c_str(), &media); - if (ret == MEDIA_CONTENT_ERROR_NONE) { - setContent(media, content); - ret = media_info_update_to_db(media); - media_info_destroy(media); + const picojson::value content = args.get("content"); + int ret = updateContent(content); + if (ret != MEDIA_CONTENT_ERROR_NONE) { + LoggerE("updateContent failed: %d", ret); } - return ret; } int ContentManager::updateBatch(const picojson::value& args) { ScopeLogger(); - int ret = 0; + int ret = MEDIA_CONTENT_ERROR_NONE; std::vector contents = args.get("contents").get(); for (picojson::value::array::iterator it = contents.begin(); it != contents.end(); ++it) { - picojson::value content = *it; - std::string id = content.get("id").to_str(); - media_info_h media = NULL; - ret = media_info_get_media_from_db(id.c_str(), &media); - if (media != NULL && ret == MEDIA_CONTENT_ERROR_NONE) { - ret = setContent(media, content); - if (ret != MEDIA_CONTENT_ERROR_NONE) { - LoggerE("setContent failed"); - return ret; - } - - ret = media_info_update_to_db(media); - if (ret != MEDIA_CONTENT_ERROR_NONE) { - LoggerE("update to db failed"); - } - media_info_destroy(media); - } else { - return ret; + const picojson::value content = *it; + ret = updateContent(content); + if (ret != MEDIA_CONTENT_ERROR_NONE) { + LoggerE("updateContent failed: %d", ret); + break; } } return ret;