apply content_retip_if_fail() for invalid parameters
[platform/core/api/media-content.git] / src / media_bookmark.c
index 0ce1f24..5c8f88c 100755 (executable)
 */
 
 
-#include <media_content.h>
 #include <media_info_private.h>
-#include <media-svc.h>
 
+static int __media_bookmark_check_media_id(const char *media_id)
+{
+       int ret = MEDIA_CONTENT_ERROR_NONE;
+       char *query_str = NULL;
+       sqlite3_stmt *stmt = NULL;
+       int item_count = 0;
+
+       content_retip_if_fail(STRING_VALID(media_id));
+
+       query_str = sqlite3_mprintf(SELECT_MEDIA_COUNT_FROM_MEDIA_BY_ID, media_id);
+       ret = _content_get_result(query_str, &stmt);
+       SQLITE3_SAFE_FREE(query_str);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+
+       if (sqlite3_step(stmt) == SQLITE_ROW)
+               item_count = (int)sqlite3_column_int(stmt, 0);
+
+       SQLITE3_FINALIZE(stmt);
+
+       content_retvm_if(item_count == 0, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Invalid media_id");
+
+       return MEDIA_CONTENT_ERROR_NONE;
+}
 
 int media_bookmark_insert_to_db(const char *media_id, time_t time, const char *thumbnail_path)
 {
        int ret = MEDIA_CONTENT_ERROR_NONE;
        char *sql = NULL;
 
-       if(STRING_VALID(media_id))
-       {
-               sql = sqlite3_mprintf(INSERT_BOOKMARK_TO_BOOKMARK, media_id, time, thumbnail_path);
-               ret = _content_query_sql(sql);
-               sqlite3_free(sql);
-       }
-       else
-       {
-               media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
-               ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-       }
+       content_retip_if_fail(STRING_VALID(media_id));
+
+       sql = sqlite3_mprintf(INSERT_BOOKMARK_TO_BOOKMARK, media_id, time, thumbnail_path, MEDIA_CONTENT_EMPTY_STRING);
+       ret = _content_query_sql(sql);
+       SQLITE3_SAFE_FREE(sql);
 
        return ret;
 }
@@ -45,178 +60,198 @@ int media_bookmark_delete_from_db(int bookmark_id)
        int ret = MEDIA_CONTENT_ERROR_NONE;
        char *query_str = NULL;
 
-       if(bookmark_id < 0)
-       {
-               media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
-               return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-       }
+       content_retip_if_fail(bookmark_id >= 0);
 
        query_str = sqlite3_mprintf(DELETE_BOOKMARK_FROM_BOOKMARK, bookmark_id);
-
        ret = _content_query_sql(query_str);
-
-       sqlite3_free(query_str);
+       SQLITE3_SAFE_FREE(query_str);
 
        return ret;
 }
 
 int media_bookmark_get_bookmark_count_from_db(filter_h filter, int *bookmark_count)
 {
-       int ret = MEDIA_CONTENT_ERROR_NONE;
+       content_retip_if_fail(bookmark_count);
 
-       media_content_debug_func();
-
-       if (bookmark_count == NULL)
-       {
-               media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
-               return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-       }
+       return _media_db_get_group_count(filter, MEDIA_GROUP_BOOKMARK, bookmark_count);
+}
 
