char *str;
} token_t;
-
-#define MAX_LEFT_VALUE 512
-#define SPACE_LEN 1
-#define SPACE " "
#define UNKNOWN_TYPE 1000
#define STRING_TYPE 100
return ret;
}
-int _media_filter_attribute_generate(attribute_h attr, char *condition, media_content_collation_e collate_type, char **generated_condition)
-{
- unsigned int idx = 0;
- GList *token_list = NULL;
- int size = 0;
- int ret = MEDIA_CONTENT_ERROR_NONE;
- int total_str_size = 0;
- token_t *token;
-
- media_content_retvm_if(condition == NULL, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "invalid condition");
- media_content_retvm_if(generated_condition == NULL, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "invalid generated_condition");
- media_content_retvm_if(attr == NULL, MEDIA_CONTENT_ERROR_DB_FAILED, "DB field mapping table doesn't exist. Check db connection");
-
- if (__tokenize(&token_list, condition) < 0) {
- media_content_error("INVALID_PARAMETER(0x%08x):Invalid the condition", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
- return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
- }
-
- for (idx = 0; idx < g_list_length(token_list); idx++) {
- token = (token_t*)g_list_nth_data(token_list, idx);
-
- if (token->type == UNKNOWN_TYPE) {
- char *replace_str = __media_filter_replace_attr(attr, token->str);
- if (STRING_VALID(replace_str)) {
- SAFE_FREE(token->str);
- token->str = replace_str;
- }
- }
-
- total_str_size += strlen(token->str)+1;
- /* media_content_debug("[%d][type:%d]:%s", idx, token->type, token->str); */
- }
-
- /* make the statment */
- size = total_str_size + COLLATE_STR_SIZE + 1;
- *generated_condition = (char*)calloc(size, sizeof(char));
-
- for (idx = 0; idx < g_list_length(token_list); idx++) {
- token = (token_t*)g_list_nth_data(token_list, idx);
-
- if ((token != NULL) && STRING_VALID(token->str)) {
- SAFE_STRLCAT(*generated_condition, token->str, size);
- SAFE_STRLCAT(*generated_condition, SPACE, size);
-
- SAFE_FREE(token->str);
- SAFE_FREE(token);
- }
- }
-
- if (collate_type == MEDIA_CONTENT_COLLATE_NOCASE || collate_type == MEDIA_CONTENT_COLLATE_RTRIM || collate_type == MEDIA_CONTENT_COLLATE_LOCALIZED) {
- SAFE_STRLCAT(*generated_condition, "COLLATE ", size);
- SAFE_STRLCAT(*generated_condition, __get_collate_str(collate_type), size);
- SAFE_STRLCAT(*generated_condition, SPACE, size);
- }
-
- /* Always close in here (condition collate option issue)*/
- SAFE_STRLCAT(*generated_condition, QUERY_KEYWORD_BRACKET, size);
-
- /* media_content_debug("statement : %s(%d) (total:%d)", *generated_condition, strlen(*generated_condition), total_str_size); */
- media_content_sec_debug("Condition : %s", *generated_condition);
-
- /* if(*generated_condition != NULL)
- res = 1; */
-
- if (token_list != NULL)
- g_list_free(token_list);
-
- return ret;
-}
-
-int _media_filter_attribute_generate_with_full_query(attribute_h attr, filter_h filter, char **generated_condition)
+int _media_filter_attribute_generate(attribute_h attr, filter_h filter, char **generated_condition)
{
unsigned int idx = 0;
GList *token_list = NULL;
- int size = 0;
int ret = MEDIA_CONTENT_ERROR_NONE;
- int total_str_size = 0;
token_t *token;
- filter_s * _filter = NULL;
+ filter_s *_filter = NULL;
+ char tmp_condition[MAX_QUERY_SIZE] = {0, };
media_content_retvm_if(attr == NULL, MEDIA_CONTENT_ERROR_DB_FAILED, "DB field mapping table doesn't exist. Check db connection");
media_content_retvm_if(filter == NULL, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "invalid filter");
_filter = (filter_s*)filter;
media_content_retvm_if(_filter->condition == NULL, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "invalid condition");
+ media_content_retvm_if(_filter->condition_collate_type < MEDIA_CONTENT_COLLATE_DEFAULT ||
+ _filter->condition_collate_type > MEDIA_CONTENT_COLLATE_LOCALIZED, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "invalid condition collate");
if (__tokenize(&token_list, _filter->condition) < 0) {
media_content_error("INVALID_PARAMETER(0x%08x):Invalid the condition", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
token->str = replace_str;
}
}
-
- total_str_size += strlen(token->str)+1;
- /* media_content_debug("[%d][type:%d]:%s", idx, token->type, token->str); */
}
/* make the statment */
- /*COLLATE_STR_SIZE is to give a margin - Add : +2 */
- size = total_str_size + COLLATE_STR_SIZE + 1;
- *generated_condition = (char*)calloc(size, sizeof(char));
-
- SAFE_STRLCAT(*generated_condition, QUERY_KEYWORD_OPEN_BRACKET, size);
+ memset(tmp_condition, 0, sizeof(tmp_condition));
+ SAFE_STRLCAT(tmp_condition, QUERY_KEYWORD_OPEN_BRACKET, sizeof(tmp_condition));
for (idx = 0; idx < g_list_length(token_list); idx++) {
token = (token_t*)g_list_nth_data(token_list, idx);
if ((token != NULL) && STRING_VALID(token->str)) {
- SAFE_STRLCAT(*generated_condition, token->str, size);
- SAFE_STRLCAT(*generated_condition, SPACE, size);
+ SAFE_STRLCAT(tmp_condition, token->str, sizeof(tmp_condition));
+ SAFE_STRLCAT(tmp_condition, QUERY_KEYWORD_SPACE, sizeof(tmp_condition));
SAFE_FREE(token->str);
SAFE_FREE(token);
}
}
- SAFE_STRLCAT(*generated_condition, QUERY_KEYWORD_BRACKET, size);
+ /* Process for filter v1 */
+ if (_filter->is_full_condition == false && _filter->condition_collate_type != MEDIA_CONTENT_COLLATE_DEFAULT) {
+ SAFE_STRLCAT(tmp_condition, QUERY_KEYWORD_COLLATE, sizeof(tmp_condition));
+ SAFE_STRLCAT(tmp_condition, __get_collate_str(_filter->condition_collate_type), sizeof(tmp_condition));
+ SAFE_STRLCAT(tmp_condition, QUERY_KEYWORD_SPACE, sizeof(tmp_condition));
+ }
+
+ SAFE_STRLCAT(tmp_condition, QUERY_KEYWORD_BRACKET, sizeof(tmp_condition));
+
+ if (STRING_VALID(tmp_condition))
+ *generated_condition = g_strdup(tmp_condition);
+ else
+ *generated_condition = NULL;
media_content_sec_debug("Condition : %s", *generated_condition);
{
int ret = MEDIA_CONTENT_ERROR_NONE;
filter_s *_filter = NULL;
- char option_query[DEFAULT_QUERY_SIZE] = {0, };
- char condition[DEFAULT_QUERY_SIZE] = {0, };
- int size = 0;
+ char query[DEFAULT_QUERY_SIZE] = {0, };
+ char option[DEFAULT_QUERY_SIZE] = {0, };
media_content_retvm_if(attr == NULL, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "invalid attr");
media_content_retvm_if(filter == NULL, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "invalid filter");
_filter = (filter_s*)filter;
- memset(option_query, 0x00, sizeof(option_query));
+ memset(query, 0x00, sizeof(query));
/* Order by*/
if (STRING_VALID(_filter->order_keyword)) {
if ((_filter->order_type == MEDIA_CONTENT_ORDER_ASC) || (_filter->order_type == MEDIA_CONTENT_ORDER_DESC)) {
unsigned int idx = 0;
- int total_str_size = 0;
GList *token_list = NULL;
token_t *token;
char *attr_str;
media_content_error("There is no matched db field for %s", token->str);
}
}
-
- total_str_size += strlen(token->str) + 1;
- /* media_content_debug("[%d][type:%d]:%s", idx, token->type, token->str); */
}
/* make the statment */
- char *generated_condition = NULL;
- size = total_str_size + COLLATE_STR_SIZE + 1;
- generated_condition = (char*)calloc(size, sizeof(char));
+ SAFE_STRLCAT(query, QUERY_KEYWORD_ORDER_BY, sizeof(query));
for (idx = 0; idx < g_list_length(token_list); idx++) {
token = (token_t*)g_list_nth_data(token_list, idx);
if ((token != NULL) && STRING_VALID(token->str)) {
- /* media_content_debug("[%d] %s", idx, token->str); */
- SAFE_STRLCAT(generated_condition, token->str, size);
- SAFE_STRLCAT(generated_condition, SPACE, size);
+ SAFE_STRLCAT(query, token->str, sizeof(query));
+ SAFE_STRLCAT(query, QUERY_KEYWORD_SPACE, sizeof(query));
SAFE_FREE(token->str);
SAFE_FREE(token);
}
}
- snprintf(condition, sizeof(condition), "ORDER BY %s", generated_condition);
- SAFE_STRLCAT(option_query, condition, sizeof(option_query));
-
- if (token_list != NULL)
+ if (token_list != NULL) {
g_list_free(token_list);
-
- SAFE_FREE(generated_condition);
+ token_list = NULL;
+ }
} else {
- SAFE_STRLCAT(option_query, _filter->order_keyword, sizeof(option_query));
- media_content_error("option_query [%s]", option_query);
+ SAFE_STRLCAT(query, _filter->order_keyword, sizeof(query));
}
}
/* offset */
- SAFE_STRLCAT(option_query, SPACE, sizeof(option_query));
- snprintf(condition, sizeof(condition), "LIMIT %d, %d", _filter->offset, _filter->count);
- SAFE_STRLCAT(option_query, condition, sizeof(option_query));
+ SAFE_STRLCAT(query, QUERY_KEYWORD_SPACE, sizeof(query));
- if (STRING_VALID(option_query))
- *generated_option = g_strdup(option_query);
- else
+ memset(option, 0, sizeof(option));
+ snprintf(option, sizeof(option), "%s %d, %d", QUERY_KEYWORD_LIMIT, _filter->offset, _filter->count);
+
+ SAFE_STRLCAT(query, option, sizeof(query));
+
+ if (STRING_VALID(query)) {
+ *generated_option = g_strdup(query);
+ media_content_sec_debug("Option : %s", *generated_option);
+ } else {
*generated_option = NULL;
+ }
return ret;
}
_filter = (filter_s*)filter;
+ memset(query, 0, sizeof(query));
+
/* Order by*/
if (STRING_VALID(_filter->order_keyword)) {
if (__tokenize_attribute(&token_list, _filter->order_keyword) < 0) {
}
}
- memset(query, 0, sizeof(query));
-
/* make the statment */
SAFE_STRLCAT(query, QUERY_KEYWORD_ORDER_BY, sizeof(query));
- SAFE_STRLCAT(query, QUERY_KEYWORD_SPACE, sizeof(query));
for (idx = 0; idx < g_list_length(token_list); idx++) {
token = (token_t*)g_list_nth_data(token_list, idx);
if ((token != NULL) && STRING_VALID(token->str)) {
SAFE_STRLCAT(query, token->str, sizeof(query));
- SAFE_STRLCAT(query, SPACE, sizeof(query));
+ SAFE_STRLCAT(query, QUERY_KEYWORD_SPACE, sizeof(query));
SAFE_FREE(token->str);
SAFE_FREE(token);
static bool __media_info_delete_batch_cb(media_info_h media, void *user_data)
{
- int err = MEDIA_CONTENT_ERROR_NONE;
char *thumb_path = NULL;
- media_content_type_e media_type = 0;
GArray *thumb_list = (GArray *)user_data;
- if (media == NULL) {
- media_content_debug("NO Item");
- return true;
- }
-
- err = media_info_get_media_type(media, &media_type);
- if (err == MEDIA_CONTENT_ERROR_NONE) {
- media_content_debug("media_type : [%d]", media_type);
-
- media_info_get_thumbnail_path(media, &thumb_path);
- if (STRING_VALID(thumb_path))
- g_array_append_val(thumb_list, thumb_path);
-
- } else {
- media_content_error("media_info_get_media_type failed");
- }
+ media_info_get_thumbnail_path(media, &thumb_path);
+ if (STRING_VALID(thumb_path))
+ g_array_append_val(thumb_list, thumb_path);
return true;
}
media_content_retvm_if(filter == NULL, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Invalid filter");
+ _filter = (filter_s*)filter;
+
+ media_content_retvm_if(_filter->condition == NULL, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Invalid condition");
+
thumb_list = g_array_new(FALSE, FALSE, sizeof(char*));
/* Delete thumbnail of each item */
ret = _media_db_get_group_item(NULL, filter, __media_info_delete_batch_cb, thumb_list, MEDIA_GROUP_NONE);
+ media_content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "Failed to get thumbnail path list");
- _filter = (filter_s*)filter;
attr = _content_get_attirbute_handle();
- if (_filter->condition) {
- ret = _media_filter_attribute_generate(attr, _filter->condition, _filter->condition_collate_type, &condition_query);
- if (ret != MEDIA_CONTENT_ERROR_NONE) {
- __media_info_release_thumb_list(thumb_list);
- return ret;
- }
+ ret = _media_filter_attribute_generate(attr, filter, &condition_query);
+ if (ret != MEDIA_CONTENT_ERROR_NONE) {
+ __media_info_release_thumb_list(thumb_list);
+ return ret;
}
if (STRING_VALID(condition_query)) {
if (_filter->storage_id == NULL) {
/*FIX ME*/
- query_string = sqlite3_mprintf(DELETE_MEDIA_FROM_MEDIA_BATCH, "media", condition_query);
+ query_string = sqlite3_mprintf(DELETE_MEDIA_FROM_MEDIA_BATCH, DB_TABLE_MEDIA, condition_query);
} else {
query_string = sqlite3_mprintf(DELETE_MEDIA_FROM_MEDIA_BATCH, _filter->storage_id, condition_query);
}