311922aeccd2ea3d9573bee3fb8818986cf89600
[platform/core/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_info_private.h>
19
20
21 int media_bookmark_insert_to_db(const char *media_id, time_t time, const char *thumbnail_path)
22 {
23         int ret = MEDIA_CONTENT_ERROR_NONE;
24         char *sql = NULL;
25
26         if(STRING_VALID(media_id))
27         {
28                 sql = sqlite3_mprintf(INSERT_BOOKMARK_TO_BOOKMARK, media_id, time, thumbnail_path);
29                 ret = _content_query_sql(sql);
30                 sqlite3_free(sql);
31         }
32         else
33         {
34                 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
35                 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
36         }
37
38         return ret;
39 }
40
41 int media_bookmark_delete_from_db(int bookmark_id)
42 {
43         int ret = MEDIA_CONTENT_ERROR_NONE;
44         char *query_str = NULL;
45
46         if(bookmark_id < 0)
47         {
48                 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
49                 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
50         }
51
52         query_str = sqlite3_mprintf(DELETE_BOOKMARK_FROM_BOOKMARK, bookmark_id);
53
54         ret = _content_query_sql(query_str);
55
56         sqlite3_free(query_str);
57
58         return ret;
59 }
60
61 int media_bookmark_get_bookmark_count_from_db(filter_h filter, int *bookmark_count)
62 {
63         int ret = MEDIA_CONTENT_ERROR_NONE;
64
65         media_content_debug_func();
66
67         if (bookmark_count == NULL)
68         {
69                 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
70                 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
71         }
72
73         ret = _media_db_get_group_count(filter, MEDIA_GROUP_BOOKMARK, bookmark_count);
74
75         return ret;
76 }
77
78 int media_bookmark_destroy(media_bookmark_h bookmark)
79 {
80         int ret = MEDIA_CONTENT_ERROR_NONE;
81         media_bookmark_s *_bookmark = (media_bookmark_s*)bookmark;
82
83         if(_bookmark)
84         {
85                 SAFE_FREE(_bookmark->media_id);
86                 SAFE_FREE(_bookmark->thumbnail_path);
87                 free(_bookmark);
88                 ret = MEDIA_CONTENT_ERROR_NONE;
89         }
90         else
91         {
92                 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
93                 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
94         }
95
96         return ret;
97 }
98 int media_bookmark_clone(media_bookmark_h *dst, media_bookmark_h src)
99 {
100         int ret = MEDIA_CONTENT_ERROR_NONE;
101
102         if((src != NULL))
103         {
104                 media_bookmark_s *_src = (media_bookmark_s*)src;
105                 media_bookmark_s *_dst = (media_bookmark_s*)calloc(1, sizeof(media_bookmark_s));
106
107                 if(NULL == _dst)
108                 {
109                         media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
110                         return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
111                 }
112
113                 _dst->bookmark_id = _src->bookmark_id;
114
115                 if(STRING_VALID(_src->media_id))
116                 {
117                         _dst->media_id = (char*)strdup(_src->media_id);
118                         if(_dst->media_id == NULL)
119                         {
120                                 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
121                                 media_bookmark_destroy((media_bookmark_h)_dst);
122                                 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
123                         }
124                 }
125
126                 _dst->marked_time = _src->marked_time;
127
128                 if(STRING_VALID(_src->thumbnail_path))
129                 {
130                         _dst->thumbnail_path = (char*)strdup(_src->thumbnail_path);
131                         if(_dst->thumbnail_path == NULL)
132                         {
133                                 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
134                                 media_bookmark_destroy((media_bookmark_h)_dst);
135                                 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
136                         }
137                 }
138
139                 *dst = (media_bookmark_h)_dst;
140
141                 ret = MEDIA_CONTENT_ERROR_NONE;
142         }
143         else
144         {
145                 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
146                 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
147         }
148
149         return ret;
150 }
151
152 int media_bookmark_get_bookmark_id(media_bookmark_h bookmark, int *bookmark_id)
153 {
154         int ret = MEDIA_CONTENT_ERROR_NONE;
155         media_bookmark_s *_bookmark = (media_bookmark_s*)bookmark;
156
157         if(_bookmark)
158         {
159                 *bookmark_id = _bookmark->bookmark_id;
160                 ret = MEDIA_CONTENT_ERROR_NONE;
161         }
162         else
163         {
164                 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
165                 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
166         }
167
168         return ret;
169 }
170
171 int media_bookmark_get_marked_time(media_bookmark_h bookmark, time_t* marked_time)
172 {
173         int ret = MEDIA_CONTENT_ERROR_NONE;
174         media_bookmark_s *_bookmark = (media_bookmark_s*)bookmark;
175
176         if(_bookmark)
177         {
178                 *marked_time = _bookmark->marked_time;
179                 ret = MEDIA_CONTENT_ERROR_NONE;
180         }
181         else
182         {
183                 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
184                 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
185         }
186
187         return ret;
188 }
189
190 int media_bookmark_get_thumbnail_path(media_bookmark_h bookmark, char **path)
191 {
192         int ret = MEDIA_CONTENT_ERROR_NONE;
193         media_bookmark_s *_bookmark = (media_bookmark_s*)bookmark;
194
195         if(_bookmark)
196         {
197                 if(STRING_VALID(_bookmark->thumbnail_path))
198                 {
199                         *path = strdup(_bookmark->thumbnail_path);
200                         if(*path == NULL)
201                         {
202                                 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
203                                 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
204                         }
205                 }
206                 else
207                 {
208                         *path = NULL;
209                 }
210
211                 ret = MEDIA_CONTENT_ERROR_NONE;
212         }
213         else
214         {
215                 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
216                 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
217         }
218
219         return ret;
220 }