apply content_retip_if_fail() for invalid parameters
[platform/core/api/media-content.git] / src / media_bookmark.c
index 4aef252..5c8f88c 100755 (executable)
 
 
 #include <media_info_private.h>
-#include <media_util_private.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_SAFE_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;
 }
@@ -41,15 +60,10 @@ 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_SAFE_FREE(query_str);
 
        return ret;
@@ -57,192 +71,187 @@ int media_bookmark_delete_from_db(int bookmark_id)
 
 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);
 
-       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);
-               SAFE_FREE(_bookmark->name);
-               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));
-               media_content_retvm_if(_dst == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "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;
-                       }
-               }
-
-               if (STRING_VALID(_src->name)) {
-                       _dst->name = (char*)strdup(_src->name);
-                       if (_dst->name == 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)
 {
-       int ret = MEDIA_CONTENT_ERROR_NONE;
-       media_bookmark_s *_bookmark = (media_bookmark_s*)bookmark;
+       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;
-       }
+       content_retip_if_fail(bookmark);
+       content_retip_if_fail(bookmark_id);
 
-       return ret;
+       *bookmark_id = _bookmark->bookmark_id;
+
+       return MEDIA_CONTENT_ERROR_NONE;
 }
 
 int media_bookmark_get_marked_time(media_bookmark_h bookmark, time_t* marked_time)
 {
-       int ret = MEDIA_CONTENT_ERROR_NONE;
-       media_bookmark_s *_bookmark = (media_bookmark_s*)bookmark;
+       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);
+       content_retip_if_fail(marked_time);
 
-       return ret;
+       *marked_time = _bookmark->marked_time;
+
+       return MEDIA_CONTENT_ERROR_NONE;
 }
 
 int media_bookmark_get_thumbnail_path(media_bookmark_h bookmark, char **path)
 {
-       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);
-                       media_content_retvm_if(*path == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "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;
 
-       return ret;
+       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) {
-               if (STRING_VALID(_bookmark->name)) {
-                       *name = strdup(_bookmark->name);
-                       media_content_retvm_if(*name == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
-               } else {
-                       *name = 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;
+
+       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_set_name(media_bookmark_h bookmark, const char *name)
+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 (STRING_VALID(name)) {
-               _bookmark->name = strdup(name);
-               media_content_retvm_if(_bookmark->name == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
-       } else {
-               _bookmark->name = NULL;
-       }
+       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_update_to_db(media_bookmark_h bookmark)
+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;
+       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);
 
-       if (_bookmark != NULL) {
-               sql = sqlite3_mprintf(UPDATE_BOOKMARK_FROM_BOOKMARK, _bookmark->name, _bookmark->bookmark_id);
-               ret = _content_query_sql(sql);
-               SQLITE3_SAFE_FREE(sql);
-       } else {
-               media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
-               ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-       }
+       _bookmark->bookmark_id = bookmark_id;
 
        return ret;
 }