Improve playlist related function 87/228887/11
authorMinje Ahn <minje.ahn@samsung.com>
Thu, 26 Mar 2020 07:12:31 +0000 (16:12 +0900)
committerMinje Ahn <minje.ahn@samsung.com>
Fri, 27 Mar 2020 00:26:03 +0000 (09:26 +0900)
Change-Id: I685109f2d806fc1f7fe43ec3e0e9d8cdc1b670d8
Signed-off-by: Minje Ahn <minje.ahn@samsung.com>
src/media_playlist.c

index 3b321f8..e397544 100755 (executable)
 #include <media_info_private.h>
 #include <media_util_private.h>
 
-
-#define PLAYLIST_ARRAY_SIZE                            20
-#define PLAYLIST_ARRAY_EXPAND                  10
-#define MAX_TMP_STR                                            2048
-
-static void __media_playlist_item_add(media_playlist_s *playlist, media_playlist_item_s *item_s);
-static void __media_playlist_item_release(media_playlist_s *playlist);
-static int __media_playlist_insert_playlist_record(const char *playlist_name, int *playlist_id);
-static int __media_playlist_insert_item_to_playlist(int playlist_id, const char *media_id);
-static int __media_playlist_remove_item_from_playlist(int playlist_id, int playlist_member_id);
-static int __media_playlist_update_playlist_name(int playlist_id, const char *playlist_name);
-static int __media_playlist_update_thumbnail_path(int playlist_id, const char *path);
-static int __media_playlist_update_play_order(int playlist_id, int playlist_member_id, int play_order);
-static int __media_playlist_reset_file(const char* playlist_path);
-static int __media_playlist_append_to_file(const char* playlist_path, const char* path);
-static int __media_playlist_import_item_from_file(const char* playlist_path, char*** const item_list, int* item_count);
-static int __media_playlist_destroy_import_item(char** item_list, int item_count);
-static void __media_playlist_destroy_export_item(gpointer data);
-
-static void __media_playlist_item_add(media_playlist_s *playlist, media_playlist_item_s *item_s)
+static void __media_playlist_item_free(gpointer item)
 {
-       playlist->item_list = g_list_append(playlist->item_list, item_s);
+       media_playlist_item_s *_item = (media_playlist_item_s *)item;
+       SAFE_FREE(_item->media_id);
+       SAFE_FREE(_item->playlist_name);
+       SAFE_FREE(_item->thumbnail_path);
+       SAFE_FREE(_item);
 }
 
 static void __media_playlist_item_release(media_playlist_s *playlist)
 {
-       int idx = 0;
-       int list_cnt = 0;
-       media_playlist_item_s *item = NULL;
-
-       list_cnt = g_list_length(playlist->item_list);
-
-       content_debug("list_cnt : [%d]", list_cnt);
-
-       for (idx = 0; idx < list_cnt; idx++) {
-               item = (media_playlist_item_s*)g_list_nth_data(playlist->item_list, idx);
-               if (item != NULL) {
-                       SAFE_FREE(item->media_id);
-                       SAFE_FREE(item->playlist_name);
-                       SAFE_FREE(item->thumbnail_path);
-                       SAFE_FREE(item);
-               }
-       }
+       if (!playlist || !playlist->item_list)
+               return;
 
-       g_list_free(playlist->item_list);
+       g_list_free_full(playlist->item_list, __media_playlist_item_free);
        playlist->item_list = NULL;
-
 }
 
 static int __media_playlist_insert_playlist_record(const char *playlist_name, int *playlist_id)
 {
        int ret = MEDIA_CONTENT_ERROR_NONE;
-       char *query_str = NULL;
-       char *select_query = NULL;
+       char *query = NULL;
        sqlite3_stmt *stmt = NULL;
 
-       query_str = sqlite3_mprintf(INSERT_PLAYLIST_TO_PLAYLIST, playlist_name);
+       query = sqlite3_mprintf(INSERT_PLAYLIST_TO_PLAYLIST, playlist_name);
 
-       ret = _content_query_sql(query_str);
-       SQLITE3_SAFE_FREE(query_str);
+       ret = _content_query_sql(query);
+       SQLITE3_SAFE_FREE(query);
        content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
-       select_query = sqlite3_mprintf(SELECT_PLAYLIST_ID_FROM_PLAYLIST, playlist_name);
+       query = sqlite3_mprintf(SELECT_PLAYLIST_ID_FROM_PLAYLIST, playlist_name);
 
-       ret = _content_get_result(select_query, &stmt);
-       SQLITE3_SAFE_FREE(select_query);
+       ret = _content_get_result(query, &stmt);
+       SQLITE3_SAFE_FREE(query);
        content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        if (sqlite3_step(stmt) == SQLITE_ROW)
-               *playlist_id = (int)sqlite3_column_int(stmt, 0);
+               *playlist_id = sqlite3_column_int(stmt, 0);
 
        SQLITE3_FINALIZE(stmt);
 
@@ -100,27 +68,23 @@ static int __media_playlist_insert_item_to_playlist(int playlist_id, const char
 {
        int ret = MEDIA_CONTENT_ERROR_NONE;
        sqlite3_stmt *stmt = NULL;
-       char select_query[DEFAULT_QUERY_SIZE] = {0, };
-       char *query_str = NULL;
+       char *query = NULL;
        int play_order = 0;
 
-       memset(select_query, 0x00, sizeof(select_query));
-
-       snprintf(select_query, sizeof(select_query), SELECT_MAX_PLAY_ORDER_FROM_PLAYLIST_VIEW, playlist_id);
+       query = sqlite3_mprintf(SELECT_MAX_PLAY_ORDER_FROM_PLAYLIST_VIEW, playlist_id);
 
        /* get the max play_order */
-       ret = _content_get_result(select_query, &stmt);
+       ret = _content_get_result(query, &stmt);
+       SQLITE3_SAFE_FREE(query);
        content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        if (sqlite3_step(stmt) == SQLITE_ROW)
-               play_order = (int)sqlite3_column_int(stmt, 0);
+               play_order = sqlite3_column_int(stmt, 0);
 
        SQLITE3_FINALIZE(stmt);
 
-       ++play_order;
-
-       query_str = sqlite3_mprintf(INSERT_PLAYLIST_ITEM_TO_PLAYLIST_MAP, playlist_id, media_id, play_order);
-       ret = media_svc_append_query(query_str, _content_get_uid());
+       query = sqlite3_mprintf(INSERT_PLAYLIST_ITEM_TO_PLAYLIST_MAP, playlist_id, media_id, ++play_order);
+       ret = media_svc_append_query(query, _content_get_uid());
 
        return _content_error_capi(ret);
 }
@@ -169,17 +133,6 @@ static int __media_playlist_update_play_order(int playlist_id, int playlist_memb
        return _content_error_capi(ret);
 }
 
-static bool __media_playlist_media_info_cb(media_info_h media, void *user_data)
-{
-       int ret = MEDIA_CONTENT_ERROR_NONE;
-       char **media_id = (char**)user_data;
-
-       ret = media_info_get_media_id(media, media_id);
-       content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, FALSE, "media_info_get_media_id fail");
-
-       return TRUE;
-}
-
 static bool __media_playlist_member_cb(int playlist_member_id, media_info_h media, void *user_data)
 {
        int ret = MEDIA_CONTENT_ERROR_NONE;
@@ -194,12 +147,15 @@ static bool __media_playlist_member_cb(int playlist_member_id, media_info_h medi
        return TRUE;
 }
 
-static int __media_playlist_reset_file(const charplaylist_path)
+static int __media_playlist_reset_file(const char *playlist_path)
 {
        FILE *fp = NULL;
 
        fp = fopen(playlist_path, "wb");
-       content_retvm_if(fp == NULL, MEDIA_CONTENT_ERROR_INVALID_OPERATION, "fopen fail");
+       if (fp == NULL) {
+               content_stderror("fopen failed");
+               return MEDIA_CONTENT_ERROR_INVALID_OPERATION;
+       }
 
        fputs("", fp);  /* remove previous playlist */
 
@@ -208,15 +164,18 @@ static int __media_playlist_reset_file(const char* playlist_path)
        return MEDIA_CONTENT_ERROR_NONE;
 }
 
-static int __media_playlist_append_to_file(const char* playlist_path, const char* path)
+static int __media_playlist_append_to_file(const char *playlist_path, const char *path)
 {
        FILE *fp = NULL;
 
        fp = fopen(playlist_path, "a"); /* append only */
-       content_retvm_if(fp == NULL, MEDIA_CONTENT_ERROR_INVALID_OPERATION, "fopen fail");
+       if (fp == NULL) {
+               content_stderror("fopen failed");
+               return MEDIA_CONTENT_ERROR_INVALID_OPERATION;
+       }
 
-       fputs(path, fp);
 
+       fputs(path, fp);
        fputs("\n", fp);
 
        fclose(fp);
@@ -224,146 +183,62 @@ static int __media_playlist_append_to_file(const char* playlist_path, const char
        return MEDIA_CONTENT_ERROR_NONE;
 }
 
-static int __media_playlist_import_item_from_file(const char* playlist_path, char*** const item_list, int* item_count)
+static int __media_playlist_import_item_from_file(const char *playlist_path, GSList **item_list)
 {
-       int current_index = 0;
-       int current_max_size = PLAYLIST_ARRAY_SIZE;
        int tmp_str_len = 0;
-       char *tmp_buf = NULL;
-       char tmp_str[MAX_QUERY_SIZE] = {0, };
-       char repl_item[MAX_QUERY_SIZE] = {0, };
+       char tmp_str[MAX_PATH_LEN] = {0, };
+       char repl_item[MAX_PATH_LEN] = {0, };
        FILE *fp = NULL;
-       long int file_size = 0;
-
-       *item_list = NULL; *item_count = 0;
 
        fp = fopen(playlist_path, "rb");
-       content_retvm_if(fp == NULL, MEDIA_CONTENT_ERROR_INVALID_OPERATION, "fopen fail");
-
-       if (fseek(fp, 0, SEEK_END) < 0) {
-               content_stderror("fseek failed");
-               fclose(fp);
-               return MEDIA_CONTENT_ERROR_INVALID_OPERATION;
-       }
-       file_size = ftell(fp);
-       if (file_size == 0) {
-               content_debug("file is empty.");
-               fclose(fp);
-               return MEDIA_CONTENT_ERROR_NONE;
-       }
-
-       if (fseek(fp, 0, SEEK_SET) < 0) {
-               content_stderror("fseek failed");
-               fclose(fp);
+       if (fp == NULL) {
+               content_stderror("fopen failed");
                return MEDIA_CONTENT_ERROR_INVALID_OPERATION;
        }
 
-       *item_list = calloc(current_max_size, sizeof(char*));
-       if (*item_list == NULL) {
-               fclose(fp);
-               SAFE_FREE(*item_list);
-               content_error("Out of Memory");
-               return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
-       }
        memset(tmp_str, 0, sizeof(tmp_str));
-
-       while (fgets(tmp_str, MAX_QUERY_SIZE, fp) != NULL) {
+       while (fgets(tmp_str, MAX_PATH_LEN, fp) != NULL) {
                memset(repl_item, 0, sizeof(repl_item));
                _media_content_replace_path(tmp_str, repl_item);
-               tmp_str_len = strlen(repl_item);
-               if (tmp_str_len > 0 && repl_item[tmp_str_len - 1] == '\n')
-                       repl_item[tmp_str_len - 1] = '\0';
 
                tmp_str_len = strlen(repl_item);
+               /* Check for empty file */
+               if (tmp_str_len <= 1)
+                       continue;
 
-               if (tmp_str_len > 0 && repl_item[0] != '#') {
-                       if (!(current_index < (current_max_size - 1))) {
-                               current_max_size += PLAYLIST_ARRAY_EXPAND;
-                               char **tmp_ptr = calloc(current_max_size, sizeof(char*));
-                               if (tmp_ptr == NULL) {
-                                       __media_playlist_destroy_import_item(*item_list, current_index);
-                                       content_error("Out of Memory");
-                                       fclose(fp);
-                                       return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
-                               }
-                               memmove(tmp_ptr, *item_list, sizeof(char*) * current_index);
-                               SAFE_FREE(*item_list);
-                               *item_list = tmp_ptr;
-                       }
+               if (repl_item[0] == '#')
+                       continue;
 
-                       (*item_list)[current_index] = malloc(tmp_str_len + 1);
-                       if ((*item_list)[current_index] == NULL) {
-                               __media_playlist_destroy_import_item(*item_list, current_index);
-                               content_error("Out of Memory");
-                               fclose(fp);
-                               return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
-                       }
-                       memset((*item_list)[current_index], 0, tmp_str_len + 1);
-                       memmove((*item_list)[current_index], repl_item, tmp_str_len);
 
-                       current_index += 1;
-               }
+               if (repl_item[tmp_str_len - 1] == '\n')
+                       repl_item[tmp_str_len - 1] = '\0';
 
-               tmp_buf += (tmp_str_len);
+               *item_list = g_slist_append(*item_list, g_strdup(repl_item));
        }
 
-       *item_count = current_index;
        fclose(fp);
 
        return MEDIA_CONTENT_ERROR_NONE;
 }
 
-static int __media_playlist_destroy_import_item(char** item_list, int item_count)
-{
-       int i = 0;
-
-       for (i = 0; i < item_count; ++i) {
-               SAFE_FREE(item_list[i]);
-               item_list[i] = NULL;
-       }
-
-       if (item_list != NULL) {
-               SAFE_FREE(item_list);
-               item_list = NULL;
-       }
-
-       return MEDIA_CONTENT_ERROR_NONE;
-}
-
-static void __media_playlist_destroy_export_item(gpointer data)
-{
-       SAFE_FREE(data);
-       data = NULL;
-}
-
 int media_playlist_insert_to_db(const char *name, media_playlist_h *playlist)
 {
        int ret = MEDIA_CONTENT_ERROR_NONE;
        int playlist_id = 0;
 
-       if (!STRING_VALID(name)) {
-               content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
-               return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-       }
+       content_retip_if_fail(STRING_VALID(name));
 
-       media_playlist_s *_playlist = (media_playlist_s*)calloc(1, sizeof(media_playlist_s));
+       media_playlist_s *_playlist = (media_playlist_s *)calloc(1, sizeof(media_playlist_s));
        content_retvm_if(_playlist == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
 
        ret = __media_playlist_insert_playlist_record(name, &playlist_id);
-
        if (ret != MEDIA_CONTENT_ERROR_NONE) {
                SAFE_FREE(_playlist);
                return ret;
        }
 
        _playlist->playlist_id = playlist_id;
-       _playlist->name = strdup(name);
-
-       if (_playlist->name == NULL) {
-               SAFE_FREE(_playlist);
-               content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
-               return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
-       }
+       _playlist->name = g_strdup(name);
 
        *playlist = (media_playlist_h)_playlist;
 
@@ -375,15 +250,11 @@ int media_playlist_delete_from_db(int playlist_id)
        int ret = MEDIA_CONTENT_ERROR_NONE;
        char *query_str = NULL;
 
-       if (playlist_id < 0) {
-               content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
-               return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-       }
+       content_retipm_if_fail(playlist_id >= 0, "%d", playlist_id);
 
        query_str = sqlite3_mprintf(DELETE_PLAYLIST_FROM_PLAYLIST, playlist_id);
 
        ret = _content_query_sql(query_str);
-
        SQLITE3_SAFE_FREE(query_str);
 
        return ret;
@@ -391,235 +262,152 @@ int media_playlist_delete_from_db(int playlist_id)
 
 int media_playlist_get_playlist_count_from_db(filter_h filter, int *playlist_count)
 {
-       int ret = MEDIA_CONTENT_ERROR_NONE;
+       content_retip_if_fail(playlist_count);
 
-       if (playlist_count != NULL) {
-               ret = _media_db_get_group_count(filter, MEDIA_GROUP_PLAYLIST, playlist_count);
-       } else {
-               content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
-               ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-       }
-
-       return ret;
+       return _media_db_get_group_count(filter, MEDIA_GROUP_PLAYLIST, playlist_count);
 }
 
 int media_playlist_foreach_playlist_from_db(filter_h filter, media_playlist_cb callback, void *user_data)
 {
-       int ret = MEDIA_CONTENT_ERROR_NONE;
-
-       if (callback == NULL) {
-               content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
-               return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-       }
-
-       ret = _media_db_get_playlist(filter, callback, user_data);
+       content_retip_if_fail(callback);
 
-       return ret;
+       return _media_db_get_playlist(filter, callback, user_data);
 }
 
 int media_playlist_get_media_count_from_db(int playlist_id, filter_h filter, int *media_count)
 {
-       int ret = MEDIA_CONTENT_ERROR_NONE;
-
-       if ((playlist_id > 0) && (media_count != NULL)) {
-               ret = _media_db_get_group_item_count_by_id(playlist_id, filter, MEDIA_GROUP_PLAYLIST, media_count);
-       } else {
-               content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
-               ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-       }
+       content_retip_if_fail(media_count);
+       content_retipm_if_fail(playlist_id > 0, "%d", playlist_id);
 
-       return ret;
+       return _media_db_get_group_item_count_by_id(playlist_id, filter, MEDIA_GROUP_PLAYLIST, media_count);
 }
 
 int media_playlist_foreach_media_from_db(int playlist_id, filter_h filter, playlist_member_cb callback, void *user_data)
 {
-       int ret = MEDIA_CONTENT_ERROR_NONE;
+       content_retip_if_fail(callback);
+       content_retipm_if_fail(playlist_id > 0, "%d", playlist_id);
 
-       if ((playlist_id > 0) && (callback != NULL)) {
-               ret = _media_db_get_playlist_item(playlist_id, filter, callback, user_data);
-       } else {
-               content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
-               ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-       }
-
-       return ret;
+       return _media_db_get_playlist_item(playlist_id, filter, callback, user_data);
 }
 
 int media_playlist_destroy(media_playlist_h playlist)
 {
-       int ret = MEDIA_CONTENT_ERROR_NONE;
-       media_playlist_s *_playlist = (media_playlist_s*)playlist;
+       media_playlist_s *_playlist = (media_playlist_s *)playlist;
+       content_retip_if_fail(playlist);
 
-       if (_playlist) {
-               SAFE_FREE(_playlist->name);
-               SAFE_FREE(_playlist->thumbnail_path);
-               SAFE_FREE(_playlist);
+       SAFE_FREE(_playlist->name);
+       SAFE_FREE(_playlist->thumbnail_path);
+       SAFE_FREE(_playlist);
 
-               ret = MEDIA_CONTENT_ERROR_NONE;
-       } else {
-               content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
-               ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-       }
-
-       return ret;
+       return MEDIA_CONTENT_ERROR_NONE;
 }
 
 int media_playlist_clone(media_playlist_h *dst, media_playlist_h src)
 {
-       int ret = MEDIA_CONTENT_ERROR_NONE;
-       media_playlist_s *_src = (media_playlist_s*)src;
+       media_playlist_s *_src = (media_playlist_s *)src;
+       content_retip_if_fail(_src);
 
-       if (_src != NULL) {
-               media_playlist_s *_dst = (media_playlist_s*)calloc(1, sizeof(media_playlist_s));
-               content_retvm_if(_dst == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
+       media_playlist_s *_dst = (media_playlist_s *)calloc(1, sizeof(media_playlist_s));
+       content_retvm_if(_dst == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
 
-               _dst->playlist_id = _src->playlist_id;
+       _dst->playlist_id = _src->playlist_id;
+       _dst->name = g_strdup(_src->name);
 
-               if (STRING_VALID(_src->name)) {
-                       _dst->name = strdup(_src->name);
-                       if (_dst->name == NULL) {
-                               media_playlist_destroy((media_playlist_h)_dst);
-                               content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
-                               return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
-                       }
-               }
-
-               *dst = (media_playlist_h)_dst;
-
-               ret = MEDIA_CONTENT_ERROR_NONE;
-       } else {
-               content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
-               ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-       }
+       *dst = (media_playlist_h)_dst;
 
-       return ret;
+       return MEDIA_CONTENT_ERROR_NONE;
 }
 
 int media_playlist_get_playlist_from_db(int playlist_id, media_playlist_h *playlist)
 {
        int ret = MEDIA_CONTENT_ERROR_NONE;
        sqlite3_stmt *stmt = NULL;
-       char select_query[DEFAULT_QUERY_SIZE] = {0, };
+       char *query = NULL;
 
-       if (playlist_id > 0) {
-               memset(select_query, 0x00, sizeof(select_query));
+       content_retipm_if_fail(playlist_id > 0, "%d", playlist_id);
 
-               snprintf(select_query, sizeof(select_query), SELECT_PLAYLIST_FROM_PLAYLIST, playlist_id);
+       query = sqlite3_mprintf(SELECT_PLAYLIST_FROM_PLAYLIST, playlist_id);
 
-               ret = _content_get_result(select_query, &stmt);
-               content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
-
-               media_playlist_s *_playlist = NULL;
-
-               if (sqlite3_step(stmt) == SQLITE_ROW) {
-                       _playlist = (media_playlist_s*)calloc(1, sizeof(media_playlist_s));
-                       if (_playlist == NULL) {
-                               content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
-                               SQLITE3_FINALIZE(stmt);
-                               return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
-                       }
+       ret = _content_get_result(query, &stmt);
+       SQLITE3_SAFE_FREE(query);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
-                       _playlist->playlist_id = playlist_id;
-                       _playlist->name = g_strdup((const char *)sqlite3_column_text(stmt, 0));
-                       _playlist->thumbnail_path = g_strdup((const char *)sqlite3_column_text(stmt, 1));
+       media_playlist_s *_playlist = NULL;
 
-                       *playlist = (media_playlist_h)_playlist;
-               } else {
-                       content_error("Nonexistent playlist id[%d]", playlist_id);
-                       ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
+       if (sqlite3_step(stmt) == SQLITE_ROW) {
+               _playlist = (media_playlist_s *)calloc(1, sizeof(media_playlist_s));
+               if (_playlist == NULL) {
+                       content_error("Out of memory");
+                       SQLITE3_FINALIZE(stmt);
+                       return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
                }
 
-               SQLITE3_FINALIZE(stmt);
+               _playlist->playlist_id = playlist_id;
+               _playlist->name = g_strdup((const char *)sqlite3_column_text(stmt, 0));
+               _playlist->thumbnail_path = g_strdup((const char *)sqlite3_column_text(stmt, 1));
+
+               *playlist = (media_playlist_h)_playlist;
        } else {
-               content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
+               content_error("Nonexistent playlist id[%d]", playlist_id);
                ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
        }
 
+       SQLITE3_FINALIZE(stmt);
+
        return ret;
 }
 
 int media_playlist_get_playlist_id(media_playlist_h playlist, int *playlist_id)
 {
-       int ret = MEDIA_CONTENT_ERROR_NONE;
+       media_playlist_s *_playlist = (media_playlist_s *)playlist;
+       content_retip_if_fail(playlist);
+       content_retip_if_fail(playlist_id);
 
-       media_playlist_s *_playlist = (media_playlist_s*)playlist;
-
-       if ((_playlist != NULL) && (playlist_id != NULL)) {
-               *playlist_id = _playlist->playlist_id;
-       } else {
-               content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
-               ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-       }
+       *playlist_id = _playlist->playlist_id;
 
-       return ret;
+       return MEDIA_CONTENT_ERROR_NONE;
 }
 
 int media_playlist_get_name(media_playlist_h playlist, char **name)
 {
-       int ret = MEDIA_CONTENT_ERROR_NONE;
-       media_playlist_s *_playlist = (media_playlist_s*)playlist;
-       if (_playlist) {
-               if (STRING_VALID(_playlist->name)) {
-                       *name = strdup(_playlist->name);
-                       content_retvm_if(*name == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
-               } else {
-                       *name = NULL;
-               }
+       media_playlist_s *_playlist = (media_playlist_s *)playlist;
+       content_retip_if_fail(playlist);
+       content_retip_if_fail(name);
 
-               ret = MEDIA_CONTENT_ERROR_NONE;
-       } else {
-               content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
-               ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-       }
+       *name = g_strdup(_playlist->name);
 
-       return ret;
+       return MEDIA_CONTENT_ERROR_NONE;
 }
 
 int media_playlist_get_thumbnail_path(media_playlist_h playlist, char **path)
 {
-       int ret = MEDIA_CONTENT_ERROR_NONE;
-       media_playlist_s *_playlist = (media_playlist_s*)playlist;
-       if (_playlist) {
-               if (STRING_VALID(_playlist->thumbnail_path)) {
-                       *path = strdup(_playlist->thumbnail_path);
-                       content_retvm_if(*path == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
-               } else {
-                       *path = NULL;
-               }
+       media_playlist_s *_playlist = (media_playlist_s *)playlist;
+       content_retip_if_fail(playlist);
+       content_retip_if_fail(path);
 
-               ret = MEDIA_CONTENT_ERROR_NONE;
-       } else {
-               content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
-               ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-       }
+       *path = g_strdup(_playlist->thumbnail_path);
 
-       return ret;
+       return MEDIA_CONTENT_ERROR_NONE;
 }
 
 int media_playlist_get_play_order(media_playlist_h playlist, int playlist_member_id, int *play_order)
 {
        int ret = MEDIA_CONTENT_ERROR_NONE;
-       media_playlist_s *_playlist = (media_playlist_s*)playlist;
-       int playlist_id = 0;
+       media_playlist_s *_playlist = (media_playlist_s *)playlist;
        sqlite3_stmt *stmt = NULL;
-       char select_query[DEFAULT_QUERY_SIZE] = {0, };
+       char *query = NULL;
 
-       if ((_playlist == NULL) || (playlist_member_id < 0) || (play_order == NULL)) {
-               content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
-               return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-       }
-
-       playlist_id = _playlist->playlist_id;
-
-       memset(select_query, 0x00, sizeof(select_query));
-
-       snprintf(select_query, sizeof(select_query), SELECT_PLAY_ORDER_FROM_PLAYLIST_VIEW, playlist_id, playlist_member_id);
+       content_retip_if_fail(playlist);
+       content_retipm_if_fail(playlist_member_id >= 0, "%d", playlist_member_id);
+       content_retip_if_fail(play_order);
 
-       ret = _content_get_result(select_query, &stmt);
+       query = sqlite3_mprintf(SELECT_PLAY_ORDER_FROM_PLAYLIST_VIEW, _playlist->playlist_id, playlist_member_id);
+       ret = _content_get_result(query, &stmt);
+       SQLITE3_SAFE_FREE(query);
        content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        if (sqlite3_step(stmt) == SQLITE_ROW)
-               *play_order = (int)sqlite3_column_int(stmt, 0);
+               *play_order = sqlite3_column_int(stmt, 0);
 
        SQLITE3_FINALIZE(stmt);
 
@@ -628,210 +416,150 @@ int media_playlist_get_play_order(media_playlist_h playlist, int playlist_member
 
 int media_playlist_set_name(media_playlist_h playlist, const char *playlist_name)
 {
-       int ret = MEDIA_CONTENT_ERROR_NONE;
-       media_playlist_s *_playlist = (media_playlist_s*)playlist;
+       media_playlist_s *_playlist = (media_playlist_s *)playlist;
 
-       if (_playlist != NULL && STRING_VALID(playlist_name)) {
-               SAFE_FREE(_playlist->name);
+       content_retip_if_fail(playlist);
+       content_retip_if_fail(STRING_VALID(playlist_name));
 
-               media_playlist_item_s *item = (media_playlist_item_s*)calloc(1, sizeof(media_playlist_item_s));
-               content_retvm_if(item == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
+       SAFE_FREE(_playlist->name);
 
-               item->playlist_name = strdup(playlist_name);
-               item->function = MEDIA_PLAYLIST_UPDATE_PLAYLIST_NAME;
-               if (item->playlist_name == NULL) {
-                       SAFE_FREE(item);
-                       content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
-                       return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
-               }
+       media_playlist_item_s *item = (media_playlist_item_s *)calloc(1, sizeof(media_playlist_item_s));
+       content_retvm_if(item == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
 
-               _playlist->name = strdup(playlist_name);
-               if (_playlist->name == NULL) {
-                       SAFE_FREE(item->playlist_name);
-                       SAFE_FREE(item);
-                       content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
-                       return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
-               }
+       item->playlist_name = g_strdup(playlist_name);
+       item->function = MEDIA_PLAYLIST_UPDATE_PLAYLIST_NAME;
 
-               __media_playlist_item_add(_playlist, item);
-       } else {
-               content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
-               ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-       }
+       _playlist->name = g_strdup(playlist_name);
+       _playlist->item_list = g_list_append(_playlist->item_list, item);
 
-       return ret;
+       return MEDIA_CONTENT_ERROR_NONE;
 }
 
 int media_playlist_set_thumbnail_path(media_playlist_h playlist, const char *path)
 {
-       int ret = MEDIA_CONTENT_ERROR_NONE;
-       media_playlist_s *_playlist = (media_playlist_s*)playlist;
+       media_playlist_s *_playlist = (media_playlist_s *)playlist;
 
-       if (_playlist != NULL && STRING_VALID(path)) {
-               SAFE_FREE(_playlist->thumbnail_path);
+       content_retip_if_fail(playlist);
+       content_retip_if_fail(STRING_VALID(path));
 
-               media_playlist_item_s *item = (media_playlist_item_s*)calloc(1, sizeof(media_playlist_item_s));
-               content_retvm_if(item == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
+       SAFE_FREE(_playlist->thumbnail_path);
 
-               item->thumbnail_path = g_strdup(path);
-               item->function = MEDIA_PLAYLIST_UPDATE_THUMBNAIL_PATH;
-               if (item->thumbnail_path == NULL) {
-                       SAFE_FREE(item);
-                       content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
-                       return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
-               }
+       media_playlist_item_s *item = (media_playlist_item_s *)calloc(1, sizeof(media_playlist_item_s));
+       content_retvm_if(item == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
 
-               _playlist->thumbnail_path = strdup(path);
-               if (_playlist->thumbnail_path == NULL) {
-                       SAFE_FREE(item->thumbnail_path);
-                       SAFE_FREE(item);
-                       content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
-                       return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
-               }
+       item->thumbnail_path = g_strdup(path);
+       item->function = MEDIA_PLAYLIST_UPDATE_THUMBNAIL_PATH;
 
-               __media_playlist_item_add(_playlist, item);
-       } else {
-               content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
-               ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-       }
+       _playlist->thumbnail_path = g_strdup(path);
+       _playlist->item_list = g_list_append(_playlist->item_list, item);
 
-       return ret;
+       return MEDIA_CONTENT_ERROR_NONE;
 }
 
 int media_playlist_set_play_order(media_playlist_h playlist, int playlist_member_id, int play_order)
 {
-       int ret = MEDIA_CONTENT_ERROR_NONE;
-       media_playlist_s *_playlist = (media_playlist_s*)playlist;
+       media_playlist_s *_playlist = (media_playlist_s *)playlist;
 
-       if ((_playlist != NULL) && (playlist_member_id > 0) && (play_order >= 0)) {
-               media_playlist_item_s *item = (media_playlist_item_s*)calloc(1, sizeof(media_playlist_item_s));
-               content_retvm_if(item == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
+       content_retip_if_fail(playlist);
+       content_retipm_if_fail(playlist_member_id > 0, "%d", playlist_member_id);
+       content_retipm_if_fail(play_order >= 0, "%d", play_order);
 
-               item->playlist_member_id = playlist_member_id;
-               item->function = MEDIA_PLAYLIST_UPDATE_PLAY_ORDER;
-               item->play_order = play_order;
+       media_playlist_item_s *item = (media_playlist_item_s *)calloc(1, sizeof(media_playlist_item_s));
+       content_retvm_if(item == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
 
-               __media_playlist_item_add(_playlist, item);
-       } else {
-               content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
-               ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-       }
+       item->playlist_member_id = playlist_member_id;
+       item->function = MEDIA_PLAYLIST_UPDATE_PLAY_ORDER;
+       item->play_order = play_order;
 
-       return ret;
+       _playlist->item_list = g_list_append(_playlist->item_list, item);
+
+       return MEDIA_CONTENT_ERROR_NONE;
 }
 
 int media_playlist_add_media(media_playlist_h playlist, const char *media_id)
 {
-       int ret = MEDIA_CONTENT_ERROR_NONE;
-       media_playlist_s *_playlist = (media_playlist_s*)playlist;
+       media_playlist_s *_playlist = (media_playlist_s *)playlist;
 
-       if (_playlist != NULL && STRING_VALID(media_id)) {
-               media_playlist_item_s *item = (media_playlist_item_s*)calloc(1, sizeof(media_playlist_item_s));
-               content_retvm_if(item == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
+       content_retip_if_fail(playlist);
+       content_retip_if_fail(STRING_VALID(media_id));
 
-               item->media_id = strdup(media_id);
-               item->function = MEDIA_PLAYLIST_ADD;
+       media_playlist_item_s *item = (media_playlist_item_s *)calloc(1, sizeof(media_playlist_item_s));
+       content_retvm_if(item == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
 
-               if (item->media_id == NULL) {
-                       SAFE_FREE(item);
-                       content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
-                       return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
-               }
+       item->media_id = g_strdup(media_id);
+       item->function = MEDIA_PLAYLIST_ADD;
 
-               __media_playlist_item_add(_playlist, item);
-       } else {
-               content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
-               ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-       }
+       _playlist->item_list = g_list_append(_playlist->item_list, item);
 
-       return ret;
+       return MEDIA_CONTENT_ERROR_NONE;
 }
 
-
 int media_playlist_remove_media(media_playlist_h playlist, int playlist_member_id)
 {
-       int ret = MEDIA_CONTENT_ERROR_NONE;
-       media_playlist_s *_playlist = (media_playlist_s*)playlist;
+       media_playlist_s *_playlist = (media_playlist_s *)playlist;
 
-       if ((_playlist != NULL) && (playlist_member_id > 0)) {
-               media_playlist_item_s *item = (media_playlist_item_s*)calloc(1, sizeof(media_playlist_item_s));
-               content_retvm_if(item == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
+       content_retip_if_fail(playlist);
+       content_retipm_if_fail(playlist_member_id > 0, "%d", playlist_member_id);
 
-               item->playlist_member_id = playlist_member_id;
-               item->function = MEDIA_PLAYLIST_REMOVE;
+       media_playlist_item_s *item = (media_playlist_item_s *)calloc(1, sizeof(media_playlist_item_s));
+       content_retvm_if(item == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
 
-               __media_playlist_item_add(_playlist, item);
-       } else {
-               content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
-               ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-       }
+       item->playlist_member_id = playlist_member_id;
+       item->function = MEDIA_PLAYLIST_REMOVE;
 
-       return ret;
+       _playlist->item_list = g_list_append(_playlist->item_list, item);
+
+       return MEDIA_CONTENT_ERROR_NONE;
 }
 
-int media_playlist_update_to_db(media_playlist_h playlist)
+void __media_playlist_foreach_request(gpointer data, gpointer user_data)
 {
        int ret = MEDIA_CONTENT_ERROR_NONE;
-       media_playlist_s *_playlist = (media_playlist_s*)playlist;
-       int idx = 0;
-       int length = 0;
-       media_playlist_item_s *_playlist_item = NULL;
-
-       if (_playlist == NULL) {
-               content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
-               return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-       }
+       media_playlist_item_s *_playlist_item = (media_playlist_item_s *)data;
+       int playlist_id = *((int *)user_data);
 
-       if (_playlist->item_list != NULL) {
-               length = g_list_length(_playlist->item_list);
-       } else {
-               content_debug("operation list length is 0");
-               return MEDIA_CONTENT_ERROR_NONE;
-       }
+       if (!_playlist_item)
+               return;
 
-       for (idx = 0; idx < length; idx++) {
-               _playlist_item = (media_playlist_item_s*)g_list_nth_data(_playlist->item_list, idx);
-               if (_playlist_item != NULL) {
-                       switch (_playlist_item->function) {
-                       case MEDIA_PLAYLIST_ADD:
-                       {
-                               ret = __media_playlist_insert_item_to_playlist(_playlist->playlist_id, _playlist_item->media_id);
-                       }
-                       break;
+       switch (_playlist_item->function) {
+       case MEDIA_PLAYLIST_ADD:
+               ret = __media_playlist_insert_item_to_playlist(playlist_id, _playlist_item->media_id);
+               break;
 
-                       case MEDIA_PLAYLIST_REMOVE:
-                       {
-                               ret = __media_playlist_remove_item_from_playlist(_playlist->playlist_id, _playlist_item->playlist_member_id);
-                       }
-                       break;
+       case MEDIA_PLAYLIST_REMOVE:
+               ret = __media_playlist_remove_item_from_playlist(playlist_id, _playlist_item->playlist_member_id);
+               break;
 
-                       case MEDIA_PLAYLIST_UPDATE_PLAYLIST_NAME:
-                       {
-                               ret = __media_playlist_update_playlist_name(_playlist->playlist_id, _playlist_item->playlist_name);
-                       }
-                       break;
+       case MEDIA_PLAYLIST_UPDATE_PLAYLIST_NAME:
+               ret = __media_playlist_update_playlist_name(playlist_id, _playlist_item->playlist_name);
+               break;
 
-                       case MEDIA_PLAYLIST_UPDATE_THUMBNAIL_PATH:
-                       {
-                               ret = __media_playlist_update_thumbnail_path(_playlist->playlist_id, _playlist_item->thumbnail_path);
-                       }
-                       break;
+       case MEDIA_PLAYLIST_UPDATE_THUMBNAIL_PATH:
+               ret = __media_playlist_update_thumbnail_path(playlist_id, _playlist_item->thumbnail_path);
+               break;
 
-                       case MEDIA_PLAYLIST_UPDATE_PLAY_ORDER:
-                       {
-                               ret = __media_playlist_update_play_order(_playlist->playlist_id, _playlist_item->playlist_member_id, _playlist_item->play_order);
-                       }
-                       break;
+       case MEDIA_PLAYLIST_UPDATE_PLAY_ORDER:
+               ret = __media_playlist_update_play_order(playlist_id, _playlist_item->playlist_member_id, _playlist_item->play_order);
+               break;
 
-                       default:
-                       break;
-                       }
+       default:
+               break;
+       }
 
-                       if (ret != MEDIA_CONTENT_ERROR_NONE)
-                               content_error("Failed some operation[%d]", _playlist_item->function);
-               }
+       if (ret != MEDIA_CONTENT_ERROR_NONE)
+               content_error("Failed some operation[%d]", _playlist_item->function);
+}
+
+int media_playlist_update_to_db(media_playlist_h playlist)
+{
+       int ret = MEDIA_CONTENT_ERROR_NONE;
+       media_playlist_s *_playlist = (media_playlist_s *)playlist;
+
+       content_retip_if_fail(playlist);
+       content_retvm_if(!_playlist->item_list, MEDIA_CONTENT_ERROR_NONE, "operation list length is 0");
+
+       g_list_foreach(_playlist->item_list, __media_playlist_foreach_request, &(_playlist->playlist_id));
 
-       }
        ret = media_svc_send_query(_content_get_uid());
 
        __media_playlist_item_release(_playlist);
@@ -839,16 +567,60 @@ int media_playlist_update_to_db(media_playlist_h playlist)
        return _content_error_capi(ret);
 }
 
+static int __media_playlist_get_media_id_by_path(const char *path, char **media_id)
+{
+       int ret = MEDIA_CONTENT_ERROR_NONE;
+       char *query = NULL;
+       sqlite3_stmt *stmt = NULL;
+       content_retip_if_fail(path);
+
+#ifdef _USE_TVPD_MODE
+       query = sqlite3_mprintf("SELECT media_id FROM '%q' WHERE media_path='%q'", DB_VIEW_MEDIA, path);
+#else
+       query = sqlite3_mprintf("SELECT media_id FROM '%q' WHERE media_path='%q'", DB_TABLE_MEDIA, path);
+#endif
+       ret = _content_get_result(query, &stmt);
+       SQLITE3_SAFE_FREE(query);
+       content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "Failed to get media_id");
+
+       if (sqlite3_step(stmt) == SQLITE_ROW)
+               *media_id = g_strdup((const char *)sqlite3_column_text(stmt, 0));
+
+       SQLITE3_FINALIZE(stmt);
+
+       return ret;
+}
+
+static void __media_playlist_foreach_item(gpointer item, gpointer user_data)
+{
+       int ret = MEDIA_CONTENT_ERROR_NONE;
+       char *path = (char *)item;
+       media_playlist_h *playlist = (media_playlist_h *)user_data;
+       char *media_id = NULL;
+
+       ret = __media_playlist_get_media_id_by_path(path, &media_id);
+       if (ret != MEDIA_CONTENT_ERROR_NONE) {
+               content_sec_error("Fail to get media_id [%s]", path);
+               return;
+       }
+
+       ret = media_playlist_add_media(*playlist, media_id);
+       g_free(media_id);
+       if (ret != MEDIA_CONTENT_ERROR_NONE) {
+               content_sec_error("Fail to add media [%s]", path);
+               return;
+       }
+}
+
 int media_playlist_import_from_file(const char *path, const char *playlist_name, media_playlist_h *playlist)
 {
        int ret = MEDIA_CONTENT_ERROR_NONE;
-       char** import_item_list = NULL;
-       int import_item_count = 0;
-       int idx;
+       GSList *item_list = NULL;
        char repl_path[MAX_PATH_LEN] = {0, };
 
-       content_retvm_if(!STRING_VALID(path), MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Invalid path");
-       content_retvm_if(!STRING_VALID(playlist_name), MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Invalid playlist_name");
+       content_retip_if_fail(STRING_VALID(path));
+       content_retip_if_fail(STRING_VALID(playlist_name));
+
        memset(repl_path, 0, sizeof(repl_path));
        ret = _media_content_replace_path(path, repl_path);
        content_retvm_if(!STRING_VALID(repl_path), MEDIA_CONTENT_ERROR_INVALID_OPERATION, "path replacement failed");
@@ -856,82 +628,29 @@ int media_playlist_import_from_file(const char *path, const char *playlist_name,
        ret = media_playlist_insert_to_db(playlist_name, playlist);
        content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "media_playlist_insert_to_db fail");
 
-       ret = __media_playlist_import_item_from_file(repl_path, &import_item_list, &import_item_count);
-       if (ret != MEDIA_CONTENT_ERROR_NONE) {
-               __media_playlist_destroy_import_item(import_item_list, import_item_count);
-               content_error("Fail to get playlist from file");
-               return ret;
-       }
-
-       if (import_item_count == 0)
-               content_debug("The playlist from file is empty");
+       ret = __media_playlist_import_item_from_file(repl_path, &item_list);
+       content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "Fail to get playlist from file");
 
-       for (idx = 0; idx < import_item_count; idx++) {
-               filter_h filter = NULL;
-               char *media_id = NULL;
-               char *condition = NULL;
-
-               ret = media_filter_create(&filter);
-               if (ret != MEDIA_CONTENT_ERROR_NONE) {
-                       __media_playlist_destroy_import_item(import_item_list, import_item_count);
-                       media_filter_destroy(filter);
-                       content_error("error media_filter_create");
-                       return ret;
-               }
-               condition = sqlite3_mprintf("media_path = '%q'", import_item_list[idx]);
-               ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
-               if (ret != MEDIA_CONTENT_ERROR_NONE) {
-                       __media_playlist_destroy_import_item(import_item_list, import_item_count);
-                       media_filter_destroy(filter);
-                       SQLITE3_SAFE_FREE(condition);
-                       content_error("error media_filter_set_condition");
-                       return ret;
-               }
-               ret = _media_db_get_group_item(NULL, filter, __media_playlist_media_info_cb, &media_id, MEDIA_GROUP_NONE);
-               if (ret != MEDIA_CONTENT_ERROR_NONE) {
-                       __media_playlist_destroy_import_item(import_item_list, import_item_count);
-                       media_filter_destroy(filter);
-                       SAFE_FREE(media_id);
-                       SQLITE3_SAFE_FREE(condition);
-                       content_error("error media_info_foreach_media_from_db");
-                       return ret;
-               }
-               ret = media_playlist_add_media((media_playlist_h)*playlist, media_id);
-               if (ret != MEDIA_CONTENT_ERROR_NONE) {
-                       __media_playlist_destroy_import_item(import_item_list, import_item_count);
-                       media_filter_destroy(filter);
-                       SAFE_FREE(media_id);
-                       SQLITE3_SAFE_FREE(condition);
-                       content_error("error media_playlist_add_media");
-                       return ret;
-               }
-               media_filter_destroy(filter);
-               SAFE_FREE(media_id);
-               SQLITE3_SAFE_FREE(condition);
-       }
+       g_slist_foreach(item_list, __media_playlist_foreach_item, playlist);
 
        ret = media_playlist_update_to_db(*playlist);
-       if (ret != MEDIA_CONTENT_ERROR_NONE) {
-               __media_playlist_destroy_import_item(import_item_list, import_item_count);
-               content_error("Fail to update playlist to db");
-               return ret;
-       }
-       __media_playlist_destroy_import_item(import_item_list, import_item_count);
+       g_slist_free_full(item_list, g_free);
 
        return ret;
 }
 
-int media_playlist_export_to_file(media_playlist_h playlist, const charpath)
+int media_playlist_export_to_file(media_playlist_h playlist, const char *path)
 {
        int ret = MEDIA_CONTENT_ERROR_NONE;
-       media_playlist_s *_playlist = (media_playlist_s*)playlist;
+       media_playlist_s *_playlist = (media_playlist_s *)playlist;
        GList *item_list = NULL;
        unsigned int idx = 0;
        char repl_path[MAX_PATH_LEN] = {0, };
 
-       content_retvm_if(!STRING_VALID(path), MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Invalid path");
-       content_retvm_if(_playlist == NULL, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Invalid playlist");
-       content_retvm_if(_playlist->playlist_id <= 0, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Invalid playlist_id");
+       content_retip_if_fail(STRING_VALID(path));
+       content_retip_if_fail(playlist);
+       content_retipm_if_fail(_playlist->playlist_id > 0, "%d", _playlist->playlist_id);
+
        memset(repl_path, 0, sizeof(repl_path));
        ret = _media_content_replace_path(path, repl_path);
        content_retvm_if(!STRING_VALID(repl_path), MEDIA_CONTENT_ERROR_INVALID_OPERATION, "path replacement failed");
@@ -941,7 +660,7 @@ int media_playlist_export_to_file(media_playlist_h playlist, const char* path)
 
        ret = __media_playlist_reset_file(repl_path);
        if (ret != MEDIA_CONTENT_ERROR_NONE) {
-               g_list_free_full(item_list, __media_playlist_destroy_export_item);
+               g_list_free_full(item_list, g_free);
                content_error("Fail to init playlist file");
                return ret;
        }
@@ -951,25 +670,23 @@ int media_playlist_export_to_file(media_playlist_h playlist, const char* path)
                if (STRING_VALID(item)) {
                        ret = __media_playlist_append_to_file(repl_path, item);
                        if (ret != MEDIA_CONTENT_ERROR_NONE) {
-                               g_list_free_full(item_list, __media_playlist_destroy_export_item);
+                               g_list_free_full(item_list, g_free);
                                content_error("Fail to export paths into file");
                                return ret;
                        }
                }
        }
 
-       g_list_free_full(item_list, __media_playlist_destroy_export_item);
+       g_list_free_full(item_list, g_free);
 
        return ret;
 }
 
 int media_playlist_create(media_playlist_h *playlist)
 {
-       int ret = MEDIA_CONTENT_ERROR_NONE;
+       content_retip_if_fail(playlist);
 
-       content_retvm_if(playlist == NULL, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "invalid playlist");
-
-       media_playlist_s *_playlist = (media_playlist_s*)calloc(1, sizeof(media_playlist_s));
+       media_playlist_s *_playlist = (media_playlist_s *)calloc(1, sizeof(media_playlist_s));
        content_retvm_if(_playlist == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
 
        _playlist->playlist_id = -1;
@@ -979,29 +696,27 @@ int media_playlist_create(media_playlist_h *playlist)
 
        *playlist = (media_playlist_h)_playlist;
 
-       return ret;
+       return MEDIA_CONTENT_ERROR_NONE;
 }
 
 int media_playlist_get_play_order_v2(int playlist_id, int playlist_member_id, int *play_order)
 {
        int ret = MEDIA_CONTENT_ERROR_NONE;
        sqlite3_stmt *stmt = NULL;
-       char select_query[DEFAULT_QUERY_SIZE] = {0, };
-
-       if ((playlist_id < 0) || (playlist_member_id < 0) || (play_order == NULL)) {
-               content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
-               return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-       }
+       char *query = NULL;
 
-       memset(select_query, 0x00, sizeof(select_query));
+       content_retipm_if_fail(playlist_id >= 0, "%d", playlist_id);
+       content_retipm_if_fail(playlist_member_id >= 0, "%d", playlist_member_id);
+       content_retip_if_fail(play_order);
 
-       snprintf(select_query, sizeof(select_query), SELECT_PLAY_ORDER_FROM_PLAYLIST_VIEW, playlist_id, playlist_member_id);
+       query = sqlite3_mprintf(SELECT_PLAY_ORDER_FROM_PLAYLIST_VIEW, playlist_id, playlist_member_id);
 
-       ret = _content_get_result(select_query, &stmt);
+       ret = _content_get_result(query, &stmt);
+       SQLITE3_SAFE_FREE(query);
        content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        if (sqlite3_step(stmt) == SQLITE_ROW)
-               *play_order = (int)sqlite3_column_int(stmt, 0);
+               *play_order = sqlite3_column_int(stmt, 0);
 
        SQLITE3_FINALIZE(stmt);
 
@@ -1011,11 +726,11 @@ int media_playlist_get_play_order_v2(int playlist_id, int playlist_member_id, in
 int media_playlist_insert_to_db_v2(media_playlist_h playlist)
 {
        int ret = MEDIA_CONTENT_ERROR_NONE;
-       media_playlist_s *_playlist = (media_playlist_s*)playlist;
+       media_playlist_s *_playlist = (media_playlist_s *)playlist;
        int playlist_id = 0;
 
-       content_retvm_if(_playlist == NULL, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Invalid playlist");
-       content_retvm_if(_playlist->playlist_id != -1, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "invalid playlist insert");
+       content_retip_if_fail(playlist);
+       content_retipm_if_fail(_playlist->playlist_id == -1, "%d", _playlist->playlist_id);
 
        ret = __media_playlist_insert_playlist_record(_playlist->name, &playlist_id);
        if (ret != MEDIA_CONTENT_ERROR_NONE) {
@@ -1026,16 +741,13 @@ int media_playlist_insert_to_db_v2(media_playlist_h playlist)
 
        _playlist->playlist_id = playlist_id;
 
-       ret = media_playlist_update_to_db(playlist);
-
-       return ret;
+       return media_playlist_update_to_db(playlist);
 }
 
 int media_playlist_update_to_db_v2(int playlist_id, media_playlist_h playlist)
 {
-       media_playlist_s *_playlist = (media_playlist_s*)playlist;
-
-       content_retvm_if(_playlist == NULL, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Invalid playlist");
+       media_playlist_s *_playlist = (media_playlist_s *)playlist;
+       content_retip_if_fail(playlist);
 
        _playlist->playlist_id = playlist_id;