2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 #include <media_info_private.h>
20 static int __media_bookmark_check_media_id(const char *media_id)
22 int ret = MEDIA_CONTENT_ERROR_NONE;
23 char *query_str = NULL;
24 sqlite3_stmt *stmt = NULL;
27 content_retvm_if(!STRING_VALID(media_id), MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "invalid media_id");
29 query_str = sqlite3_mprintf(SELECT_MEDIA_COUNT_FROM_MEDIA_BY_ID, media_id);
30 ret = _content_get_result(query_str, &stmt);
31 SQLITE3_SAFE_FREE(query_str);
32 content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
34 if (sqlite3_step(stmt) == SQLITE_ROW)
35 item_count = (int)sqlite3_column_int(stmt, 0);
37 SQLITE3_FINALIZE(stmt);
39 content_retvm_if(item_count == 0, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Invalid media_id");
41 return MEDIA_CONTENT_ERROR_NONE;
44 int media_bookmark_insert_to_db(const char *media_id, time_t time, const char *thumbnail_path)
46 int ret = MEDIA_CONTENT_ERROR_NONE;
48 content_retvm_if(!STRING_VALID(media_id), MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Invalid parameter");
50 sql = sqlite3_mprintf(INSERT_BOOKMARK_TO_BOOKMARK, media_id, time, thumbnail_path, MEDIA_CONTENT_EMPTY_STRING);
51 ret = _content_query_sql(sql);
52 SQLITE3_SAFE_FREE(sql);
57 int media_bookmark_delete_from_db(int bookmark_id)
59 int ret = MEDIA_CONTENT_ERROR_NONE;
60 char *query_str = NULL;
61 content_retvm_if(bookmark_id < 0, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Invalid parameter");
63 query_str = sqlite3_mprintf(DELETE_BOOKMARK_FROM_BOOKMARK, bookmark_id);
64 ret = _content_query_sql(query_str);
65 SQLITE3_SAFE_FREE(query_str);
70 int media_bookmark_get_bookmark_count_from_db(filter_h filter, int *bookmark_count)
72 content_retvm_if(!bookmark_count, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Invalid parameter");
74 return _media_db_get_group_count(filter, MEDIA_GROUP_BOOKMARK, bookmark_count);
77 int media_bookmark_foreach_bookmark_from_db(filter_h filter, media_bookmark_cb callback, void *user_data)
79 content_retvm_if(!callback, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "invalid paramter");
81 return _media_db_get_bookmark(NULL, filter, callback, user_data);
84 int media_bookmark_destroy(media_bookmark_h bookmark)
86 media_bookmark_s *_bookmark = (media_bookmark_s *)bookmark;
87 content_retvm_if(!_bookmark, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "invalid paramter");
89 g_free(_bookmark->media_id);
90 g_free(_bookmark->thumbnail_path);
91 g_free(_bookmark->name);
94 return MEDIA_CONTENT_ERROR_NONE;
96 int media_bookmark_clone(media_bookmark_h *dst, media_bookmark_h src)
98 media_bookmark_s *_src = (media_bookmark_s *)src;
100 content_retip_if_fail(dst);
101 content_retip_if_fail(src);
103 media_bookmark_s *_dst = g_new0(media_bookmark_s, 1);
105 _dst->bookmark_id = _src->bookmark_id;
106 _dst->media_id = g_strdup(_src->media_id);
107 _dst->marked_time = _src->marked_time;
108 _dst->thumbnail_path = g_strdup(_src->thumbnail_path);
109 _dst->name = g_strdup(_src->name);
111 *dst = (media_bookmark_h)_dst;
113 return MEDIA_CONTENT_ERROR_NONE;
116 int media_bookmark_get_bookmark_id(media_bookmark_h bookmark, int *bookmark_id)
118 media_bookmark_s *_bookmark = (media_bookmark_s *)bookmark;
119 content_retvm_if(!_bookmark || !bookmark_id, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Invalid parameter");
121 *bookmark_id = _bookmark->bookmark_id;
123 return MEDIA_CONTENT_ERROR_NONE;
126 int media_bookmark_get_marked_time(media_bookmark_h bookmark, time_t* marked_time)
128 media_bookmark_s *_bookmark = (media_bookmark_s *)bookmark;
129 content_retvm_if(!_bookmark || !marked_time, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Invalid parameter");
131 *marked_time = _bookmark->marked_time;
133 return MEDIA_CONTENT_ERROR_NONE;
136 int media_bookmark_get_thumbnail_path(media_bookmark_h bookmark, char **path)
138 media_bookmark_s *_bookmark = (media_bookmark_s *)bookmark;
140 content_retip_if_fail(bookmark);
141 content_retip_if_fail(path);
143 *path = g_strdup(_bookmark->thumbnail_path);
145 return MEDIA_CONTENT_ERROR_NONE;
148 int media_bookmark_get_name(media_bookmark_h bookmark, char **name)
150 media_bookmark_s *_bookmark = (media_bookmark_s *)bookmark;
152 content_retip_if_fail(bookmark);
153 content_retip_if_fail(name);
155 *name = g_strdup(_bookmark->name);
157 return MEDIA_CONTENT_ERROR_NONE;
160 int media_bookmark_set_name(media_bookmark_h bookmark, const char *name)
162 media_bookmark_s *_bookmark = (media_bookmark_s *)bookmark;
164 content_retip_if_fail(bookmark);
166 g_free(_bookmark->name);
167 _bookmark->name = g_strdup(STRING_VALID(name) ? name : MEDIA_CONTENT_EMPTY_STRING);
169 return MEDIA_CONTENT_ERROR_NONE;
172 int media_bookmark_update_to_db(media_bookmark_h bookmark)
174 int ret = MEDIA_CONTENT_ERROR_NONE;
175 media_bookmark_s *_bookmark = (media_bookmark_s *)bookmark;
177 content_retvm_if(!_bookmark, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Invalid parameter");
179 sql = sqlite3_mprintf(UPDATE_BOOKMARK_FROM_BOOKMARK, _bookmark->name, _bookmark->bookmark_id);
180 ret = _content_query_sql(sql);
181 SQLITE3_SAFE_FREE(sql);
186 int media_bookmark_create(const char *media_id, time_t time, media_bookmark_h *bookmark)
188 int ret = MEDIA_CONTENT_ERROR_NONE;
190 content_retip_if_fail(bookmark);
192 ret = __media_bookmark_check_media_id(media_id);
193 content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "Not exist media_id");
195 media_bookmark_s *_bookmark = g_new0(media_bookmark_s, 1);
197 _bookmark->media_id = g_strdup(media_id);
198 _bookmark->bookmark_id = -1;
199 _bookmark->marked_time = time;
201 *bookmark = (media_bookmark_h)_bookmark;
206 int media_bookmark_set_thumbnail_path(media_bookmark_h bookmark, const char *path)
208 media_bookmark_s *_bookmark = (media_bookmark_s *)bookmark;
210 content_retip_if_fail(bookmark);
212 g_free(_bookmark->thumbnail_path);
213 _bookmark->thumbnail_path = g_strdup(path);
215 return MEDIA_CONTENT_ERROR_NONE;
218 int media_bookmark_insert_to_db_v2(media_bookmark_h bookmark)
220 int ret = MEDIA_CONTENT_ERROR_NONE;
221 media_bookmark_s *_bookmark = (media_bookmark_s *)bookmark;
223 sqlite3_stmt *stmt = NULL;
224 int bookmark_id = -1;
226 content_retvm_if(!_bookmark, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Invalid bookmark");
227 content_retvm_if(_bookmark->bookmark_id != -1, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Invalid bookmark");
229 sql = sqlite3_mprintf(INSERT_BOOKMARK_TO_BOOKMARK,
230 _bookmark->media_id, _bookmark->marked_time, _bookmark->thumbnail_path, _bookmark->name);
232 ret = _content_query_sql(sql);
233 SQLITE3_SAFE_FREE(sql);
234 content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
236 sql = sqlite3_mprintf(SELECT_BOOKMARK_ID_FROM_BOOKMARK, _bookmark->media_id, _bookmark->marked_time);
237 ret = _content_get_result(sql, &stmt);
238 SQLITE3_SAFE_FREE(sql);
239 content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
241 if (sqlite3_step(stmt) == SQLITE_ROW)
242 bookmark_id = sqlite3_column_int(stmt, 0);
244 SQLITE3_FINALIZE(stmt);
246 _bookmark->bookmark_id = bookmark_id;