X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fmedia_db.c;h=b69774d2591c7a4758af499aaf02a494b8a478d0;hb=f4fcdcd1b064f219b7bb99f5a01705c6976af4fb;hp=4733ef4f2252db8d46ebd6a932812866659d1ed7;hpb=67c03b213d83f34c438f45fcf0696cec38075b8d;p=platform%2Fcore%2Fapi%2Fmedia-content.git diff --git a/src/media_db.c b/src/media_db.c index 4733ef4..b69774d 100755 --- a/src/media_db.c +++ b/src/media_db.c @@ -19,8 +19,7 @@ #include #include -static char * __media_db_get_group_name(media_group_e group); -static int __media_db_make_query(filter_h filter, attribute_h attr, char *select_query, int select_query_size, char **condition_query, char **option_query); +static int __media_db_make_query(filter_h filter, char *select_query, int select_query_size, char **condition_query, char **option_query); static char * __media_db_get_group_name(media_group_e group) { @@ -63,27 +62,9 @@ static char * __media_db_get_group_name(media_group_e group) return (char *) DB_FIELD_MEDIA_LATITUDE; case MEDIA_CONTENT_GROUP_ALTITUDE: return (char *) DB_FIELD_MEDIA_ALTITUDE; - case MEDIA_CONTENT_GROUP_BURST_IMAGE: - return (char *) DB_FIELD_MEDIA_BURST_ID; case MEDIA_CONTENT_GROUP_RATING: return (char *) DB_FIELD_MEDIA_RATING; - case MEDIA_CONTENT_GROUP_AUTHOR: - return (char *) DB_FIELD_MEDIA_AUTHOR; - case MEDIA_CONTENT_GROUP_PROVIDER: - return (char *) DB_FIELD_MEDIA_PROVIDER; - case MEDIA_CONTENT_GROUP_CONTENT_NAME: - return (char *) DB_FIELD_MEDIA_CONTENT_NAME; - case MEDIA_CONTENT_GROUP_CATEGORY: - return (char *) DB_FIELD_MEDIA_CATEGORY; - case MEDIA_CONTENT_GROUP_LOCATION_TAG: - return (char *) DB_FIELD_MEDIA_LOCATION_TAG; - case MEDIA_CONTENT_GROUP_AGE_RATING: - return (char *) DB_FIELD_MEDIA_AGE_RATING; - case MEDIA_CONTENT_GROUP_KEYWORD: - return (char *) DB_FIELD_MEDIA_KEYWORD; - case MEDIA_CONTENT_GROUP_WEATHER: - return (char *) DB_FIELD_MEDIA_WEATHER; -#ifdef _USE_TV_PROFILE +#ifdef _USE_TVPD_MODE case MEDIA_CONTENT_GROUP_MODIFIED_MONTH: return (char *) DB_FIELD_MEDIA_MODIFIED_DATE; case MEDIA_CONTENT_GROUP_MODIFIED_DATE: @@ -93,7 +74,7 @@ static char * __media_db_get_group_name(media_group_e group) case MEDIA_CONTENT_GROUP_CONTACT: return (char *) DB_FIELD_MEDIA_CONTACT; #endif -#ifdef _USE_TV_PROFILE +#ifdef _USE_TVPD_MODE case MEDIA_CONTENT_GROUP_ALBUM: return (char *) DB_FIELD_MEDIA_ALBUM; case MEDIA_PVR_GROUP_DURATION: @@ -200,7 +181,7 @@ static char * __media_db_get_group_name(media_group_e group) return NULL; } -static int __media_db_make_query(filter_h filter, attribute_h attr, char *select_query, int select_query_size, char **condition_query, char **option_query) +static int __media_db_make_query(filter_h filter, char *select_query, int select_query_size, char **condition_query, char **option_query) { int ret = MEDIA_CONTENT_ERROR_NONE; filter_s *_filter = NULL; @@ -209,23 +190,24 @@ static int __media_db_make_query(filter_h filter, attribute_h attr, char *select _filter = (filter_s*)filter; if (STRING_VALID(_filter->condition)) { - /*bracket should be added to condition. If application use "OR" condition, F/W restriction condition like "validity=1" is disregared - ex) select path from media where validity=1 and media_type=3 or media_type=1;*/ - char bracket_added_condition[MAX_QUERY_SIZE] = {0, }; - memset(bracket_added_condition, 0x00, sizeof(bracket_added_condition)); - - SAFE_STRLCAT(bracket_added_condition, QUERY_KEYWORD_OPEN_BRACKET, sizeof(bracket_added_condition)); - SAFE_STRLCAT(bracket_added_condition, _filter->condition, sizeof(bracket_added_condition)); - SAFE_STRLCAT(bracket_added_condition, QUERY_KEYWORD_BRACKET, sizeof(bracket_added_condition)); - - ret = _media_filter_attribute_generate(attr, bracket_added_condition, _filter->condition_collate_type, condition_query); + ret = _media_filter_attribute_generate(filter, condition_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); } - ret = _media_filter_attribute_option_generate(attr, filter, option_query); - if (ret != MEDIA_CONTENT_ERROR_NONE) { - SAFE_FREE(*condition_query); - return ret; + if (_filter->is_full_order == false) { + /* Process for filter v1 */ + ret = _media_filter_attribute_option_generate(filter, option_query); + if (ret != MEDIA_CONTENT_ERROR_NONE) { + SAFE_FREE(*condition_query); + return ret; + } + } else { + /* Process for filter v2 */ + ret = _media_filter_attribute_option_generate_with_full_query(filter, option_query); + if (ret != MEDIA_CONTENT_ERROR_NONE) { + SAFE_FREE(*condition_query); + return ret; + } } if (STRING_VALID(*condition_query)) { @@ -237,6 +219,7 @@ static int __media_db_make_query(filter_h filter, attribute_h attr, char *select return ret; } +#ifdef _USE_TVPD_MODE int _media_db_get_group_count(filter_h filter, group_list_e group_type, int *group_count) { int ret = MEDIA_CONTENT_ERROR_NONE; @@ -244,41 +227,32 @@ int _media_db_get_group_count(filter_h filter, group_list_e group_type, int *gro char select_query[MAX_QUERY_SIZE] = {0, }; char *condition_query = NULL; char *option_query = NULL; - attribute_h attr = NULL; filter_s *_filter = (filter_s*)filter; - attr = _content_get_attirbute_handle(); memset(select_query, 0x00, sizeof(select_query)); switch (group_type) { case MEDIA_GROUP_NONE: case MEDIA_GROUP_TAG_BY_MEDIA_ID: case MEDIA_GROUP_BOOKMARK_BY_MEDIA_ID: + case MEDIA_GROUP_FACE_BY_MEDIA_ID: { media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); return MEDIA_CONTENT_ERROR_INVALID_PARAMETER; } break; case MEDIA_GROUP_ALBUM: - attr = _content_get_alias_attirbute_handle(); - if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) snprintf(select_query, sizeof(select_query), SELECT_ALBUM_COUNT, _filter->storage_id); else - snprintf(select_query, sizeof(select_query), SELECT_ALBUM_COUNT, DB_TABLE_MEDIA_VIEW); + snprintf(select_query, sizeof(select_query), SELECT_ALBUM_COUNT, DB_VIEW_MEDIA); break; case MEDIA_GROUP_FOLDER: - attr = _content_get_alias_attirbute_handle(); - if (!SAFE_STRLCPY(select_query, SELECT_FOLDER_COUNT, sizeof(select_query))) { - media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - return MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } - if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) snprintf(select_query, sizeof(select_query), SELECT_FOLDER_COUNT_BY_STORAGE_ID, _filter->storage_id, _filter->storage_id); else - snprintf(select_query, sizeof(select_query), SELECT_FOLDER_COUNT, DB_TABLE_MEDIA_VIEW); + snprintf(select_query, sizeof(select_query), SELECT_FOLDER_COUNT, DB_VIEW_MEDIA); break; case MEDIA_GROUP_PLAYLIST: @@ -294,12 +268,10 @@ int _media_db_get_group_count(filter_h filter, group_list_e group_type, int *gro } break; case MEDIA_GROUP_BOOKMARK: - attr = _content_get_alias_attirbute_handle(); - if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) snprintf(select_query, sizeof(select_query), SELECT_BOOKMARK_COUNT, _filter->storage_id); else - snprintf(select_query, sizeof(select_query), SELECT_BOOKMARK_COUNT, DB_TABLE_MEDIA_VIEW); + snprintf(select_query, sizeof(select_query), SELECT_BOOKMARK_COUNT, DB_VIEW_MEDIA); break; case MEDIA_GROUP_STORAGE: @@ -308,10 +280,14 @@ int _media_db_get_group_count(filter_h filter, group_list_e group_type, int *gro return MEDIA_CONTENT_ERROR_INVALID_PARAMETER; } break; -#ifdef _USE_TV_PROFILE + case MEDIA_GROUP_FACE: + if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) + snprintf(select_query, sizeof(select_query), SELECT_FACE_COUNT, _filter->storage_id); + else + snprintf(select_query, sizeof(select_query), SELECT_FACE_COUNT, DB_VIEW_MEDIA); + break; case MEDIA_GROUP_PVR: case MEDIA_GROUP_UHD: -#endif default: { media_content_error("Invalid group type [%d]", group_type); @@ -320,15 +296,15 @@ int _media_db_get_group_count(filter_h filter, group_list_e group_type, int *gro break; } - ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query); + ret = __media_db_make_query(filter, select_query, sizeof(select_query), &condition_query, &option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); - ret = _content_query_prepare(&stmt, select_query, condition_query, option_query); + ret = _content_query_prepare(select_query, condition_query, option_query, &stmt); SAFE_FREE(condition_query); SAFE_FREE(option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); - while (sqlite3_step(stmt) == SQLITE_ROW) + if (sqlite3_step(stmt) == SQLITE_ROW) *group_count = (int)sqlite3_column_int(stmt, 0); SQLITE3_FINALIZE(stmt); @@ -343,17 +319,14 @@ int _media_db_get_media_group_count(media_group_e group, filter_h filter, int *g char select_query[MAX_QUERY_SIZE] = {0, }; char *condition_query = NULL; char *option_query = NULL; - attribute_h attr = NULL; filter_s *_filter = (filter_s*)filter; - attr = _content_get_attirbute_handle(); memset(select_query, 0x00, sizeof(select_query)); -#ifdef _USE_TV_PROFILE if (group < MEDIA_PVR_GROUP_DURATION) { /*media content*/ if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_COUNT, __media_db_get_group_name(group), _filter->storage_id); else - snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_COUNT, __media_db_get_group_name(group), DB_TABLE_MEDIA_VIEW); + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_COUNT, __media_db_get_group_name(group), DB_VIEW_MEDIA); } else if (group < MEDIA_UHD_GROUP_CONTENT_TITLE) { /*pvr content*/ if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) snprintf(select_query, sizeof(select_query), SELECT_PVR_GROUP_COUNT_BY_STORAGE_ID, __media_db_get_group_name(group), _filter->storage_id); @@ -365,13 +338,7 @@ int _media_db_get_media_group_count(media_group_e group, filter_h filter, int *g else snprintf(select_query, sizeof(select_query), SELECT_UHD_GROUP_COUNT, __media_db_get_group_name(group)); } -#else - if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) - snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_COUNT, __media_db_get_group_name(group), _filter->storage_id); - else - snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_COUNT, __media_db_get_group_name(group), DB_TABLE_MEDIA_VIEW); -#endif - ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query); + ret = __media_db_make_query(filter, select_query, sizeof(select_query), &condition_query, &option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); SAFE_STRLCAT(select_query, QUERY_KEYWORD_SPACE, sizeof(select_query)); @@ -384,12 +351,12 @@ int _media_db_get_media_group_count(media_group_e group, filter_h filter, int *g SAFE_FREE(condition_query); SAFE_FREE(option_query); - ret = _content_query_prepare(&stmt, select_query, condition_query, option_query); + ret = _content_query_prepare(select_query, condition_query, option_query, &stmt); SAFE_FREE(condition_query); SAFE_FREE(option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); - while (sqlite3_step(stmt) == SQLITE_ROW) + if (sqlite3_step(stmt) == SQLITE_ROW) *group_count = (int)sqlite3_column_int(stmt, 0); SQLITE3_FINALIZE(stmt); @@ -405,17 +372,13 @@ int _media_db_get_media_group(media_group_e group, filter_h filter, media_group_ char *option_query = NULL; char *name = NULL; sqlite3_stmt *stmt = NULL; - attribute_h attr = NULL; filter_s *_filter = (filter_s*)filter; - - attr = _content_get_attirbute_handle(); memset(select_query, 0x00, sizeof(select_query)); -#ifdef _USE_TV_PROFILE if (group < MEDIA_PVR_GROUP_DURATION) { /*media content */ if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_LIST, __media_db_get_group_name(group), _filter->storage_id); else - snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_LIST, __media_db_get_group_name(group), DB_TABLE_MEDIA_VIEW); + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_LIST, __media_db_get_group_name(group), DB_VIEW_MEDIA); } else if (group < MEDIA_UHD_GROUP_CONTENT_TITLE) { /*pvr content */ if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) snprintf(select_query, sizeof(select_query), SELECT_PVR_GROUP_LIST_BY_STORAGE_ID, __media_db_get_group_name(group), _filter->storage_id); @@ -427,16 +390,10 @@ int _media_db_get_media_group(media_group_e group, filter_h filter, media_group_ else snprintf(select_query, sizeof(select_query), SELECT_UHD_GROUP_LIST, __media_db_get_group_name(group)); } -#else - if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) - snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_LIST, __media_db_get_group_name(group), _filter->storage_id); - else - snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_LIST, __media_db_get_group_name(group), DB_TABLE_MEDIA_VIEW); -#endif - ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query); + ret = __media_db_make_query(filter, select_query, sizeof(select_query), &condition_query, &option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); - ret = _content_query_prepare(&stmt, select_query, condition_query, option_query); + ret = _content_query_prepare(select_query, condition_query, option_query, &stmt); SAFE_FREE(condition_query); SAFE_FREE(option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); @@ -456,7 +413,7 @@ int _media_db_get_media_group(media_group_e group, filter_h filter, media_group_ return ret; } -#ifdef _USE_TV_PROFILE + int _media_db_get_media_group_and_count(media_group_e group, filter_h filter, media_group_and_count_cb callback, void *user_data) { int ret = MEDIA_CONTENT_ERROR_NONE; @@ -466,10 +423,8 @@ int _media_db_get_media_group_and_count(media_group_e group, filter_h filter, me char *option_query = NULL; char *name = NULL; sqlite3_stmt *stmt = NULL; - attribute_h attr = NULL; filter_s *_filter = (filter_s*)filter; - attr = _content_get_attirbute_handle(); memset(select_query, 0x00, sizeof(select_query)); memset(group_query, 0x00, sizeof(group_query)); @@ -483,7 +438,7 @@ int _media_db_get_media_group_and_count(media_group_e group, filter_h filter, me if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_AND_COUNT, group_name, _filter->storage_id); else - snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_AND_COUNT, group_name, DB_TABLE_MEDIA_VIEW); + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_AND_COUNT, group_name, DB_VIEW_MEDIA); } else if (group < MEDIA_UHD_GROUP_CONTENT_TITLE) {/*pvr content*/ if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) snprintf(select_query, sizeof(select_query), SELECT_PVR_GROUP_AND_COUNT_BY_STORAGE_ID, group_name, _filter->storage_id); @@ -496,7 +451,7 @@ int _media_db_get_media_group_and_count(media_group_e group, filter_h filter, me snprintf(select_query, sizeof(select_query), SELECT_UHD_GROUP_AND_COUNT, group_name); } - ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query); + ret = __media_db_make_query(filter, select_query, sizeof(select_query), &condition_query, &option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); if (STRING_VALID(option_query)) @@ -504,7 +459,7 @@ int _media_db_get_media_group_and_count(media_group_e group, filter_h filter, me else snprintf(group_query, sizeof(group_query), "GROUP BY %s", group_name); - ret = _content_query_prepare(&stmt, select_query, condition_query, group_query); + ret = _content_query_prepare(select_query, condition_query, group_query, &stmt); SAFE_FREE(condition_query); SAFE_FREE(option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); @@ -525,7 +480,179 @@ int _media_db_get_media_group_and_count(media_group_e group, filter_h filter, me return ret; } +#else +int _media_db_get_group_count(filter_h filter, group_list_e group_type, int *group_count) +{ + int ret = MEDIA_CONTENT_ERROR_NONE; + sqlite3_stmt *stmt = NULL; + char select_query[MAX_QUERY_SIZE] = {0, }; + char *condition_query = NULL; + char *option_query = NULL; + filter_s *_filter = (filter_s*)filter; + + memset(select_query, 0x00, sizeof(select_query)); + + switch (group_type) { + case MEDIA_GROUP_NONE: + case MEDIA_GROUP_TAG_BY_MEDIA_ID: + case MEDIA_GROUP_BOOKMARK_BY_MEDIA_ID: + case MEDIA_GROUP_FACE_BY_MEDIA_ID: + { + media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); + return MEDIA_CONTENT_ERROR_INVALID_PARAMETER; + } + break; + case MEDIA_GROUP_ALBUM: + if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) + snprintf(select_query, sizeof(select_query), SELECT_ALBUM_COUNT_BY_STORAGE_ID, _filter->storage_id); + else + snprintf(select_query, sizeof(select_query), SELECT_ALBUM_COUNT); + + break; + case MEDIA_GROUP_FOLDER: + if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) + snprintf(select_query, sizeof(select_query), SELECT_FOLDER_COUNT_BY_STORAGE_ID, _filter->storage_id); + else + snprintf(select_query, sizeof(select_query), SELECT_FOLDER_COUNT); + + break; + case MEDIA_GROUP_PLAYLIST: + if (!SAFE_STRLCPY(select_query, SELECT_PLAYLIST_COUNT, sizeof(select_query))) { + media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); + return MEDIA_CONTENT_ERROR_INVALID_PARAMETER; + } + break; + case MEDIA_GROUP_TAG: + if (!SAFE_STRLCPY(select_query, SELECT_TAG_COUNT, sizeof(select_query))) { + media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); + return MEDIA_CONTENT_ERROR_INVALID_PARAMETER; + } + break; + case MEDIA_GROUP_BOOKMARK: + if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) + snprintf(select_query, sizeof(select_query), SELECT_BOOKMARK_COUNT_BY_STORAGE_ID, _filter->storage_id); + else + snprintf(select_query, sizeof(select_query), SELECT_BOOKMARK_COUNT); + + break; + case MEDIA_GROUP_STORAGE: + if (!SAFE_STRLCPY(select_query, SELECT_STORAGE_COUNT, sizeof(select_query))) { + media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); + return MEDIA_CONTENT_ERROR_INVALID_PARAMETER; + } + break; + case MEDIA_GROUP_FACE: + if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) + snprintf(select_query, sizeof(select_query), SELECT_FACE_COUNT_BY_STORAGE_ID, _filter->storage_id); + else + snprintf(select_query, sizeof(select_query), SELECT_FACE_COUNT); + break; + default: + { + media_content_error("Invalid group type [%d]", group_type); + return MEDIA_CONTENT_ERROR_INVALID_PARAMETER; + } + break; + } + + ret = __media_db_make_query(filter, select_query, sizeof(select_query), &condition_query, &option_query); + media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); + + ret = _content_query_prepare(select_query, condition_query, option_query, &stmt); + SAFE_FREE(condition_query); + SAFE_FREE(option_query); + media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); + + if (sqlite3_step(stmt) == SQLITE_ROW) + *group_count = (int)sqlite3_column_int(stmt, 0); + + SQLITE3_FINALIZE(stmt); + + return ret; +} + +int _media_db_get_media_group_count(media_group_e group, filter_h filter, int *group_count) +{ + int ret = MEDIA_CONTENT_ERROR_NONE; + sqlite3_stmt *stmt = NULL; + char select_query[MAX_QUERY_SIZE] = {0, }; + char *condition_query = NULL; + char *option_query = NULL; + filter_s *_filter = (filter_s*)filter; + + memset(select_query, 0x00, sizeof(select_query)); + if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_COUNT_BY_STORAGE_ID, __media_db_get_group_name(group), _filter->storage_id); + else + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_COUNT, __media_db_get_group_name(group)); + + ret = __media_db_make_query(filter, select_query, sizeof(select_query), &condition_query, &option_query); + media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); + + SAFE_STRLCAT(select_query, QUERY_KEYWORD_SPACE, sizeof(select_query)); + if (STRING_VALID(condition_query)) + SAFE_STRLCAT(select_query, condition_query, sizeof(select_query)); + if (STRING_VALID(option_query)) + SAFE_STRLCAT(select_query, option_query, sizeof(select_query)); + SAFE_STRLCAT(select_query, QUERY_KEYWORD_BRACKET, sizeof(select_query)); + + SAFE_FREE(condition_query); + SAFE_FREE(option_query); + + ret = _content_query_prepare(select_query, condition_query, option_query, &stmt); + SAFE_FREE(condition_query); + SAFE_FREE(option_query); + media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); + + if (sqlite3_step(stmt) == SQLITE_ROW) + *group_count = (int)sqlite3_column_int(stmt, 0); + + SQLITE3_FINALIZE(stmt); + + return ret; +} + +int _media_db_get_media_group(media_group_e group, filter_h filter, media_group_cb callback, void *user_data) +{ + int ret = MEDIA_CONTENT_ERROR_NONE; + char select_query[MAX_QUERY_SIZE] = {0, }; + char *condition_query = NULL; + char *option_query = NULL; + char *name = NULL; + sqlite3_stmt *stmt = NULL; + filter_s *_filter = (filter_s*)filter; + memset(select_query, 0x00, sizeof(select_query)); + + if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_LIST_BY_STORAGE_ID, __media_db_get_group_name(group), _filter->storage_id); + else + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_LIST, __media_db_get_group_name(group)); + + ret = __media_db_make_query(filter, select_query, sizeof(select_query), &condition_query, &option_query); + media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); + + ret = _content_query_prepare(select_query, condition_query, option_query, &stmt); + SAFE_FREE(condition_query); + SAFE_FREE(option_query); + media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); + + while (sqlite3_step(stmt) == SQLITE_ROW) { + name = g_strdup((const char *)sqlite3_column_text(stmt, 0)); + + if (callback(name, user_data) == false) { + SAFE_FREE(name); + break; + } + + SAFE_FREE(name); + } + + SQLITE3_FINALIZE(stmt); + + return ret; +} #endif + int _media_db_get_album(filter_h filter, media_album_cb callback, void *user_data) { int ret = MEDIA_CONTENT_ERROR_NONE; @@ -533,21 +660,24 @@ int _media_db_get_album(filter_h filter, media_album_cb callback, void *user_dat char *condition_query = NULL; char *option_query = NULL; sqlite3_stmt *stmt = NULL; - attribute_h attr = NULL; filter_s *_filter = (filter_s*)filter; - attr = _content_get_alias_attirbute_handle(); memset(select_query, 0x00, sizeof(select_query)); - +#ifdef _USE_TVPD_MODE if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) snprintf(select_query, sizeof(select_query), SELECT_ALBUM_LIST, _filter->storage_id); else - snprintf(select_query, sizeof(select_query), SELECT_ALBUM_LIST, DB_TABLE_MEDIA_VIEW); - - ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query); + snprintf(select_query, sizeof(select_query), SELECT_ALBUM_LIST, DB_VIEW_MEDIA); +#else + if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) + snprintf(select_query, sizeof(select_query), SELECT_ALBUM_LIST_BY_STORAGE_ID, _filter->storage_id); + else + snprintf(select_query, sizeof(select_query), SELECT_ALBUM_LIST); +#endif + ret = __media_db_make_query(filter, select_query, sizeof(select_query), &condition_query, &option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); - ret = _content_query_prepare(&stmt, select_query, condition_query, option_query); + ret = _content_query_prepare(select_query, condition_query, option_query, &stmt); SAFE_FREE(condition_query); SAFE_FREE(option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); @@ -586,24 +716,24 @@ int _media_db_get_folder(filter_h filter, media_folder_cb callback, void *user_d char *condition_query = NULL; char *option_query = NULL; sqlite3_stmt *stmt = NULL; - attribute_h attr = NULL; filter_s *_filter = (filter_s*)filter; - char *tmp_path = NULL; - char repl_path[MAX_PATH_LEN] = {0, }; - attr = _content_get_alias_attirbute_handle(); memset(select_query, 0x00, sizeof(select_query)); - +#ifdef _USE_TVPD_MODE if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) snprintf(select_query, sizeof(select_query), SELECT_FOLDER_LIST_BY_STORAGE_ID, _filter->storage_id, _filter->storage_id); else - snprintf(select_query, sizeof(select_query), SELECT_FOLDER_LIST, DB_TABLE_MEDIA_VIEW); - - ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query); + snprintf(select_query, sizeof(select_query), SELECT_FOLDER_LIST, DB_VIEW_MEDIA); +#else + if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) + snprintf(select_query, sizeof(select_query), SELECT_FOLDER_LIST_BY_STORAGE_ID, _filter->storage_id); + else + snprintf(select_query, sizeof(select_query), SELECT_FOLDER_LIST); +#endif + ret = __media_db_make_query(filter, select_query, sizeof(select_query), &condition_query, &option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); - ret = _content_query_prepare(&stmt, select_query, condition_query, option_query); - + ret = _content_query_prepare(select_query, condition_query, option_query, &stmt); SAFE_FREE(condition_query); SAFE_FREE(option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); @@ -618,18 +748,10 @@ int _media_db_get_folder(filter_h filter, media_folder_cb callback, void *user_d } _folder->folder_id = g_strdup((const char *)sqlite3_column_text(stmt, 0)); - - tmp_path = g_strdup((const char *)sqlite3_column_text(stmt, 1)); - _media_content_rollback_path(tmp_path, repl_path); - _folder->path = g_strdup(repl_path); - SAFE_FREE(tmp_path); - + _folder->path = g_strdup((const char *)sqlite3_column_text(stmt, 1)); _folder->name = g_strdup((const char *)sqlite3_column_text(stmt, 2)); _folder->storage_type = (int)sqlite3_column_int(stmt, 3); - _folder->modified_time = (int)sqlite3_column_int(stmt, 4); - _folder->storage_uuid = g_strdup((const char *)sqlite3_column_text(stmt, 5)); - _folder->folder_order = (int)sqlite3_column_int(stmt, 6); - _folder->parent_folder_id = g_strdup((const char *)sqlite3_column_text(stmt, 7)); + _folder->storage_uuid = g_strdup((const char *)sqlite3_column_text(stmt, 4)); if (callback((media_folder_h)_folder, user_data) == false) { media_folder_destroy((media_folder_h) _folder); @@ -651,11 +773,7 @@ int _media_db_get_playlist(filter_h filter, media_playlist_cb callback, void *us char *condition_query = NULL; char *option_query = NULL; sqlite3_stmt *stmt = NULL; - attribute_h attr = NULL; - char *tmp_path = NULL; - char repl_path[MAX_PATH_LEN] = {0, }; - attr = _content_get_attirbute_handle(); memset(select_query, 0x00, sizeof(select_query)); if (!SAFE_STRLCPY(select_query, SELECT_PLAYLIST_LIST, sizeof(select_query))) { @@ -663,10 +781,10 @@ int _media_db_get_playlist(filter_h filter, media_playlist_cb callback, void *us return MEDIA_CONTENT_ERROR_INVALID_PARAMETER; } - ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query); + ret = __media_db_make_query(filter, select_query, sizeof(select_query), &condition_query, &option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); - ret = _content_query_prepare(&stmt, select_query, condition_query, option_query); + ret = _content_query_prepare(select_query, condition_query, option_query, &stmt); SAFE_FREE(condition_query); SAFE_FREE(option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); @@ -682,17 +800,7 @@ int _media_db_get_playlist(filter_h filter, media_playlist_cb callback, void *us _playlist->playlist_id = (int)sqlite3_column_int(stmt, 0); _playlist->name = g_strdup((const char *)sqlite3_column_text(stmt, 1)); - - memset(repl_path, 0x00, sizeof(repl_path)); - tmp_path = g_strdup((const char *)sqlite3_column_text(stmt, 2)); - if (STRING_VALID(tmp_path)) { - _media_content_rollback_path(tmp_path, repl_path); - _playlist->thumbnail_path = g_strdup(repl_path); - } else { - _playlist->thumbnail_path = NULL; - } - - SAFE_FREE(tmp_path); + _playlist->thumbnail_path = g_strdup((const char *)sqlite3_column_text(stmt, 2)); if (callback((media_playlist_h)_playlist, user_data) == false) { media_playlist_destroy((media_playlist_h)_playlist); @@ -713,18 +821,15 @@ int _media_db_get_playlist_item(int playlist_id, filter_h filter, playlist_membe char *condition_query = NULL; char *option_query = NULL; sqlite3_stmt *stmt = NULL; - attribute_h attr = NULL; - attr = _content_get_attirbute_handle(); memset(select_query, 0x00, sizeof(select_query)); - /*snprintf(select_query, sizeof(select_query), SELECT_PLAYLIST_ITEM_ID_FROM_PLAYLIST_VIEW, playlist_id);*/ snprintf(select_query, sizeof(select_query), SELECT_PLAYLIST_ITEM_ALL_FROM_PLAYLIST_VIEW, playlist_id); - ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query); + ret = __media_db_make_query(filter, select_query, sizeof(select_query), &condition_query, &option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); - ret = _content_query_prepare(&stmt, select_query, condition_query, option_query); + ret = _content_query_prepare(select_query, condition_query, option_query, &stmt); SAFE_FREE(condition_query); SAFE_FREE(option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); @@ -763,9 +868,7 @@ int _media_db_get_tag(const char *media_id, filter_h filter, media_tag_cb callba char *condition_query = NULL; char *option_query = NULL; sqlite3_stmt *stmt = NULL; - attribute_h attr = NULL; - attr = _content_get_attirbute_handle(); memset(select_query, 0x00, sizeof(select_query)); if (!STRING_VALID(media_id)) { @@ -776,12 +879,12 @@ int _media_db_get_tag(const char *media_id, filter_h filter, media_tag_cb callba } else snprintf(select_query, sizeof(select_query), SELECT_TAG_LIST_BY_MEDIA_ID, media_id); - ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query); + ret = __media_db_make_query(filter, select_query, sizeof(select_query), &condition_query, &option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); SAFE_STRLCAT(select_query, QUERY_KEYWORD_SPACE, sizeof(select_query)); - ret = _content_query_prepare(&stmt, select_query, condition_query, option_query); + ret = _content_query_prepare(select_query, condition_query, option_query, &stmt); SAFE_FREE(condition_query); SAFE_FREE(option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); @@ -817,22 +920,36 @@ int _media_db_get_bookmark(const char *media_id, filter_h filter, media_bookmark char *condition_query = NULL; char *option_query = NULL; sqlite3_stmt *stmt = NULL; - attribute_h attr = NULL; filter_s *_filter = (filter_s*)filter; - attr = _content_get_attirbute_handle(); - memset(select_query, 0x00, sizeof(select_query)); +#ifdef _USE_TVPD_MODE + if (STRING_VALID(media_id)) { //get bookmark by media_id + if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) + snprintf(select_query, sizeof(select_query), SELECT_BOOKMARK_LIST_BY_MEDIA_ID, _filter->storage_id, media_id); + else + snprintf(select_query, sizeof(select_query), SELECT_BOOKMARK_LIST_BY_MEDIA_ID, DB_VIEW_MEDIA, media_id); + } else { + if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) + snprintf(select_query, sizeof(select_query), SELECT_BOOKMARK_LIST, _filter->storage_id); + else + snprintf(select_query, sizeof(select_query), SELECT_BOOKMARK_LIST, DB_VIEW_MEDIA); + } +#else + if (STRING_VALID(media_id)) { //get bookmark by media_id + snprintf(select_query, sizeof(select_query), SELECT_BOOKMARK_LIST_BY_MEDIA_ID, media_id); + } else { + if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) + snprintf(select_query, sizeof(select_query), SELECT_BOOKMARK_LIST_BY_STORAGE_ID, _filter->storage_id); + else + snprintf(select_query, sizeof(select_query), SELECT_BOOKMARK_LIST); + } +#endif - if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) - snprintf(select_query, sizeof(select_query), SELECT_BOOKMARK_LIST_BY_MEDIA_ID, _filter->storage_id, media_id); - else - snprintf(select_query, sizeof(select_query), SELECT_BOOKMARK_LIST_BY_MEDIA_ID, DB_TABLE_MEDIA_VIEW, media_id); - - ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query); + ret = __media_db_make_query(filter, select_query, sizeof(select_query), &condition_query, &option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); - ret = _content_query_prepare(&stmt, select_query, condition_query, option_query); + ret = _content_query_prepare(select_query, condition_query, option_query, &stmt); SAFE_FREE(condition_query); SAFE_FREE(option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); @@ -873,22 +990,35 @@ int _media_db_get_face(const char *media_id, filter_h filter, media_face_cb call char *condition_query = NULL; char *option_query = NULL; sqlite3_stmt *stmt = NULL; - attribute_h attr = NULL; filter_s *_filter = (filter_s*)filter; - attr = _content_get_attirbute_handle(); - memset(select_query, 0x00, sizeof(select_query)); - - if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) - snprintf(select_query, sizeof(select_query), SELECT_FACE_LIST_BY_MEDIA_ID, _filter->storage_id, media_id); - else - snprintf(select_query, sizeof(select_query), SELECT_FACE_LIST_BY_MEDIA_ID, DB_TABLE_MEDIA_VIEW, media_id); - - ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query); +#ifdef _USE_TVPD_MODE + if (STRING_VALID(media_id)) { //get face by media_id + if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) + snprintf(select_query, sizeof(select_query), SELECT_FACE_LIST_BY_MEDIA_ID, _filter->storage_id, media_id); + else + snprintf(select_query, sizeof(select_query), SELECT_FACE_LIST_BY_MEDIA_ID, DB_VIEW_MEDIA, media_id); + } else { + if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) + snprintf(select_query, sizeof(select_query), SELECT_FACE_LIST, _filter->storage_id); + else + snprintf(select_query, sizeof(select_query), SELECT_FACE_LIST, DB_VIEW_MEDIA); + } +#else + if (STRING_VALID(media_id)) { //get face by media_id + snprintf(select_query, sizeof(select_query), SELECT_FACE_LIST_BY_MEDIA_ID, media_id); + } else { + if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) + snprintf(select_query, sizeof(select_query), SELECT_FACE_LIST_BY_STORAGE_ID, _filter->storage_id); + else + snprintf(select_query, sizeof(select_query), SELECT_FACE_LIST); + } +#endif + ret = __media_db_make_query(filter, select_query, sizeof(select_query), &condition_query, &option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); - ret = _content_query_prepare(&stmt, select_query, condition_query, option_query); + ret = _content_query_prepare(select_query, condition_query, option_query, &stmt); SAFE_FREE(condition_query); SAFE_FREE(option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); @@ -902,7 +1032,7 @@ int _media_db_get_face(const char *media_id, filter_h filter, media_face_cb call return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY; } - face->face_id = g_strdup((const char *)sqlite3_column_text(stmt, 0)); + face->face_id = (int)sqlite3_column_int(stmt, 0); face->media_id = g_strdup((const char *)sqlite3_column_text(stmt, 1)); face->face_rect_x = (int)sqlite3_column_int(stmt, 2); face->face_rect_y = (int)sqlite3_column_int(stmt, 3); @@ -932,17 +1062,22 @@ int _media_db_get_group_item_count_by_id(int group_id, filter_h filter, group_li char select_query[MAX_QUERY_SIZE] = {0, }; char *condition_query = NULL; char *option_query = NULL; - attribute_h attr = NULL; filter_s *_filter = (filter_s*)filter; - attr = _content_get_attirbute_handle(); memset(select_query, 0x00, sizeof(select_query)); if (group_type == MEDIA_GROUP_ALBUM) { +#ifdef _USE_TVPD_MODE if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_ALBUM, _filter->storage_id, group_id); else - snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_ALBUM, DB_TABLE_MEDIA_VIEW, group_id); + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_ALBUM, DB_VIEW_MEDIA, group_id); +#else + if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_ALBUM_BY_STORAGE_ID, group_id, _filter->storage_id); + else + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_ALBUM, group_id); +#endif } else if (group_type == MEDIA_GROUP_PLAYLIST) { snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_PLAYLIST, group_id); } else if (group_type == MEDIA_GROUP_TAG) { @@ -952,15 +1087,15 @@ int _media_db_get_group_item_count_by_id(int group_id, filter_h filter, group_li return MEDIA_CONTENT_ERROR_INVALID_PARAMETER; } - ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query); + ret = __media_db_make_query(filter, select_query, sizeof(select_query), &condition_query, &option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); - ret = _content_query_prepare(&stmt, select_query, condition_query, option_query); + ret = _content_query_prepare(select_query, condition_query, option_query, &stmt); SAFE_FREE(condition_query); SAFE_FREE(option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); - while (sqlite3_step(stmt) == SQLITE_ROW) + if (sqlite3_step(stmt) == SQLITE_ROW) *item_count = (int)sqlite3_column_int(stmt, 0); SQLITE3_FINALIZE(stmt); @@ -977,10 +1112,8 @@ int _media_db_get_group_item_count(const char *group_name, filter_h filter, grou char *condition_query = NULL; char *option_query = NULL; bool is_simple = FALSE; - attribute_h attr = NULL; filter_s *_filter = (filter_s*)filter; - attr = _content_get_attirbute_handle(); memset(select_query, 0x00, sizeof(select_query)); if (group_type == MEDIA_GROUP_NONE) { @@ -988,42 +1121,68 @@ int _media_db_get_group_item_count(const char *group_name, filter_h filter, grou If user wants to set offset and count, use SQL SELECT_MEDIA_COUNT_FROM_MEDIA. If user wants to get count without setting count, SELECT_MEDIA_COUNT_FROM_MEDIA_SIMPLE */ if (_filter && ((_filter->offset < 0) && (_filter->count < 0))) { +#ifdef _USE_TVPD_MODE if (STRING_VALID(_filter->storage_id)) snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_MEDIA_SIMPLE, _filter->storage_id); else - snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_MEDIA_SIMPLE, DB_TABLE_MEDIA_VIEW); + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_MEDIA_SIMPLE, DB_VIEW_MEDIA); +#else + if (STRING_VALID(_filter->storage_id)) + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_MEDIA_SIMPLE_BY_STORAGE_ID, _filter->storage_id); + else + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_MEDIA_SIMPLE); +#endif is_simple = TRUE; } else { - snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_MEDIA, DB_TABLE_MEDIA_VIEW); +#ifdef _USE_TVPD_MODE + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_MEDIA, DB_VIEW_MEDIA); +#else + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_MEDIA); +#endif } } else if (group_type == MEDIA_GROUP_FOLDER) { +#ifdef _USE_TVPD_MODE if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) tmp_query = sqlite3_mprintf(SELECT_MEDIA_COUNT_FROM_FOLDER, _filter->storage_id, group_name); else - tmp_query = sqlite3_mprintf(SELECT_MEDIA_COUNT_FROM_FOLDER, DB_TABLE_MEDIA_VIEW, group_name); - + tmp_query = sqlite3_mprintf(SELECT_MEDIA_COUNT_FROM_FOLDER, DB_VIEW_MEDIA, group_name); +#else + if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) + tmp_query = sqlite3_mprintf(SELECT_MEDIA_COUNT_FROM_FOLDER_BY_STORAGE_ID, group_name, _filter->storage_id); + else + tmp_query = sqlite3_mprintf(SELECT_MEDIA_COUNT_FROM_FOLDER, group_name); +#endif SAFE_STRLCAT(select_query, tmp_query, sizeof(select_query)); } else if (group_type == MEDIA_GROUP_TAG_BY_MEDIA_ID) { snprintf(select_query, sizeof(select_query), SELECT_TAG_COUNT_BY_MEDIA_ID, group_name); } else if (group_type == MEDIA_GROUP_BOOKMARK_BY_MEDIA_ID) { +#ifdef _USE_TVPD_MODE if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) tmp_query = sqlite3_mprintf(SELECT_BOOKMARK_COUNT_BY_MEDIA_ID, _filter->storage_id, group_name); else - tmp_query = sqlite3_mprintf(SELECT_BOOKMARK_COUNT_BY_MEDIA_ID, DB_TABLE_MEDIA_VIEW, group_name); - + tmp_query = sqlite3_mprintf(SELECT_BOOKMARK_COUNT_BY_MEDIA_ID, DB_VIEW_MEDIA, group_name); +#else + tmp_query = sqlite3_mprintf(SELECT_BOOKMARK_COUNT_BY_MEDIA_ID, group_name); +#endif SAFE_STRLCAT(select_query, tmp_query, sizeof(select_query)); } else if (group_type == MEDIA_GROUP_STORAGE) { +#ifdef _USE_TVPD_MODE tmp_query = sqlite3_mprintf(SELECT_MEDIA_COUNT_FROM_STORAGE, group_name, group_name); - +#else + tmp_query = sqlite3_mprintf(SELECT_MEDIA_COUNT_FROM_STORAGE, group_name); +#endif SAFE_STRLCAT(select_query, tmp_query, sizeof(select_query)); } else if (group_type == MEDIA_GROUP_FACE_BY_MEDIA_ID) { +#ifdef _USE_TVPD_MODE if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) tmp_query = sqlite3_mprintf(SELECT_FACE_COUNT_BY_MEDIA_ID, _filter->storage_id, group_name); else - tmp_query = sqlite3_mprintf(SELECT_FACE_COUNT_BY_MEDIA_ID, DB_TABLE_MEDIA_VIEW, group_name); - + tmp_query = sqlite3_mprintf(SELECT_FACE_COUNT_BY_MEDIA_ID, DB_VIEW_MEDIA, group_name); +#else + tmp_query = sqlite3_mprintf(SELECT_FACE_COUNT_BY_MEDIA_ID, group_name); +#endif SAFE_STRLCAT(select_query, tmp_query, sizeof(select_query)); -#ifdef _USE_TV_PROFILE +#ifdef _USE_TVPD_MODE } else if (group_type == MEDIA_GROUP_PVR) { if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) snprintf(select_query, sizeof(select_query), SELECT_PVR_COUNT_BY_STORAGE_ID, _filter->storage_id); @@ -1040,7 +1199,7 @@ int _media_db_get_group_item_count(const char *group_name, filter_h filter, grou return MEDIA_CONTENT_ERROR_INVALID_PARAMETER; } - ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query); + ret = __media_db_make_query(filter, select_query, sizeof(select_query), &condition_query, &option_query); if (ret != MEDIA_CONTENT_ERROR_NONE) { if (tmp_query != NULL) SQLITE3_SAFE_FREE(tmp_query); @@ -1061,14 +1220,14 @@ int _media_db_get_group_item_count(const char *group_name, filter_h filter, grou SAFE_FREE(option_query); } - ret = _content_query_prepare(&stmt, select_query, condition_query, option_query); + ret = _content_query_prepare(select_query, condition_query, option_query, &stmt); if (tmp_query != NULL) SQLITE3_SAFE_FREE(tmp_query); SAFE_FREE(condition_query); SAFE_FREE(option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); - while (sqlite3_step(stmt) == SQLITE_ROW) + if (sqlite3_step(stmt) == SQLITE_ROW) *item_count = (int)sqlite3_column_int(stmt, 0); SQLITE3_FINALIZE(stmt); @@ -1083,36 +1242,55 @@ int _media_db_get_group_item_by_id(int group_id, filter_h filter, media_info_cb char *condition_query = NULL; char *option_query = NULL; sqlite3_stmt *stmt = NULL; - attribute_h attr = NULL; filter_s *_filter = (filter_s*)filter; - attr = _content_get_attirbute_handle(); memset(select_query, 0x00, sizeof(select_query)); +#ifdef _USE_TVPD_MODE if (group_type == MEDIA_GROUP_ALBUM) { if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_ALBUM, _filter->storage_id, group_id); else - snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_ALBUM, DB_TABLE_MEDIA_VIEW, group_id); + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_ALBUM, DB_VIEW_MEDIA, group_id); } else if (group_type == MEDIA_GROUP_PLAYLIST) { if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_PLAYLIST, _filter->storage_id, group_id); else - snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_PLAYLIST, DB_TABLE_MEDIA_VIEW, group_id); + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_PLAYLIST, DB_VIEW_MEDIA, group_id); } else if (group_type == MEDIA_GROUP_TAG) { if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_TAG, _filter->storage_id, group_id); else - snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_TAG, DB_TABLE_MEDIA_VIEW, group_id); + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_TAG, DB_VIEW_MEDIA, group_id); } else { media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); return MEDIA_CONTENT_ERROR_INVALID_PARAMETER; } - - ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query); +#else + if (group_type == MEDIA_GROUP_ALBUM) { + if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_ALBUM_BY_STORAGE_ID, group_id, _filter->storage_id); + else + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_ALBUM, group_id); + } else if (group_type == MEDIA_GROUP_PLAYLIST) { + if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_PLAYLIST_BY_STORAGE_ID, group_id, _filter->storage_id); + else + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_PLAYLIST, group_id); + } else if (group_type == MEDIA_GROUP_TAG) { + if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_TAG_BY_STORAGE_ID, group_id, _filter->storage_id); + else + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_TAG, group_id); + } else { + media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); + return MEDIA_CONTENT_ERROR_INVALID_PARAMETER; + } +#endif + ret = __media_db_make_query(filter, select_query, sizeof(select_query), &condition_query, &option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); - ret = _content_query_prepare(&stmt, select_query, condition_query, option_query); + ret = _content_query_prepare(select_query, condition_query, option_query, &stmt); SAFE_FREE(condition_query); SAFE_FREE(option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); @@ -1147,33 +1325,45 @@ int _media_db_get_group_item(const char *group_name, filter_h filter, media_info char *condition_query = NULL; char *option_query = NULL; sqlite3_stmt *stmt = NULL; - attribute_h attr = NULL; filter_s *_filter = (filter_s*)filter; - attr = _content_get_attirbute_handle(); memset(select_query, 0x00, sizeof(select_query)); - +#ifdef _USE_TVPD_MODE if (group_type == MEDIA_GROUP_NONE) { if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) snprintf(select_query, sizeof(select_query), SELECT_MEDIA_ITEM, _filter->storage_id); else - snprintf(select_query, sizeof(select_query), SELECT_MEDIA_ITEM, DB_TABLE_MEDIA_VIEW); + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_ITEM, DB_VIEW_MEDIA); } else if (group_type == MEDIA_GROUP_FOLDER) { if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_FOLDER, _filter->storage_id, group_name); else - snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_FOLDER, DB_TABLE_MEDIA_VIEW, group_name); + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_FOLDER, DB_VIEW_MEDIA, group_name); } else if (group_type == MEDIA_GROUP_STORAGE) { snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_STORAGE, group_name, group_name); } else { media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); return MEDIA_CONTENT_ERROR_INVALID_PARAMETER; } - - ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query); +#else + if (group_type == MEDIA_GROUP_NONE) { + if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_ITEM_BY_STORAGE_ID, _filter->storage_id); + else + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_ITEM); + } else if (group_type == MEDIA_GROUP_FOLDER) { + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_FOLDER, group_name); + } else if (group_type == MEDIA_GROUP_STORAGE) { + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_STORAGE, group_name); + } else { + media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); + return MEDIA_CONTENT_ERROR_INVALID_PARAMETER; + } +#endif + ret = __media_db_make_query(filter, select_query, sizeof(select_query), &condition_query, &option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); - ret = _content_query_prepare(&stmt, select_query, condition_query, option_query); + ret = _content_query_prepare(select_query, condition_query, option_query, &stmt); SAFE_FREE(condition_query); SAFE_FREE(option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); @@ -1212,20 +1402,17 @@ int _media_db_get_group_item_by_union_select(const char *group_name, filter_h fi char *condition_query2 = NULL; char *option_query2 = NULL; sqlite3_stmt *stmt = NULL; - attribute_h attr = NULL; filter_s *_filter1 = (filter_s*)filter1; filter_s *_filter2 = (filter_s*)filter2; - attr = _content_get_attirbute_handle(); - memset(select_query1, 0x00, sizeof(select_query1)); if ((_filter1 != NULL) && STRING_VALID(_filter1->storage_id)) snprintf(select_query1, sizeof(select_query1), SELECT_MEDIA_FROM_FOLDER, _filter1->storage_id, group_name); else - snprintf(select_query1, sizeof(select_query1), SELECT_MEDIA_FROM_FOLDER, DB_TABLE_MEDIA_VIEW, group_name); + snprintf(select_query1, sizeof(select_query1), SELECT_MEDIA_FROM_FOLDER, DB_VIEW_MEDIA, group_name); - ret = __media_db_make_query(filter1, attr, select_query1, sizeof(select_query1), &condition_query1, &option_query1); + ret = __media_db_make_query(filter1, select_query1, sizeof(select_query1), &condition_query1, &option_query1); if (ret != MEDIA_CONTENT_ERROR_NONE) { SAFE_FREE(condition_query1); SAFE_FREE(option_query1); @@ -1238,9 +1425,9 @@ int _media_db_get_group_item_by_union_select(const char *group_name, filter_h fi if ((_filter2 != NULL) && STRING_VALID(_filter2->storage_id)) snprintf(select_query2, sizeof(select_query2), SELECT_MEDIA_FROM_FOLDER, _filter2->storage_id, group_name); else - snprintf(select_query2, sizeof(select_query2), SELECT_MEDIA_FROM_FOLDER, DB_TABLE_MEDIA_VIEW, group_name); + snprintf(select_query2, sizeof(select_query2), SELECT_MEDIA_FROM_FOLDER, DB_VIEW_MEDIA, group_name); - ret = __media_db_make_query(filter2, attr, select_query2, sizeof(select_query2), &condition_query2, &option_query2); + ret = __media_db_make_query(filter2, select_query2, sizeof(select_query2), &condition_query2, &option_query2); if (ret != MEDIA_CONTENT_ERROR_NONE) { SAFE_FREE(condition_query1); SAFE_FREE(option_query1); @@ -1289,25 +1476,23 @@ int _media_db_get_media_group_item_count(const char *group_name, filter_h filter char *tmp_query = NULL; char *condition_query = NULL; char *option_query = NULL; - attribute_h attr = NULL; filter_s *_filter = (filter_s*)filter; - attr = _content_get_attirbute_handle(); memset(select_query, 0x00, sizeof(select_query)); -#ifdef _USE_TV_PROFILE +#ifdef _USE_TVPD_MODE if (group < MEDIA_PVR_GROUP_DURATION) { /*media content */ if (group_name != NULL) { if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) tmp_query = sqlite3_mprintf(SELECT_MEDIA_COUNT_FROM_GROUP, _filter->storage_id, __media_db_get_group_name(group), group_name); else - tmp_query = sqlite3_mprintf(SELECT_MEDIA_COUNT_FROM_GROUP, DB_TABLE_MEDIA_VIEW, __media_db_get_group_name(group), group_name); + tmp_query = sqlite3_mprintf(SELECT_MEDIA_COUNT_FROM_GROUP, DB_VIEW_MEDIA, __media_db_get_group_name(group), group_name); SAFE_STRLCAT(select_query, tmp_query, sizeof(select_query)); } else { if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_GROUP_NULL, _filter->storage_id, __media_db_get_group_name(group)); else - snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_GROUP_NULL, DB_TABLE_MEDIA_VIEW, __media_db_get_group_name(group)); + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_GROUP_NULL, DB_VIEW_MEDIA, __media_db_get_group_name(group)); } } else if (group < MEDIA_UHD_GROUP_CONTENT_TITLE) {/*pvr content*/ if (group_name != NULL) { @@ -1341,20 +1526,20 @@ int _media_db_get_media_group_item_count(const char *group_name, filter_h filter #else if (group_name != NULL) { if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) { - tmp_query = sqlite3_mprintf(SELECT_MEDIA_COUNT_FROM_GROUP, _filter->storage_id, __media_db_get_group_name(group), group_name); + tmp_query = sqlite3_mprintf(SELECT_MEDIA_COUNT_FROM_GROUP_BY_STORAGE_ID, __media_db_get_group_name(group), group_name, _filter->storage_id); SAFE_STRLCAT(select_query, tmp_query, sizeof(select_query)); } else { - tmp_query = sqlite3_mprintf(SELECT_MEDIA_COUNT_FROM_GROUP, DB_TABLE_MEDIA_VIEW, __media_db_get_group_name(group), group_name); + tmp_query = sqlite3_mprintf(SELECT_MEDIA_COUNT_FROM_GROUP, __media_db_get_group_name(group), group_name); SAFE_STRLCAT(select_query, tmp_query, sizeof(select_query)); } } else { if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) - snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_GROUP_NULL, _filter->storage_id, __media_db_get_group_name(group)); + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_GROUP_NULL_BY_STORAGE_ID, __media_db_get_group_name(group), _filter->storage_id); else - snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_GROUP_NULL, DB_TABLE_MEDIA_VIEW, __media_db_get_group_name(group)); + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_GROUP_NULL, __media_db_get_group_name(group)); } #endif - ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query); + ret = __media_db_make_query(filter, select_query, sizeof(select_query), &condition_query, &option_query); if (ret != MEDIA_CONTENT_ERROR_NONE) { if (tmp_query != NULL) SQLITE3_SAFE_FREE(tmp_query); @@ -1371,14 +1556,14 @@ int _media_db_get_media_group_item_count(const char *group_name, filter_h filter SAFE_FREE(condition_query); SAFE_FREE(option_query); - ret = _content_query_prepare(&stmt, select_query, condition_query, option_query); + ret = _content_query_prepare(select_query, condition_query, option_query, &stmt); if (tmp_query != NULL) SQLITE3_SAFE_FREE(tmp_query); SAFE_FREE(condition_query); SAFE_FREE(option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); - while (sqlite3_step(stmt) == SQLITE_ROW) + if (sqlite3_step(stmt) == SQLITE_ROW) *item_count = (int)sqlite3_column_int(stmt, 0); SQLITE3_FINALIZE(stmt); @@ -1394,34 +1579,46 @@ int _media_db_get_media_group_item(const char *group_name, filter_h filter, medi char *condition_query = NULL; char *option_query = NULL; sqlite3_stmt *stmt = NULL; - attribute_h attr = NULL; filter_s *_filter = (filter_s*)filter; - attr = _content_get_attirbute_handle(); memset(select_query, 0x00, sizeof(select_query)); - +#ifdef _USE_TVPD_MODE if (group_name != NULL) { if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) tmp_query = sqlite3_mprintf(SELECT_MEDIA_FROM_GROUP, _filter->storage_id, __media_db_get_group_name(group), group_name); else - tmp_query = sqlite3_mprintf(SELECT_MEDIA_FROM_GROUP, DB_TABLE_MEDIA_VIEW, __media_db_get_group_name(group), group_name); + tmp_query = sqlite3_mprintf(SELECT_MEDIA_FROM_GROUP, DB_VIEW_MEDIA, __media_db_get_group_name(group), group_name); SAFE_STRLCAT(select_query, tmp_query, sizeof(select_query)); } else { if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_GROUP_NULL, _filter->storage_id, __media_db_get_group_name(group)); else - snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_GROUP_NULL, DB_TABLE_MEDIA_VIEW, __media_db_get_group_name(group)); + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_GROUP_NULL, DB_VIEW_MEDIA, __media_db_get_group_name(group)); } +#else + if (group_name != NULL) { + if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) + tmp_query = sqlite3_mprintf(SELECT_MEDIA_FROM_GROUP_BY_STORAGE_ID, __media_db_get_group_name(group), group_name, _filter->storage_id); + else + tmp_query = sqlite3_mprintf(SELECT_MEDIA_FROM_GROUP, __media_db_get_group_name(group), group_name); - ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query); + SAFE_STRLCAT(select_query, tmp_query, sizeof(select_query)); + } else { + if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_GROUP_NULL_BY_STORAGE_ID, __media_db_get_group_name(group), _filter->storage_id); + else + snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_GROUP_NULL, __media_db_get_group_name(group)); + } +#endif + ret = __media_db_make_query(filter, select_query, sizeof(select_query), &condition_query, &option_query); if (ret != MEDIA_CONTENT_ERROR_NONE) { if (tmp_query != NULL) SQLITE3_SAFE_FREE(tmp_query); return ret; } - ret = _content_query_prepare(&stmt, select_query, condition_query, option_query); + ret = _content_query_prepare(select_query, condition_query, option_query, &stmt); if (tmp_query != NULL) SQLITE3_SAFE_FREE(tmp_query); SAFE_FREE(condition_query); @@ -1458,9 +1655,7 @@ int _media_db_get_storage(filter_h filter, media_storage_cb callback, void *user char *condition_query = NULL; char *option_query = NULL; sqlite3_stmt *stmt = NULL; - attribute_h attr = NULL; - attr = _content_get_attirbute_handle(); memset(select_query, 0x00, sizeof(select_query)); if (!SAFE_STRLCPY(select_query, SELECT_STORAGE_LIST, sizeof(select_query))) { @@ -1468,10 +1663,10 @@ int _media_db_get_storage(filter_h filter, media_storage_cb callback, void *user return MEDIA_CONTENT_ERROR_INVALID_PARAMETER; } - ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query); + ret = __media_db_make_query(filter, select_query, sizeof(select_query), &condition_query, &option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); - ret = _content_query_prepare(&stmt, select_query, condition_query, option_query); + ret = _content_query_prepare(select_query, condition_query, option_query, &stmt); SAFE_FREE(condition_query); SAFE_FREE(option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); @@ -1486,9 +1681,8 @@ int _media_db_get_storage(filter_h filter, media_storage_cb callback, void *user } _storage->storage_id = g_strdup((const char *)sqlite3_column_text(stmt, 0)); - _storage->storage_name = g_strdup((const char *)sqlite3_column_text(stmt, 1)); - _storage->storage_path = g_strdup((const char *)sqlite3_column_text(stmt, 2)); - _storage->storage_type = (int)sqlite3_column_int(stmt, 3); + _storage->storage_path = g_strdup((const char *)sqlite3_column_text(stmt, 1)); + _storage->storage_type = (int)sqlite3_column_int(stmt, 2); if (callback((media_storage_h)_storage, user_data) == false) { media_storage_destroy((media_storage_h) _storage); @@ -1502,7 +1696,32 @@ int _media_db_get_storage(filter_h filter, media_storage_cb callback, void *user return ret; } -#ifdef _USE_TV_PROFILE + +int _media_db_get_storage_id_by_media_id(const char *media_id, char **storage_id) +{ + int ret = MEDIA_CONTENT_ERROR_NONE; + sqlite3_stmt *stmt = NULL; + char *select_query = NULL; + + select_query = sqlite3_mprintf(SELECT_MEDIA_STORAGE_ID_BY_ID, media_id); + + ret = _content_get_result(select_query, &stmt); + SQLITE3_SAFE_FREE(select_query); + media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); + + if (sqlite3_step(stmt) == SQLITE_ROW) { + *storage_id = g_strdup((const char *)sqlite3_column_text(stmt, 0)); + } else { + media_content_error("Invalid media_id[%s]", media_id); + ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; + } + + SQLITE3_FINALIZE(stmt); + + return ret; +} + +#ifdef _USE_TVPD_MODE int _media_db_get_pvr_group_item(const char *group_name, filter_h filter, media_group_e group, media_pvr_cb callback, void *user_data) { int ret = MEDIA_CONTENT_ERROR_NONE; @@ -1511,10 +1730,8 @@ int _media_db_get_pvr_group_item(const char *group_name, filter_h filter, media_ char *condition_query = NULL; char *option_query = NULL; sqlite3_stmt *stmt = NULL; - attribute_h attr = NULL; filter_s *_filter = (filter_s*)filter; - attr = _content_get_attirbute_handle(); memset(select_query, 0x00, sizeof(select_query)); if (group_name != NULL) { @@ -1531,14 +1748,14 @@ int _media_db_get_pvr_group_item(const char *group_name, filter_h filter, media_ snprintf(select_query, sizeof(select_query), SELECT_PVR_FROM_GROUP_NULL, __media_db_get_group_name(group)); } - ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query); + ret = __media_db_make_query(filter, select_query, sizeof(select_query), &condition_query, &option_query); if (ret != MEDIA_CONTENT_ERROR_NONE) { if (tmp_query != NULL) sqlite3_free(tmp_query); return ret; } - ret = _content_query_prepare(&stmt, select_query, condition_query, option_query); + ret = _content_query_prepare(select_query, condition_query, option_query, &stmt); if (tmp_query != NULL) sqlite3_free(tmp_query); SAFE_FREE(condition_query); @@ -1581,6 +1798,7 @@ typedef enum { MEDIA_PVR_CHANNEL_TYPE, MEDIA_PVR_CHANNEL_NAME, MEDIA_PVR_CHANNEL_NUM, + MEDIA_PVR_SERVICE_PROFILE, MEDIA_PVR_PROGRAM_TITLE, MEDIA_PVR_PROGRAM_NUM, MEDIA_PVR_PROGRAM_CRID, @@ -1645,6 +1863,8 @@ void _media_pvr_item_get_detail(sqlite3_stmt* stmt, media_pvr_h pvr) _pvr->channel_type = (int)sqlite3_column_int(stmt, MEDIA_PVR_CHANNEL_TYPE); + _pvr->service_profile = (unsigned int)sqlite3_column_int(stmt, MEDIA_PVR_SERVICE_PROFILE); + if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_CHANNEL_NAME))) _pvr->channel_name = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_CHANNEL_NAME)); @@ -1739,10 +1959,8 @@ int _media_db_get_pvr(filter_h filter, media_pvr_cb callback, void *user_data) char *condition_query = NULL; char *option_query = NULL; sqlite3_stmt *stmt = NULL; - attribute_h attr = NULL; filter_s *_filter = (filter_s*)filter; - attr = _content_get_attirbute_handle(); memset(select_query, 0x00, sizeof(select_query)); if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) @@ -1750,10 +1968,10 @@ int _media_db_get_pvr(filter_h filter, media_pvr_cb callback, void *user_data) else SAFE_STRLCAT(select_query, SELECT_PVR_LIST, sizeof(select_query)); - ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query); + ret = __media_db_make_query(filter, select_query, sizeof(select_query), &condition_query, &option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); - ret = _content_query_prepare(&stmt, select_query, condition_query, option_query); + ret = _content_query_prepare(select_query, condition_query, option_query, &stmt); SAFE_FREE(condition_query); SAFE_FREE(option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); @@ -1781,38 +1999,7 @@ int _media_db_get_pvr(filter_h filter, media_pvr_cb callback, void *user_data) return ret; } -#endif - -int _media_db_get_storage_id_by_media_id(const char *media_id, char *storage_id) -{ - int ret = MEDIA_CONTENT_ERROR_NONE; - sqlite3_stmt *stmt = NULL; - char *select_query = NULL; - - select_query = sqlite3_mprintf(SELECT_MEDIA_STORAGE_ID_BY_ID, media_id); - - ret = _content_query_prepare(&stmt, select_query, NULL, NULL); - SQLITE3_SAFE_FREE(select_query); - media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); - - if (sqlite3_step(stmt) == SQLITE_ROW) { - if (STRING_VALID((const char *)sqlite3_column_text(stmt, 0))) { - if (!SAFE_STRLCPY(storage_id, (const char *)sqlite3_column_text(stmt, 0), MEDIA_CONTENT_UUID_SIZE)) { - media_content_error("Storage id copy fail"); - ret = MEDIA_CONTENT_ERROR_INVALID_OPERATION; - } - } - } else { - media_content_error("There's no media!!"); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } - - SQLITE3_FINALIZE(stmt); - - return ret; -} -#ifdef _USE_TV_PROFILE typedef enum { MEDIA_UHD_MEDIA_ID = 0, MEDIA_UHD_STORAGE_ID, @@ -1871,10 +2058,8 @@ int _media_db_get_uhd(filter_h filter, media_uhd_cb callback, void *user_data) char *condition_query = NULL; char *option_query = NULL; sqlite3_stmt *stmt = NULL; - attribute_h attr = NULL; filter_s *_filter = (filter_s*)filter; - attr = _content_get_attirbute_handle(); memset(select_query, 0x00, sizeof(select_query)); if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) @@ -1882,10 +2067,10 @@ int _media_db_get_uhd(filter_h filter, media_uhd_cb callback, void *user_data) else SAFE_STRLCAT(select_query, SELECT_UHD_LIST, sizeof(select_query)); - ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query); + ret = __media_db_make_query(filter, select_query, sizeof(select_query), &condition_query, &option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); - ret = _content_query_prepare(&stmt, select_query, condition_query, option_query); + ret = _content_query_prepare(select_query, condition_query, option_query, &stmt); SAFE_FREE(condition_query); SAFE_FREE(option_query); media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);