fc64e677e46d361b67a5a8b0ab776491a738d078
[framework/api/media-content.git] / src / media_bookmark.c
1 /*
2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
3 *
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
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
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.
15 */
16
17
18 #include <media_content.h>
19 #include <media_info_private.h>
20 #include <media-svc.h>
21
22 int media_bookmark_foreach_bookmark_from_db (filter_h filter, media_bookmark_cb callback, void *user_data);
23 int media_bookmark_get_media_id(media_bookmark_h bookmark, char **media_id);
24
25 int media_bookmark_insert_to_db(const char *media_id, time_t time, const char *thumbnail_path)
26 {
27         int ret = MEDIA_CONTENT_ERROR_NONE;
28         char *sql = NULL;
29
30         if(STRING_VALID(media_id))
31         {
32                 sql = sqlite3_mprintf(INSERT_BOOKMARK_TO_BOOKMARK, media_id, time, thumbnail_path);
33                 ret = _content_query_sql(sql);
34                 sqlite3_free(sql);
35         }
36         else
37         {
38                 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
39                 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
40         }
41
42         return ret;
43 }
44
45 int media_bookmark_delete_from_db(int bookmark_id)
46 {
47         int ret = MEDIA_CONTENT_ERROR_NONE;
48         char *query_str = NULL;
49
50         if(bookmark_id < 0)
51         {
52                 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
53                 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
54         }
55
56         query_str = sqlite3_mprintf(DELETE_BOOKMARK_FROM_BOOKMARK, bookmark_id);
57
58         ret = _content_query_sql(query_str);
59
60         sqlite3_free(query_str);
61
62         return ret;
63 }
64
65 int media_bookmark_get_bookmark_count_from_db(filter_h filter, int *bookmark_count)
66 {
67         int ret = MEDIA_CONTENT_ERROR_NONE;
68
69         media_content_debug_func();
70
71         ret = _media_db_get_group_count(filter, MEDIA_GROUP_BOOKMARK, bookmark_count);
72
73         return ret;
74 }
75
76 int media_bookmark_foreach_bookmark_from_db (filter_h filter, media_bookmark_cb callback, void *user_data)
77 {
78         int ret = MEDIA_CONTENT_ERROR_NONE;
79
80         media_content_debug_func();
81
82         if(callback == NULL)
83         {
84                 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
85                 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
86         }
87
88         ret = _media_db_get_bookmark(NULL, filter, callback, user_data);
89
90         return ret;
91 }
92
93 int media_bookmark_destroy(media_bookmark_h bookmark)
94 {
95         int ret = MEDIA_CONTENT_ERROR_NONE;
96         media_bookmark_s *_bookmark = (media_bookmark_s*)bookmark;
97
98         if(_bookmark)
99         {
100                 SAFE_FREE(_bookmark->media_id);
101                 SAFE_FREE(_bookmark->thumbnail);
102                 free(_bookmark);
103                 ret = MEDIA_CONTENT_ERROR_NONE;
104         }
105         else
106         {
107                 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
108                 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
109         }
110
111         return ret;
112 }
113 int media_bookmark_clone(media_bookmark_h *dst, media_bookmark_h src)
114 {
115         int ret = MEDIA_CONTENT_ERROR_NONE;
116
117         if((src != NULL))
118         {
119                 media_bookmark_s *_src = (media_bookmark_s*)src;
120                 media_bookmark_s *_dst = (media_bookmark_s*)calloc(1, sizeof(media_bookmark_s));
121
122                 if(NULL == _dst)
123                 {
124                         media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
125                         return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
126                 }
127
128                 _dst->bookmark_id = _src->bookmark_id;
129
130                 if(STRING_VALID(_src->media_id))
131                 {
132                         _dst->media_id = (char*)strdup(_src->media_id);
133                         if(_dst->media_id == NULL)
134                         {
135                                 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
136                                 media_bookmark_destroy((media_bookmark_h)_dst);
137                                 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
138                         }
139                 }
140
141                 _dst->marked_time = _src->marked_time;
142
143                 if(STRING_VALID(_src->thumbnail))
144                 {
145                         _dst->thumbnail = (char*)strdup(_src->thumbnail);
146                         if(_dst->thumbnail == NULL)
147                         {
148                                 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
149                                 media_bookmark_destroy((media_bookmark_h)_dst);
150                                 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
151                         }
152                 }
153
154                 *dst = (media_bookmark_h)_dst;
155
156                 ret = MEDIA_CONTENT_ERROR_NONE;
157         }
158         else
159         {
160                 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
161                 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
162         }
163
164         return ret;
165 }
166
167 int media_bookmark_get_bookmark_id(media_bookmark_h bookmark, int *bookmark_id)
168 {
169         int ret = MEDIA_CONTENT_ERROR_NONE;
170         media_bookmark_s *_bookmark = (media_bookmark_s*)bookmark;
171
172         if(_bookmark)
173         {
174                 *bookmark_id = _bookmark->bookmark_id;
175                 ret = MEDIA_CONTENT_ERROR_NONE;
176         }
177         else
178         {
179                 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
180                 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
181         }
182
183         return ret;
184 }
185
186 int media_bookmark_get_media_id(media_bookmark_h bookmark, char **media_id)
187 {
188         int ret = MEDIA_CONTENT_ERROR_NONE;
189         media_bookmark_s *_bookmark = (media_bookmark_s*)bookmark;
190
191         if(_bookmark)
192         {
193                 if(STRING_VALID(_bookmark->media_id))
194                 {
195                         *media_id = strdup(_bookmark->media_id);
196                         if(*media_id == NULL)
197                         {
198                                 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
199                                 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
200                         }
201                 }
202                 else
203                 {
204                         *media_id = NULL;
205                 }
206
207                 ret = MEDIA_CONTENT_ERROR_NONE;
208         }
209         else
210         {
211                 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
212                 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
213         }
214
215         return ret;
216 }
217
218 int media_bookmark_get_marked_time(media_bookmark_h bookmark, time_t* marked_time)
219 {
220         int ret = MEDIA_CONTENT_ERROR_NONE;
221         media_bookmark_s *_bookmark = (media_bookmark_s*)bookmark;
222
223         if(_bookmark)
224         {
225                 *marked_time = _bookmark->marked_time;
226                 ret = MEDIA_CONTENT_ERROR_NONE;
227         }
228         else
229         {
230                 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
231                 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
232         }
233
234         return ret;
235 }
236
237 int media_bookmark_get_thumbnail_path(media_bookmark_h bookmark, char **thumbnail)
238 {
239         int ret = MEDIA_CONTENT_ERROR_NONE;
240         media_bookmark_s *_bookmark = (media_bookmark_s*)bookmark;
241
242         if(_bookmark)
243         {
244                 if(STRING_VALID(_bookmark->thumbnail))
245                 {
246                         *thumbnail = strdup(_bookmark->thumbnail);
247                         if(*thumbnail == NULL)
248                         {
249                                 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
250                                 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
251                         }
252                 }
253                 else
254                 {
255                         *thumbnail = NULL;
256                 }
257
258                 ret = MEDIA_CONTENT_ERROR_NONE;
259         }
260         else
261         {
262                 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
263                 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
264         }
265
266         return ret;
267 }