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_content.h>
19 #include <media_info_private.h>
21 static char * __media_db_get_group_name(media_group_e group);
23 static char * __media_db_get_group_name(media_group_e group)
27 case MEDIA_CONTENT_GROUP_DISPLAY_NAME:
28 return DB_FIELD_MEDIA_DISPLAY_NAME;
29 case MEDIA_CONTENT_GROUP_TYPE:
30 return DB_FIELD_MEDIA_TYPE;
31 case MEDIA_CONTENT_GROUP_MIME_TYPE:
32 return DB_FIELD_MEDIA_MIME_TYPE;
33 case MEDIA_CONTENT_GROUP_SIZE:
34 return DB_FIELD_MEDIA_SIZE;
35 case MEDIA_CONTENT_GROUP_ADDED_TIME:
36 return DB_FIELD_MEDIA_ADDED_TIME;
37 case MEDIA_CONTENT_GROUP_MODIFIED_TIME:
38 return DB_FIELD_MEDIA_MODIFIED_TIME;
39 case MEDIA_CONTENT_GROUP_TITLE:
40 return DB_FIELD_MEDIA_TITLE;
41 case MEDIA_CONTENT_GROUP_ARTIST:
42 return DB_FIELD_MEDIA_ARTIST;
43 case MEDIA_CONTENT_GROUP_GENRE:
44 return DB_FIELD_MEDIA_GENRE;
45 case MEDIA_CONTENT_GROUP_COMPOSER:
46 return DB_FIELD_MEDIA_COMPOSER;
47 case MEDIA_CONTENT_GROUP_YEAR:
48 return DB_FIELD_MEDIA_YEAR;
49 case MEDIA_CONTENT_GROUP_RECORDED_DATE:
50 return DB_FIELD_MEDIA_RECORDED_DATE;
51 case MEDIA_CONTENT_GROUP_COPYRIGHT:
52 return DB_FIELD_MEDIA_COPYRIGHT;
53 case MEDIA_CONTENT_GROUP_TRACK_NUM:
54 return DB_FIELD_MEDIA_TRACK_NUM;
55 case MEDIA_CONTENT_GROUP_DESCRIPTION:
56 return DB_FIELD_MEDIA_DESCRIPTION;
57 case MEDIA_CONTENT_GROUP_LONGITUDE:
58 return DB_FIELD_MEDIA_LONGITUDE;
59 case MEDIA_CONTENT_GROUP_LATIITUDE:
60 return DB_FIELD_MEDIA_LATITUDE;
61 case MEDIA_CONTENT_GROUP_ALTITUDE:
62 return DB_FIELD_MEDIA_ALTITUDE;
63 case MEDIA_CONTENT_GROUP_RATING:
64 return DB_FIELD_MEDIA_RATING;
65 case MEDIA_CONTENT_GROUP_AUTHOR:
66 return DB_FIELD_MEDIA_AUTHOR;
67 case MEDIA_CONTENT_GROUP_PROVIDER:
68 return DB_FIELD_MEDIA_PROVIDER;
69 case MEDIA_CONTENT_GROUP_CONTENT_NAME:
70 return DB_FIELD_MEDIA_CONTENT_NAME;
71 case MEDIA_CONTENT_GROUP_CATEGORY:
72 return DB_FIELD_MEDIA_CATEGORY;
73 case MEDIA_CONTENT_GROUP_LOCATION_TAG:
74 return DB_FIELD_MEDIA_LOCATION_TAG;
75 case MEDIA_CONTENT_GROUP_AGE_RATING:
76 return DB_FIELD_MEDIA_AGE_RATING;
77 case MEDIA_CONTENT_GROUP_KEYWORD:
78 return DB_FIELD_MEDIA_KEYWORD;
86 int _media_db_get_group_count(filter_h filter, group_list_e group_type, int *group_count)
88 int ret = MEDIA_CONTENT_ERROR_NONE;
89 sqlite3_stmt *stmt = NULL;
90 filter_s *_filter = NULL;
91 char select_query[DEFAULT_QUERY_SIZE];
92 char *condition_query = NULL;
93 char *option_query = NULL;
96 media_content_debug_func();
98 memset(select_query, 0x00, sizeof(select_query));
100 attr = _content_get_attirbute_handle();
103 case MEDIA_GROUP_NONE:
104 case MEDIA_GROUP_TAG_BY_MEDIA_ID:
105 case MEDIA_GROUP_BOOKMARK_BY_MEDIA_ID:
107 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
108 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
111 case MEDIA_GROUP_ALBUM:
112 attr = _content_get_alias_attirbute_handle();
113 //snprintf(select_query, sizeof(select_query), SELECT_ALBUM_COUNT);
114 if(!SAFE_STRLCPY(select_query, SELECT_ALBUM_COUNT, sizeof(select_query)))
116 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
117 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
121 case MEDIA_GROUP_FOLDER:
122 attr = _content_get_alias_attirbute_handle();
123 //snprintf(select_query, sizeof(select_query), SELECT_FOLDER_COUNT);
124 if(!SAFE_STRLCPY(select_query, SELECT_FOLDER_COUNT, sizeof(select_query)))
126 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
127 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
130 case MEDIA_GROUP_PLAYLIST:
131 //attr = _content_get_alias_attirbute_handle();
132 //snprintf(select_query, sizeof(select_query), SELECT_PLAYLIST_COUNT);
133 if(!SAFE_STRLCPY(select_query, SELECT_PLAYLIST_COUNT, sizeof(select_query)))
135 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
136 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
139 case MEDIA_GROUP_TAG:
140 //attr = _content_get_alias_attirbute_handle();
141 //snprintf(select_query, sizeof(select_query), SELECT_TAG_COUNT);
142 if(!SAFE_STRLCPY(select_query, SELECT_TAG_COUNT, sizeof(select_query)))
144 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
145 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
148 case MEDIA_GROUP_BOOKMARK:
149 attr = _content_get_alias_attirbute_handle();
150 //snprintf(select_query, sizeof(select_query), SELECT_BOOKMARK_COUNT);
151 if(!SAFE_STRLCPY(select_query, SELECT_BOOKMARK_COUNT, sizeof(select_query)))
153 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
154 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
161 _filter = (filter_s*)filter;
163 if(STRING_VALID(_filter->condition))
165 ret = _media_filter_attribute_generate(attr, _filter->condition, _filter->condition_collate_type, &condition_query);
166 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
169 ret = _media_filter_attribute_option_generate(attr, filter, &option_query);
170 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
172 if(STRING_VALID(condition_query))
174 SAFE_STRLCAT(select_query, QUERY_KEYWORD_SPACE, sizeof(select_query));
175 SAFE_STRLCAT(select_query, QUERY_KEYWORD_AND, sizeof(select_query));
179 ret = _content_query_prepare(&stmt, select_query, condition_query, option_query);
180 SAFE_FREE(condition_query);
181 SAFE_FREE(option_query);
182 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
184 while(sqlite3_step(stmt) == SQLITE_ROW)
186 *group_count = (int)sqlite3_column_int(stmt, 0);
187 media_content_debug("group count : [%d]", *group_count);
190 SQLITE3_FINALIZE(stmt);
195 int _media_db_get_media_group_count(media_group_e group, filter_h filter, int *group_count)
197 int ret = MEDIA_CONTENT_ERROR_NONE;
198 sqlite3_stmt *stmt = NULL;
199 filter_s *_filter = NULL;
200 char select_query[DEFAULT_QUERY_SIZE];
201 char *condition_query = NULL;
202 char *option_query = NULL;
204 media_content_debug_func();
206 memset(select_query, 0x00, sizeof(select_query));
208 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_COUNT, __media_db_get_group_name(group));
212 _filter = (filter_s*)filter;
214 if(STRING_VALID(_filter->condition))
216 ret = _media_filter_attribute_generate(_content_get_attirbute_handle(), _filter->condition, _filter->condition_collate_type, &condition_query);
217 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
220 ret = _media_filter_attribute_option_generate(_content_get_attirbute_handle(), filter, &option_query);
221 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
223 if(STRING_VALID(condition_query))
225 SAFE_STRLCAT(select_query, QUERY_KEYWORD_SPACE, sizeof(select_query));
226 SAFE_STRLCAT(select_query, QUERY_KEYWORD_AND, sizeof(select_query));
229 SAFE_STRLCAT(select_query, QUERY_KEYWORD_SPACE, sizeof(select_query));
230 if(STRING_VALID(condition_query))
231 SAFE_STRLCAT(select_query, condition_query, sizeof(select_query));
232 if(STRING_VALID(option_query))
233 SAFE_STRLCAT(select_query, option_query, sizeof(select_query));
235 SAFE_FREE(condition_query);
236 SAFE_FREE(option_query);
239 SAFE_STRLCAT(select_query, QUERY_KEYWORD_BRACKET, sizeof(select_query));
241 ret = _content_query_prepare(&stmt, select_query, condition_query, option_query);
242 SAFE_FREE(condition_query);
243 SAFE_FREE(option_query);
244 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
246 while(sqlite3_step(stmt) == SQLITE_ROW)
248 *group_count = (int)sqlite3_column_int(stmt, 0);
249 media_content_debug("group count : [%d]", *group_count);
252 SQLITE3_FINALIZE(stmt);
257 int _media_db_get_media_group(media_group_e group, filter_h filter, media_group_cb callback, void *user_data)
259 int ret = MEDIA_CONTENT_ERROR_NONE;
260 char select_query[DEFAULT_QUERY_SIZE];
261 char *condition_query = NULL;
262 char *option_query = NULL;
264 sqlite3_stmt *stmt = NULL;
265 filter_s *_filter = NULL;
267 memset(select_query, 0x00, sizeof(select_query));
269 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_LIST, __media_db_get_group_name(group));
273 _filter = (filter_s*)filter;
275 if(_filter->condition)
277 ret = _media_filter_attribute_generate(_content_get_attirbute_handle(), _filter->condition, _filter->condition_collate_type, &condition_query);
278 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
281 ret = _media_filter_attribute_option_generate(_content_get_attirbute_handle(), filter, &option_query);
282 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
284 if(STRING_VALID(condition_query))
286 SAFE_STRLCAT(select_query, QUERY_KEYWORD_SPACE, sizeof(select_query));
287 SAFE_STRLCAT(select_query, QUERY_KEYWORD_AND, sizeof(select_query));
291 ret = _content_query_prepare(&stmt, select_query, condition_query, option_query);
292 SAFE_FREE(condition_query);
293 SAFE_FREE(option_query);
294 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
296 while(sqlite3_step(stmt) == SQLITE_ROW)
298 if(STRING_VALID((const char *)sqlite3_column_text(stmt, 0)))
300 name = strdup((const char *)sqlite3_column_text(stmt, 0));
301 media_content_debug("group name : [%s]", name);
304 if(callback(name, user_data) == false)
313 SQLITE3_FINALIZE(stmt);
318 int _media_db_get_album(filter_h filter, media_album_cb callback, void *user_data)
320 int ret = MEDIA_CONTENT_ERROR_NONE;
321 char select_query[DEFAULT_QUERY_SIZE];
322 char *condition_query = NULL;
323 char *option_query = NULL;
324 sqlite3_stmt *stmt = NULL;
325 filter_s *_filter = NULL;
327 memset(select_query, 0x00, sizeof(select_query));
329 //snprintf(select_query, sizeof(select_query), SELECT_ALBUM_LIST);
330 if(!SAFE_STRLCPY(select_query, SELECT_ALBUM_LIST, sizeof(select_query)))
332 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
333 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
338 _filter = (filter_s*)filter;
340 if(_filter->condition)
342 ret = _media_filter_attribute_generate(_content_get_alias_attirbute_handle(), _filter->condition, _filter->condition_collate_type, &condition_query);
343 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
346 ret = _media_filter_attribute_option_generate(_content_get_alias_attirbute_handle(), filter, &option_query);
347 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
349 if(STRING_VALID(condition_query))
351 SAFE_STRLCAT(select_query, QUERY_KEYWORD_SPACE, sizeof(select_query));
352 SAFE_STRLCAT(select_query, QUERY_KEYWORD_AND, sizeof(select_query));
356 ret = _content_query_prepare(&stmt, select_query, condition_query, option_query);
357 SAFE_FREE(condition_query);
358 SAFE_FREE(option_query);
359 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
361 while(sqlite3_step(stmt) == SQLITE_ROW)
363 media_album_s *album = (media_album_s*)calloc(1, sizeof(media_album_s));
367 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
368 SQLITE3_FINALIZE(stmt);
369 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
372 album->album_id = (int)sqlite3_column_int(stmt, 0);
374 if(STRING_VALID((const char *)sqlite3_column_text(stmt, 1)))
375 album->name = strdup((const char *)sqlite3_column_text(stmt, 1));
377 if(STRING_VALID((const char *)sqlite3_column_text(stmt, 2)))
378 album->artist = strdup((const char *)sqlite3_column_text(stmt, 2));
380 if(STRING_VALID((const char *)sqlite3_column_text(stmt, 3)))
381 album->album_art_path = strdup((const char *)sqlite3_column_text(stmt, 3));
383 if(callback((media_album_h)album, user_data) == false)
385 media_album_destroy((media_album_h)album);
389 media_album_destroy((media_album_h)album);
392 SQLITE3_FINALIZE(stmt);
397 int _media_db_get_folder(filter_h filter, media_folder_cb callback, void *user_data)
399 int ret = MEDIA_CONTENT_ERROR_NONE;
400 char select_query[DEFAULT_QUERY_SIZE];
401 char *condition_query = NULL;
402 char *option_query = NULL;
403 sqlite3_stmt *stmt = NULL;
404 filter_s *_filter = NULL;
406 memset(select_query, 0x00, sizeof(select_query));
408 //snprintf(select_query, sizeof(select_query), SELECT_FOLDER_LIST);
409 if(!SAFE_STRLCPY(select_query, SELECT_FOLDER_LIST, sizeof(select_query)))
411 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
412 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
417 _filter = (filter_s*)filter;
419 if(_filter->condition)
421 ret = _media_filter_attribute_generate(_content_get_alias_attirbute_handle(), _filter->condition, _filter->condition_collate_type, &condition_query);
422 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
425 ret = _media_filter_attribute_option_generate(_content_get_alias_attirbute_handle(), filter, &option_query);
426 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
428 if(STRING_VALID(condition_query))
430 SAFE_STRLCAT(select_query, QUERY_KEYWORD_SPACE, sizeof(select_query));
431 SAFE_STRLCAT(select_query, QUERY_KEYWORD_AND, sizeof(select_query));
435 ret = _content_query_prepare(&stmt, select_query, condition_query, option_query);
436 SAFE_FREE(condition_query);
437 SAFE_FREE(option_query);
438 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
440 while(sqlite3_step(stmt) == SQLITE_ROW)
442 media_folder_s *_folder = (media_folder_s*)calloc(1, sizeof(media_folder_s));
446 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
447 SQLITE3_FINALIZE(stmt);
448 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
451 if(STRING_VALID((const char *)sqlite3_column_text(stmt, 0)))
452 _folder->folder_id = strdup((const char *)sqlite3_column_text(stmt, 0));
454 if(STRING_VALID((const char *)sqlite3_column_text(stmt, 1)))
455 _folder->path = strdup((const char *)sqlite3_column_text(stmt, 1));
457 if(STRING_VALID((const char *)sqlite3_column_text(stmt, 2)))
458 _folder->name = strdup((const char *)sqlite3_column_text(stmt, 2));
460 _folder->storage_type = (int)sqlite3_column_int(stmt,3);
462 _folder->modified_time = (int)sqlite3_column_int(stmt,4);
464 if(callback((media_folder_h)_folder, user_data) == false)
466 media_folder_destroy((media_folder_h) _folder);
470 media_folder_destroy((media_folder_h) _folder);
473 SQLITE3_FINALIZE(stmt);
478 int _media_db_get_playlist(filter_h filter, media_playlist_cb callback, void *user_data)
480 int ret = MEDIA_CONTENT_ERROR_NONE;
481 char select_query[DEFAULT_QUERY_SIZE];
482 char *condition_query = NULL;
483 char *option_query = NULL;
484 sqlite3_stmt *stmt = NULL;
485 filter_s *_filter = NULL;
487 memset(select_query, 0x00, sizeof(select_query));
489 //snprintf(select_query, sizeof(select_query), SELECT_PLAYLIST_LIST);
490 if(!SAFE_STRLCPY(select_query, SELECT_PLAYLIST_LIST, sizeof(select_query)))
492 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
493 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
499 _filter = (filter_s*)filter;
501 if(_filter->condition)
503 //ret = _media_filter_attribute_generate(_content_get_alias_attirbute_handle(), _filter->condition, _filter->condition_collate_type, &condition_query);
504 ret = _media_filter_attribute_generate(_content_get_attirbute_handle(), _filter->condition, _filter->condition_collate_type, &condition_query);
505 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
508 //ret = _media_filter_attribute_option_generate(_content_get_alias_attirbute_handle(), filter, &option_query);
509 ret = _media_filter_attribute_option_generate(_content_get_attirbute_handle(), filter, &option_query);
510 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
512 if(STRING_VALID(condition_query))
514 SAFE_STRLCAT(select_query, QUERY_KEYWORD_SPACE, sizeof(select_query));
515 SAFE_STRLCAT(select_query, QUERY_KEYWORD_AND, sizeof(select_query));
519 ret = _content_query_prepare(&stmt, select_query, condition_query, option_query);
520 SAFE_FREE(condition_query);
521 SAFE_FREE(option_query);
522 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
524 while(sqlite3_step(stmt) == SQLITE_ROW)
526 media_playlist_s *_playlist = (media_playlist_s*)calloc(1, sizeof(media_playlist_s));
528 if(_playlist == NULL)
530 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
531 SQLITE3_FINALIZE(stmt);
532 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
535 _playlist->playlist_id = (int)sqlite3_column_int(stmt, 0);
537 if(STRING_VALID((const char *)sqlite3_column_text(stmt, 1)))
538 _playlist->name = strdup((const char *)sqlite3_column_text(stmt, 1));
540 if(callback((media_playlist_h)_playlist, user_data) == false)
542 media_playlist_destroy((media_playlist_h)_playlist);
545 media_playlist_destroy((media_playlist_h)_playlist);
548 SQLITE3_FINALIZE(stmt);
553 int _media_db_get_playlist_item(int playlist_id, filter_h filter, playlist_member_cb callback, void *user_data)
555 int ret = MEDIA_CONTENT_ERROR_NONE;
556 char select_query[DEFAULT_QUERY_SIZE];
557 char *condition_query = NULL;
558 char *option_query = NULL;
559 sqlite3_stmt *stmt = NULL;
560 filter_s *_filter = NULL;
562 memset(select_query, 0x00, sizeof(select_query));
564 snprintf(select_query, sizeof(select_query), SELECT_PLAYLIST_ITEM_ID_FROM_PLAYLIST_VIEW, playlist_id);
568 _filter = (filter_s*)filter;
570 if(_filter->condition)
572 //ret = _media_filter_attribute_generate(_content_get_alias_attirbute_handle(), _filter->condition, _filter->condition_collate_type, &condition_query);
573 ret = _media_filter_attribute_generate(_content_get_attirbute_handle(), _filter->condition, _filter->condition_collate_type, &condition_query);
574 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
577 //ret = _media_filter_attribute_option_generate(_content_get_alias_attirbute_handle(), filter, &option_query);
578 ret = _media_filter_attribute_option_generate(_content_get_attirbute_handle(), filter, &option_query);
579 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
581 if(STRING_VALID(condition_query))
583 SAFE_STRLCAT(select_query, QUERY_KEYWORD_SPACE, sizeof(select_query));
584 SAFE_STRLCAT(select_query, QUERY_KEYWORD_AND, sizeof(select_query));
588 ret = _content_query_prepare(&stmt, select_query, condition_query, option_query);
589 SAFE_FREE(condition_query);
590 SAFE_FREE(option_query);
591 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
593 while(sqlite3_step(stmt) == SQLITE_ROW)
595 int playlist_member_id = 0;
596 char media_uuid[MEDIA_CONTENT_UUID_SIZE+1];
597 media_info_h media = NULL;
598 memset(media_uuid, 0x00, sizeof(media_uuid));
600 playlist_member_id = (int)sqlite3_column_int(stmt, 0);
602 if(STRING_VALID((const char *)sqlite3_column_text(stmt, 1)))
603 strncpy(media_uuid, (const char *)sqlite3_column_text(stmt, 1), sizeof(media_uuid));
605 ret = media_info_get_media_from_db(media_uuid, &media);
607 if(callback(playlist_member_id, media, user_data) == false)
609 media_info_destroy(media);
612 media_info_destroy(media);
615 SQLITE3_FINALIZE(stmt);
620 //same as _media_db_get_playlist
621 int _media_db_get_tag(const char *media_id, filter_h filter, media_tag_cb callback, void *user_data)
623 int ret = MEDIA_CONTENT_ERROR_NONE;
624 char select_query[DEFAULT_QUERY_SIZE];
625 char *condition_query = NULL;
626 char *option_query = NULL;
627 sqlite3_stmt *stmt = NULL;
628 filter_s *_filter = NULL;
631 memset(select_query, 0x00, sizeof(select_query));
633 if(!STRING_VALID(media_id))
635 //attr = _content_get_alias_attirbute_handle();
636 attr = _content_get_attirbute_handle();
637 //snprintf(select_query, sizeof(select_query), SELECT_TAG_LIST);
638 if(!SAFE_STRLCPY(select_query, SELECT_TAG_LIST, sizeof(select_query)))
640 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
641 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
646 attr = _content_get_attirbute_handle();
647 snprintf(select_query, sizeof(select_query), SELECT_TAG_LIST_BY_MEDIA_ID, media_id);
652 _filter = (filter_s*)filter;
654 if(_filter->condition)
656 ret = _media_filter_attribute_generate(attr, _filter->condition, _filter->condition_collate_type, &condition_query);
657 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
660 ret = _media_filter_attribute_option_generate(attr, filter, &option_query);
661 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
663 if(STRING_VALID(condition_query))
665 SAFE_STRLCAT(select_query, QUERY_KEYWORD_SPACE, sizeof(select_query));
666 SAFE_STRLCAT(select_query, QUERY_KEYWORD_AND, sizeof(select_query));
670 SAFE_STRLCAT(select_query, QUERY_KEYWORD_SPACE, sizeof(select_query));
672 ret = _content_query_prepare(&stmt, select_query, condition_query, option_query);
673 SAFE_FREE(condition_query);
674 SAFE_FREE(option_query);
675 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
677 while(sqlite3_step(stmt) == SQLITE_ROW)
679 media_tag_s *_tag = (media_tag_s*)calloc(1, sizeof(media_tag_s));
683 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
684 SQLITE3_FINALIZE(stmt);
685 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
688 _tag->tag_id = (int)sqlite3_column_int(stmt, 0);
690 if(STRING_VALID((const char *)sqlite3_column_text(stmt, 1)))
691 _tag->name = strdup((const char *)sqlite3_column_text(stmt, 1));
693 if(callback((media_tag_h)_tag, user_data) == false)
695 media_tag_destroy((media_tag_h)_tag);
698 media_tag_destroy((media_tag_h)_tag);
701 SQLITE3_FINALIZE(stmt);
706 int _media_db_get_bookmark(const char *media_id, filter_h filter, media_bookmark_cb callback, void *user_data)
708 int ret = MEDIA_CONTENT_ERROR_NONE;
709 char select_query[DEFAULT_QUERY_SIZE];
710 char *condition_query = NULL;
711 char *option_query = NULL;
712 sqlite3_stmt *stmt = NULL;
713 filter_s *_filter = NULL;
716 memset(select_query, 0x00, sizeof(select_query));
718 if(!STRING_VALID(media_id))
720 attr = _content_get_alias_attirbute_handle();
721 //snprintf(select_query, sizeof(select_query), SELECT_BOOKMARK_LIST);
722 if(!SAFE_STRLCPY(select_query, SELECT_BOOKMARK_LIST, sizeof(select_query)))
724 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
725 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
730 attr = _content_get_attirbute_handle();
731 snprintf(select_query, sizeof(select_query), SELECT_BOOKMARK_LIST_BY_MEDIA_ID_USUAL, media_id);
736 _filter = (filter_s*)filter;
738 if(_filter->condition)
740 ret = _media_filter_attribute_generate(attr, _filter->condition, _filter->condition_collate_type, &condition_query);
741 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
744 ret = _media_filter_attribute_option_generate(attr, filter, &option_query);
745 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
747 if(STRING_VALID(condition_query))
749 SAFE_STRLCAT(select_query, QUERY_KEYWORD_SPACE, sizeof(select_query));
750 SAFE_STRLCAT(select_query, QUERY_KEYWORD_AND, sizeof(select_query));
754 ret = _content_query_prepare(&stmt, select_query, condition_query, option_query);
755 SAFE_FREE(condition_query);
756 SAFE_FREE(option_query);
757 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
759 while(sqlite3_step(stmt) == SQLITE_ROW)
761 media_bookmark_s *bookmark = (media_bookmark_s*)calloc(1, sizeof(media_bookmark_s));
765 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
766 SQLITE3_FINALIZE(stmt);
767 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
770 bookmark->bookmark_id = (int)sqlite3_column_int(stmt, 0);
772 if(STRING_VALID((const char *)sqlite3_column_text(stmt, 1)))
773 bookmark->media_id = strdup((const char *)sqlite3_column_text(stmt, 1));
775 bookmark->marked_time = (int)sqlite3_column_int(stmt, 2);
777 if(STRING_VALID((const char *)sqlite3_column_text(stmt, 3)))
778 bookmark->thumbnail_path = strdup((const char *)sqlite3_column_text(stmt, 3));
780 if(callback((media_bookmark_h)bookmark, user_data) == false)
782 media_bookmark_destroy((media_bookmark_h)bookmark);
786 media_bookmark_destroy((media_bookmark_h)bookmark);
789 SQLITE3_FINALIZE(stmt);
795 int _media_db_get_group_item_count_by_id(int group_id, filter_h filter, group_list_e group_type, int *item_count)
797 int ret = MEDIA_CONTENT_ERROR_NONE;
798 sqlite3_stmt *stmt = NULL;
799 filter_s *_filter = NULL;
800 char select_query[DEFAULT_QUERY_SIZE];
801 char *condition_query = NULL;
802 char *option_query = NULL;
803 attribute_h attr = NULL;
805 media_content_debug_func();
807 memset(select_query, 0x00, sizeof(select_query));
809 if(group_type == MEDIA_GROUP_ALBUM)
811 attr = _content_get_attirbute_handle();
812 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_ALBUM, group_id);
814 else if(group_type == MEDIA_GROUP_PLAYLIST)
816 //attr = _content_get_alias_attirbute_handle();
817 attr = _content_get_attirbute_handle();
818 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_PLAYLIST, group_id);
820 else if(group_type == MEDIA_GROUP_TAG)
822 attr = _content_get_attirbute_handle();
823 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_TAG, group_id);
827 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
828 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
833 _filter = (filter_s*)filter;
835 if(_filter->condition)
837 ret = _media_filter_attribute_generate(attr, _filter->condition, _filter->condition_collate_type, &condition_query);
838 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
841 ret = _media_filter_attribute_option_generate(attr, filter, &option_query);
842 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
844 if(STRING_VALID(condition_query))
846 SAFE_STRLCAT(select_query, QUERY_KEYWORD_SPACE, sizeof(select_query));
847 SAFE_STRLCAT(select_query, QUERY_KEYWORD_AND, sizeof(select_query));
851 if((group_type == MEDIA_GROUP_PLAYLIST) || (group_type == MEDIA_GROUP_TAG))
853 strncat(select_query, QUERY_KEYWORD_SPACE, strlen(QUERY_KEYWORD_SPACE));
855 if(STRING_VALID(condition_query))
856 strncat(select_query, condition_query, strlen(condition_query));
857 if(STRING_VALID(option_query))
858 strncat(select_query, option_query, strlen(option_query));
860 strncat(select_query, QUERY_KEYWORD_BRACKET, strlen(QUERY_KEYWORD_BRACKET));
862 SAFE_FREE(condition_query);
863 SAFE_FREE(option_query);
866 ret = _content_query_prepare(&stmt, select_query, condition_query, option_query);
867 SAFE_FREE(condition_query);
868 SAFE_FREE(option_query);
869 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
871 while(sqlite3_step(stmt) == SQLITE_ROW)
873 *item_count = (int)sqlite3_column_int(stmt, 0);
874 media_content_debug("group item count : [%d]", *item_count);
877 SQLITE3_FINALIZE(stmt);
882 int _media_db_get_group_item_count(const char *group_name, filter_h filter, group_list_e group_type, int *item_count)
884 int ret = MEDIA_CONTENT_ERROR_NONE;
885 sqlite3_stmt *stmt = NULL;
886 filter_s *_filter = NULL;
887 char complete_select_query[DEFAULT_QUERY_SIZE];
888 char *select_query = NULL;
889 char *condition_query = NULL;
890 char *option_query = NULL;
892 media_content_debug_func();
894 if(group_type == MEDIA_GROUP_NONE)
896 select_query = sqlite3_mprintf(SELECT_MEDIA_COUNT_FROM_MEDIA);
898 else if(group_type == MEDIA_GROUP_FOLDER)
900 select_query = sqlite3_mprintf(SELECT_MEDIA_COUNT_FROM_FOLDER, group_name);
902 else if(group_type == MEDIA_GROUP_TAG_BY_MEDIA_ID)
904 select_query = sqlite3_mprintf(SELECT_TAG_COUNT_BY_MEDIA_ID, group_name);
906 else if(group_type == MEDIA_GROUP_BOOKMARK_BY_MEDIA_ID)
908 select_query = sqlite3_mprintf(SELECT_BOOKMARK_COUNT_BY_MEDIA_ID, group_name);
912 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
913 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
918 _filter = (filter_s*)filter;
920 if(_filter->condition)
922 ret = _media_filter_attribute_generate(_content_get_attirbute_handle(), _filter->condition, _filter->condition_collate_type, &condition_query);
923 if(ret != MEDIA_CONTENT_ERROR_NONE)
925 sqlite3_free(select_query);
930 ret = _media_filter_attribute_option_generate(_content_get_attirbute_handle(), filter, &option_query);
931 if(ret != MEDIA_CONTENT_ERROR_NONE)
933 sqlite3_free(select_query);
937 if(STRING_VALID(condition_query))
939 snprintf(complete_select_query, sizeof(complete_select_query), "%s %s", select_query, QUERY_KEYWORD_AND);
943 snprintf(complete_select_query, sizeof(complete_select_query), "%s", select_query);
946 snprintf(complete_select_query, sizeof(complete_select_query), "%s", select_query);
949 if(group_type == MEDIA_GROUP_NONE)
951 SAFE_STRLCAT(complete_select_query, QUERY_KEYWORD_SPACE, sizeof(complete_select_query));
952 if(STRING_VALID(condition_query))
953 SAFE_STRLCAT(complete_select_query, condition_query, sizeof(complete_select_query));
954 if(STRING_VALID(option_query))
955 SAFE_STRLCAT(complete_select_query, option_query, sizeof(complete_select_query));
957 SAFE_STRLCAT(complete_select_query, QUERY_KEYWORD_BRACKET, sizeof(complete_select_query));
959 SAFE_FREE(condition_query);
960 SAFE_FREE(option_query);
963 ret = _content_query_prepare(&stmt, complete_select_query, condition_query, option_query);
964 sqlite3_free(select_query);
965 SAFE_FREE(condition_query);
966 SAFE_FREE(option_query);
967 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
969 while(sqlite3_step(stmt) == SQLITE_ROW)
971 *item_count = (int)sqlite3_column_int(stmt, 0);
972 media_content_debug("group item count : [%d]", *item_count);
975 SQLITE3_FINALIZE(stmt);
980 int _media_db_get_group_item_by_id(int group_id, filter_h filter, media_info_cb callback, void *user_data, group_list_e group_type)
982 int ret = MEDIA_CONTENT_ERROR_NONE;
983 char select_query[DEFAULT_QUERY_SIZE];
984 char *condition_query = NULL;
985 char *option_query = NULL;
986 sqlite3_stmt *stmt = NULL;
987 filter_s *_filter = NULL;
989 memset(select_query, 0x00, sizeof(select_query));
991 if(group_type == MEDIA_GROUP_ALBUM)
993 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_ALBUM, group_id);
995 else if(group_type == MEDIA_GROUP_PLAYLIST)
997 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_PLAYLIST, group_id);
999 else if(group_type == MEDIA_GROUP_TAG)
1001 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_TAG, group_id);
1005 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
1006 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
1011 _filter = (filter_s*)filter;
1013 if(_filter->condition)
1015 ret = _media_filter_attribute_generate(_content_get_attirbute_handle(), _filter->condition, _filter->condition_collate_type, &condition_query);
1016 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1019 ret = _media_filter_attribute_option_generate(_content_get_attirbute_handle(), filter, &option_query);
1020 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1022 if(STRING_VALID(condition_query))
1024 SAFE_STRLCAT(select_query, QUERY_KEYWORD_SPACE, sizeof(select_query));
1025 SAFE_STRLCAT(select_query, QUERY_KEYWORD_AND, sizeof(select_query));
1029 ret = _content_query_prepare(&stmt, select_query, condition_query, option_query);
1030 SAFE_FREE(condition_query);
1031 SAFE_FREE(option_query);
1032 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1034 while(sqlite3_step(stmt) == SQLITE_ROW)
1036 media_info_s *item = (media_info_s*)calloc(1, sizeof(media_info_s));
1039 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
1040 SQLITE3_FINALIZE(stmt);
1041 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
1044 _media_info_item_get_detail(stmt, (media_info_h)item);
1046 if(callback((media_info_h)item, user_data) == false)
1048 media_info_destroy((media_info_h)item);
1052 media_info_destroy((media_info_h)item);
1055 SQLITE3_FINALIZE(stmt);
1060 int _media_db_get_group_item(const char *group_name, filter_h filter, media_info_cb callback, void *user_data, group_list_e group_type)
1062 int ret = MEDIA_CONTENT_ERROR_NONE;
1063 char complete_select_query[DEFAULT_QUERY_SIZE];
1064 char *select_query = NULL;
1065 char *condition_query = NULL;
1066 char *option_query = NULL;
1067 sqlite3_stmt *stmt = NULL;
1068 filter_s *_filter = NULL;
1070 if(group_type == MEDIA_GROUP_NONE)
1072 select_query = sqlite3_mprintf(SELECT_MEDIA_ITEM);
1074 else if(group_type == MEDIA_GROUP_FOLDER)
1076 select_query = sqlite3_mprintf(SELECT_MEDIA_FROM_FOLDER, group_name);
1078 else if(group_type == MEDIA_GROUP_BOOKMARK_BY_MEDIA_ID)
1080 select_query = sqlite3_mprintf(SELECT_BOOKMARK_LIST_BY_MEDIA_ID, group_name);
1084 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
1085 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
1090 _filter = (filter_s*)filter;
1092 if(_filter->condition)
1094 ret = _media_filter_attribute_generate(_content_get_attirbute_handle(), _filter->condition, _filter->condition_collate_type, &condition_query);
1095 if(ret != MEDIA_CONTENT_ERROR_NONE)
1097 sqlite3_free(select_query);
1102 ret = _media_filter_attribute_option_generate(_content_get_attirbute_handle(), filter, &option_query);
1103 if(ret != MEDIA_CONTENT_ERROR_NONE)
1105 sqlite3_free(select_query);
1109 if(STRING_VALID(condition_query))
1111 snprintf(complete_select_query, sizeof(complete_select_query), "%s %s", select_query, QUERY_KEYWORD_AND);
1115 snprintf(complete_select_query, sizeof(complete_select_query), "%s", select_query);
1118 snprintf(complete_select_query, sizeof(complete_select_query), "%s", select_query);
1121 ret = _content_query_prepare(&stmt, complete_select_query, condition_query, option_query);
1122 sqlite3_free(select_query);
1123 SAFE_FREE(condition_query);
1124 SAFE_FREE(option_query);
1125 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1127 while(sqlite3_step(stmt) == SQLITE_ROW)
1129 media_info_s *item = (media_info_s*)calloc(1, sizeof(media_info_s));
1132 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
1133 SQLITE3_FINALIZE(stmt);
1134 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
1137 _media_info_item_get_detail(stmt, (media_info_h)item);
1139 if(callback((media_info_h)item, user_data) == false)
1141 media_info_destroy((media_info_h)item);
1145 media_info_destroy((media_info_h)item);
1148 SQLITE3_FINALIZE(stmt);
1153 int _media_db_get_media_group_item_count(const char *group_name, media_group_e group, filter_h filter, int *item_count)
1155 int ret = MEDIA_CONTENT_ERROR_NONE;
1156 sqlite3_stmt *stmt = NULL;
1157 filter_s *_filter = NULL;
1158 char complete_select_query[DEFAULT_QUERY_SIZE];
1159 char *select_query = NULL;
1160 char *condition_query = NULL;
1161 char *option_query = NULL;
1163 media_content_debug_func();
1165 if(group_name != NULL)
1166 select_query = sqlite3_mprintf(SELECT_MEDIA_COUNT_FROM_GROUP, __media_db_get_group_name(group), group_name);
1168 select_query = sqlite3_mprintf(SELECT_MEDIA_COUNT_FROM_GROUP_NULL, __media_db_get_group_name(group));
1172 _filter = (filter_s*)filter;
1174 if(_filter->condition)
1176 ret = _media_filter_attribute_generate(_content_get_attirbute_handle(), _filter->condition, _filter->condition_collate_type, &condition_query);
1177 if(ret != MEDIA_CONTENT_ERROR_NONE)
1179 sqlite3_free(select_query);
1184 ret = _media_filter_attribute_option_generate(_content_get_attirbute_handle(), filter, &option_query);
1185 if(ret != MEDIA_CONTENT_ERROR_NONE)
1187 sqlite3_free(select_query);
1191 if(STRING_VALID(condition_query))
1193 snprintf(complete_select_query, sizeof(complete_select_query), "%s %s", select_query, QUERY_KEYWORD_AND);
1197 snprintf(complete_select_query, sizeof(complete_select_query), "%s", select_query);
1200 snprintf(complete_select_query, sizeof(complete_select_query), "%s", select_query);
1203 SAFE_STRLCAT(complete_select_query, QUERY_KEYWORD_SPACE, sizeof(complete_select_query));
1204 if(STRING_VALID(condition_query))
1205 SAFE_STRLCAT(complete_select_query, condition_query, sizeof(complete_select_query));
1206 if(STRING_VALID(option_query))
1207 SAFE_STRLCAT(complete_select_query, option_query, sizeof(complete_select_query));
1209 SAFE_STRLCAT(complete_select_query, QUERY_KEYWORD_BRACKET, sizeof(complete_select_query));
1211 SAFE_FREE(condition_query);
1212 SAFE_FREE(option_query);
1214 ret = _content_query_prepare(&stmt, complete_select_query, condition_query, option_query);
1215 sqlite3_free(select_query);
1216 SAFE_FREE(condition_query);
1217 SAFE_FREE(option_query);
1218 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1220 while(sqlite3_step(stmt) == SQLITE_ROW)
1222 *item_count = (int)sqlite3_column_int(stmt, 0);
1223 media_content_debug("group item count : [%d]", *item_count);
1226 SQLITE3_FINALIZE(stmt);
1231 int _media_db_get_media_group_item(const char *group_name, media_group_e group, filter_h filter, media_info_cb callback, void *user_data)
1233 int ret = MEDIA_CONTENT_ERROR_NONE;
1234 char complete_select_query[DEFAULT_QUERY_SIZE];
1235 char *select_query = NULL;
1236 char *condition_query = NULL;
1237 char *option_query = NULL;
1238 sqlite3_stmt *stmt = NULL;
1239 filter_s *_filter = NULL;
1241 media_content_debug_func();
1243 if(group_name != NULL)
1244 select_query = sqlite3_mprintf(SELECT_MEDIA_FROM_GROUP, __media_db_get_group_name(group), group_name);
1246 select_query = sqlite3_mprintf(SELECT_MEDIA_FROM_GROUP_NULL, __media_db_get_group_name(group));
1250 _filter = (filter_s*)filter;
1252 if(_filter->condition)
1254 ret = _media_filter_attribute_generate(_content_get_attirbute_handle(), _filter->condition, _filter->condition_collate_type, &condition_query);
1255 if(ret != MEDIA_CONTENT_ERROR_NONE)
1257 sqlite3_free(select_query);
1262 ret = _media_filter_attribute_option_generate(_content_get_attirbute_handle(), filter, &option_query);
1263 if(ret != MEDIA_CONTENT_ERROR_NONE)
1265 sqlite3_free(select_query);
1269 if(STRING_VALID(condition_query))
1271 snprintf(complete_select_query, sizeof(complete_select_query), "%s %s", select_query, QUERY_KEYWORD_AND);
1275 snprintf(complete_select_query, sizeof(complete_select_query), "%s", select_query);
1278 snprintf(complete_select_query, sizeof(complete_select_query), "%s", select_query);
1281 ret = _content_query_prepare(&stmt, complete_select_query, condition_query, option_query);
1282 sqlite3_free(select_query);
1283 SAFE_FREE(condition_query);
1284 SAFE_FREE(option_query);
1285 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1287 while(sqlite3_step(stmt) == SQLITE_ROW)
1289 media_info_s *item = (media_info_s*)calloc(1, sizeof(media_info_s));
1292 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
1293 SQLITE3_FINALIZE(stmt);
1294 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
1297 _media_info_item_get_detail(stmt, (media_info_h)item);
1299 if(callback((media_info_h)item, user_data) == false)
1301 media_info_destroy((media_info_h)item);
1305 media_info_destroy((media_info_h)item);
1308 SQLITE3_FINALIZE(stmt);