-       ret = _media_db_get_group_count(filter, MEDIA_GROUP_BOOKMARK, bookmark_count);
+int media_bookmark_foreach_bookmark_from_db(filter_h filter, media_bookmark_cb callback, void *user_data)
+{
+       content_retip_if_fail(callback);
 
-       return ret;
+       return _media_db_get_bookmark(NULL, filter, callback, user_data);
 }
 
 int media_bookmark_destroy(media_bookmark_h bookmark)
 {
-       int ret = MEDIA_CONTENT_ERROR_NONE;
-       media_bookmark_s *_bookmark = (media_bookmark_s*)bookmark;
-
-       if(_bookmark)
-       {
-               SAFE_FREE(_bookmark->media_id);
-               SAFE_FREE(_bookmark->thumbnail_path);
-               free(_bookmark);
-               ret = MEDIA_CONTENT_ERROR_NONE;
-       }
-       else
-       {
-               media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
-               ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-       }
+       media_bookmark_s *_bookmark = (media_bookmark_s *)bookmark;
 
-       return ret;
+       content_retip_if_fail(bookmark);
+
+       g_free(_bookmark->media_id);
+       g_free(_bookmark->thumbnail_path);
+       g_free(_bookmark->name);
+       g_free(_bookmark);
+
+       return MEDIA_CONTENT_ERROR_NONE;
 }
 int media_bookmark_clone(media_bookmark_h *dst, media_bookmark_h src)
 {
-       int ret = MEDIA_CONTENT_ERROR_NONE;
+       media_bookmark_s *_src = (media_bookmark_s *)src;
 
-       if((src != NULL))
-       {
-               media_bookmark_s *_src = (media_bookmark_s*)src;
-               media_bookmark_s *_dst = (media_bookmark_s*)calloc(1, sizeof(media_bookmark_s));
-
-               if(NULL == _dst)
-               {
-                       media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
-                       return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
-               }
-
-               _dst->bookmark_id = _src->bookmark_id;
-
-               if(STRING_VALID(_src->media_id))
-               {
-                       _dst->media_id = (char*)strdup(_src->media_id);
-                       if(_dst->media_id == NULL)
-                       {
-                               media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
-                               media_bookmark_destroy((media_bookmark_h)_dst);
-                               return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
-                       }
-               }
-
-               _dst->marked_time = _src->marked_time;
-
-               if(STRING_VALID(_src->thumbnail_path))
-               {
-                       _dst->thumbnail_path = (char*)strdup(_src->thumbnail_path);
-                       if(_dst->thumbnail_path == NULL)
-                       {
-                               media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
-                               media_bookmark_destroy((media_bookmark_h)_dst);
-                               return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
-                       }
-               }
-
-               *dst = (media_bookmark_h)_dst;
-
-               ret = MEDIA_CONTENT_ERROR_NONE;
-       }
-       else
-       {
-               media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
-               ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-       }
+       content_retip_if_fail(dst);
+       content_retip_if_fail(src);
 
-       return ret;
+       media_bookmark_s *_dst = g_new0(media_bookmark_s, 1);
+
+       _dst->bookmark_id = _src->bookmark_id;
+       _dst->media_id = g_strdup(_src->media_id);
+       _dst->marked_time = _src->marked_time;
+       _dst->thumbnail_path = g_strdup(_src->thumbnail_path);
+       _dst->name = g_strdup(_src->name);
+
+       *dst = (media_bookmark_h)_dst;
+
+       return MEDIA_CONTENT_ERROR_NONE;
 }
 
 int media_bookmark_get_bookmark_id(media_bookmark_h bookmark, int *bookmark_id)
 {
+       media_bookmark_s *_bookmark = (media_bookmark_s *)bookmark;
+
+       content_retip_if_fail(bookmark);
+       content_retip_if_fail(bookmark_id);
+
+       *bookmark_id = _bookmark->bookmark_id;
+
+       return MEDIA_CONTENT_ERROR_NONE;
+}
+
+int media_bookmark_get_marked_time(media_bookmark_h bookmark, time_t* marked_time)
+{
+       media_bookmark_s *_bookmark = (media_bookmark_s *)bookmark;
+
+       content_retip_if_fail(bookmark);
+       content_retip_if_fail(marked_time);
+
+       *marked_time = _bookmark->marked_time;
+
+       return MEDIA_CONTENT_ERROR_NONE;
+}
+
+int media_bookmark_get_thumbnail_path(media_bookmark_h bookmark, char **path)
+{
+       media_bookmark_s *_bookmark = (media_bookmark_s *)bookmark;
+
+       content_retip_if_fail(bookmark);
+       content_retip_if_fail(path);
+
+       *path = g_strdup(_bookmark->thumbnail_path);
+
+       return MEDIA_CONTENT_ERROR_NONE;
+}
+
+int media_bookmark_get_name(media_bookmark_h bookmark, char **name)
+{
+       media_bookmark_s *_bookmark = (media_bookmark_s *)bookmark;
+
+       content_retip_if_fail(bookmark);
+       content_retip_if_fail(name);
+
+       *name = g_strdup(_bookmark->name);
+
+       return MEDIA_CONTENT_ERROR_NONE;
+}
+
+int media_bookmark_set_name(media_bookmark_h bookmark, const char *name)
+{
+       media_bookmark_s *_bookmark = (media_bookmark_s *)bookmark;
+
+       content_retip_if_fail(bookmark);
+
+       g_free(_bookmark->name);
+       _bookmark->name = g_strdup(STRING_VALID(name) ? name : MEDIA_CONTENT_EMPTY_STRING);
+
+       return MEDIA_CONTENT_ERROR_NONE;
+}
+
+int media_bookmark_update_to_db(media_bookmark_h bookmark)
+{
        int ret = MEDIA_CONTENT_ERROR_NONE;
-       media_bookmark_s *_bookmark = (media_bookmark_s*)bookmark;
-
-       if(_bookmark)
-       {
-               *bookmark_id = _bookmark->bookmark_id;
-               ret = MEDIA_CONTENT_ERROR_NONE;
-       }
-       else
-       {
-               media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
-               ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-       }
+       media_bookmark_s *_bookmark = (media_bookmark_s *)bookmark;
+       char *sql = NULL;
+
+       content_retip_if_fail(bookmark);
+
+       sql = sqlite3_mprintf(UPDATE_BOOKMARK_FROM_BOOKMARK, _bookmark->name, _bookmark->bookmark_id);
+       ret = _content_query_sql(sql);
+       SQLITE3_SAFE_FREE(sql);
 
        return ret;
 }
 
