Support user session path
[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 #include <media_util_private.h>
20
21
22 int media_bookmark_insert_to_db(const char *media_id, time_t time, const char *thumbnail_path)
23 {
24         int ret = MEDIA_CONTENT_ERROR_NONE;
25         char *sql = NULL;
26         char repl_path[MAX_QUERY_SIZE] = {0, };
27
28         if (STRING_VALID(media_id)) {
29                 memset(repl_path, 0, sizeof(repl_path));
30                 ret = _media_content_replace_path(thumbnail_path, repl_path);
31                 sql = sqlite3_mprintf(INSERT_BOOKMARK_TO_BOOKMARK, media_id, time, repl_path);
32                 ret = _content_query_sql(sql);
33                 SQLITE3_SAFE_FREE(sql);
34         } else {
35                 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
36                 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
37         }
38
39         return ret;
40 }
41
42 int media_bookmark_delete_from_db(int bookmark_id)
43 {
44         int ret = MEDIA_CONTENT_ERROR_NONE;
45         char *query_str = NULL;
46
47         if (bookmark_id < 0) {
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_SAFE_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         if (bookmark_count == NULL) {
66                 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
67                 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
68         }
69
70         ret = _media_db_get_group_count(filter, MEDIA_GROUP_BOOKMARK, bookmark_count);
71
72         return ret;
73 }
74
75 int media_bookmark_destroy(media_bookmark_h bookmark)
76 {
77         int ret = MEDIA_CONTENT_ERROR_NONE;
78         media_bookmark_s *_bookmark = (media_bookmark_s*)bookmark;
79
80         if (_bookmark) {
81                 SAFE_FREE(_bookmark->media_id);
82                 SAFE_FREE(_bookmark->thumbnail_path);
83                 free(_bookmark);
84                 ret = MEDIA_CONTENT_ERROR_NONE;
85         } else {
86                 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
87                 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
88         }
89
90         return ret;
91 }
92 int media_bookmark_clone(media_bookmark_h *dst, media_bookmark_h src)
93 {
94         int ret = MEDIA_CONTENT_ERROR_NONE;
95
96         if ((src != NULL)) {
97                 media_bookmark_s *_src = (media_bookmark_s*)src;
98                 media_bookmark_s *_dst = (media_bookmark_s*)calloc(1, sizeof(media_bookmark_s));
99                 media_content_retvm_if(_dst == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
100
101                 _dst->bookmark_id = _src->bookmark_id;
102
103                 if (STRING_VALID(_src->media_id)) {
104                         _dst->media_id = (char *)strdup(_src->media_id);
105                         if (_dst->media_id == NULL) {
106                                 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
107                                 media_bookmark_destroy((media_bookmark_h)_dst);
108                                 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
109                         }
110                 }
111
112                 _dst->marked_time = _src->marked_time;
113
114                 if (STRING_VALID(_src->thumbnail_path)) {
115                         _dst->thumbnail_path = (char*)strdup(_src->thumbnail_path);
116                         if (_dst->thumbnail_path == NULL) {
117                                 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
118                                 media_bookmark_destroy((media_bookmark_h)_dst);
119                                 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
120                         }
121                 }
122
123                 *dst = (media_bookmark_h)_dst;
124
125                 ret = MEDIA_CONTENT_ERROR_NONE;
126         } else {
127                 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
128                 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
129         }
130
131         return ret;
132 }
133
134 int media_bookmark_get_bookmark_id(media_bookmark_h bookmark, int *bookmark_id)
135 {
136         int ret = MEDIA_CONTENT_ERROR_NONE;
137         media_bookmark_s *_bookmark = (media_bookmark_s*)bookmark;
138
139         if (_bookmark) {
140                 *bookmark_id = _bookmark->bookmark_id;
141                 ret = MEDIA_CONTENT_ERROR_NONE;
142         } else {
143                 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
144                 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
145         }
146
147         return ret;
148 }
149
150 int media_bookmark_get_marked_time(media_bookmark_h bookmark, time_t* marked_time)
151 {
152         int ret = MEDIA_CONTENT_ERROR_NONE;
153         media_bookmark_s *_bookmark = (media_bookmark_s*)bookmark;
154
155         if (_bookmark) {
156                 *marked_time = _bookmark->marked_time;
157                 ret = MEDIA_CONTENT_ERROR_NONE;
158         } else {
159                 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
160                 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
161         }
162
163         return ret;
164 }
165
166 int media_bookmark_get_thumbnail_path(media_bookmark_h bookmark, char **path)
167 {
168         int ret = MEDIA_CONTENT_ERROR_NONE;
169         media_bookmark_s *_bookmark = (media_bookmark_s*)bookmark;
170
171         if (_bookmark) {
172                 if (STRING_VALID(_bookmark->thumbnail_path)) {
173                         *path = strdup(_bookmark->thumbnail_path);
174                         media_content_retvm_if(*path == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
175                 } else {
176                         *path = NULL;
177                 }
178
179                 ret = MEDIA_CONTENT_ERROR_NONE;
180         } else {
181                 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
182                 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
183         }
184
185         return ret;
186 }