X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fmedia_bookmark.c;h=5c8f88ca86c4fc1052635666b003bddc345d10b5;hb=9d15701e2caada225fd93cd0b4b14fee53a9263d;hp=0ce1f24ecb300c68c60bcf50f8c941f05835cfb2;hpb=b2ce79924a211d908ebc5cef40889e34bbe9418f;p=platform%2Fcore%2Fapi%2Fmedia-content.git diff --git a/src/media_bookmark.c b/src/media_bookmark.c index 0ce1f24..5c8f88c 100755 --- a/src/media_bookmark.c +++ b/src/media_bookmark.c @@ -15,27 +15,42 @@ */ -#include #include -#include +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; }