-int media_bookmark_get_marked_time(media_bookmark_h bookmark, time_t* marked_time)
+int media_bookmark_create(const char *media_id, time_t time, media_bookmark_h *bookmark)
 {
        int ret = MEDIA_CONTENT_ERROR_NONE;
-       media_bookmark_s *_bookmark = (media_bookmark_s*)bookmark;
-
-       if(_bookmark)
-       {
-               *marked_time = _bookmark->marked_time;
-               ret = MEDIA_CONTENT_ERROR_NONE;
-       }
-       else
-       {
-               media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
-               ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-       }
+
+       content_retip_if_fail(bookmark);
+
+       ret = __media_bookmark_check_media_id(media_id);
+       content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "Not exist media_id");
+
+       media_bookmark_s *_bookmark = g_new0(media_bookmark_s, 1);
+
+       _bookmark->media_id = g_strdup(media_id);
+       _bookmark->bookmark_id = -1;
+       _bookmark->marked_time = time;
+
+       *bookmark = (media_bookmark_h)_bookmark;
 
        return ret;
 }
 
-int media_bookmark_get_thumbnail_path(media_bookmark_h bookmark, char **path)
+int media_bookmark_set_thumbnail_path(media_bookmark_h bookmark, const char *path)
+{
+       media_bookmark_s *_bookmark = (media_bookmark_s *)bookmark;
+
+       content_retip_if_fail(bookmark);
+
+       g_free(_bookmark->thumbnail_path);
+       _bookmark->thumbnail_path = g_strdup(path);
+
+       return MEDIA_CONTENT_ERROR_NONE;
+}
+
+int media_bookmark_insert_to_db_v2(media_bookmark_h bookmark)
 {
        int ret = MEDIA_CONTENT_ERROR_NONE;
-       media_bookmark_s *_bookmark = (media_bookmark_s*)bookmark;
-
-       if(_bookmark)
-       {
-               if(STRING_VALID(_bookmark->thumbnail_path))
-               {
-                       *path = strdup(_bookmark->thumbnail_path);
-                       if(*path == NULL)
-                       {
-                               media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
-                               return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
-                       }
-               }
-               else
-               {
-                       *path = NULL;
-               }
-
-               ret = MEDIA_CONTENT_ERROR_NONE;
-       }
-       else
-       {
-               media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
-               ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-       }
+       media_bookmark_s *_bookmark = (media_bookmark_s *)bookmark;
+       char *sql = NULL;
+       sqlite3_stmt *stmt = NULL;
+       int bookmark_id = -1;
+
+       content_retip_if_fail(bookmark);
+       content_retip_if_fail(_bookmark->bookmark_id == -1);
+
+       sql = sqlite3_mprintf(INSERT_BOOKMARK_TO_BOOKMARK,
+               _bookmark->media_id, _bookmark->marked_time, _bookmark->thumbnail_path, _bookmark->name);
+
+       ret = _content_query_sql(sql);
+       SQLITE3_SAFE_FREE(sql);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+
+       sql = sqlite3_mprintf(SELECT_BOOKMARK_ID_FROM_BOOKMARK, _bookmark->media_id, _bookmark->marked_time);
+       ret = _content_get_result(sql, &stmt);
+       SQLITE3_SAFE_FREE(sql);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+
+       if (sqlite3_step(stmt) == SQLITE_ROW)
+               bookmark_id = sqlite3_column_int(stmt, 0);
+
+       SQLITE3_FINALIZE(stmt);
+
+       _bookmark->bookmark_id = bookmark_id;
 
        return ret;
 }