From: jiyong.min Date: Tue, 3 Mar 2020 04:00:31 +0000 (+0900) Subject: Seperate parsing and updating database to reduce CC(cyclomatic complexity) X-Git-Tag: submit/tizen/20200310.225736~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d6fcd0543fa35eb8044bdd0de73f9ccb5fac3bff;p=platform%2Fcore%2Fapi%2Fmedia-controller.git Seperate parsing and updating database to reduce CC(cyclomatic complexity) Change-Id: I5087a4bd1970e9f013b2609dd27c1fd544f4ac93 --- diff --git a/svc/media_controller_db_util.c b/svc/media_controller_db_util.c index ded1966..eed5d54 100644 --- a/svc/media_controller_db_util.c +++ b/svc/media_controller_db_util.c @@ -634,17 +634,17 @@ static void __playlist_cb(const char *key, const int type, const bundle_keyval_ *query_list = g_list_append(*query_list, sql_str); } -static int __parse_and_update_db(uid_t uid, gchar **params) +static int __parse_db_request(gchar **params, char **sql_str) { int ret = MEDIA_CONTROLLER_ERROR_NONE; - char *sql_str = NULL; + char *_sql_str = NULL; int i_value = 0; int i_value_1 = 0; int i_value_2 = 0; unsigned long long llu_value = 0, llu_value2 = 0; - sqlite3* _db_handle = NULL; mc_retvm_if(!params, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid params"); + mc_retvm_if(!sql_str, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid sql_str"); mc_retvm_if((!params[0] || !params[1]), MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query"); @@ -658,18 +658,18 @@ static int __parse_and_update_db(uid_t uid, gchar **params) mc_safe_strtoi(params[5], &i_value_2); if (MC_STRING_VALID(params[6]) && MC_STRING_VALID(params[7])) { - sql_str = sqlite3_mprintf("UPDATE %q SET playback_state=%d, playback_position=%llu, playback_content_type=%d, age_rating=%d, playlist_name=%Q, playlist_index=%Q WHERE name=%Q", + _sql_str = sqlite3_mprintf("UPDATE %q SET playback_state=%d, playback_position=%llu, playback_content_type=%d, age_rating=%d, playlist_name=%Q, playlist_index=%Q WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, i_value, llu_value, i_value_1, i_value_2, params[6], params[7], params[1]); } else if (MC_STRING_VALID(params[6])) { - sql_str = sqlite3_mprintf("UPDATE %q SET playback_state=%d, playback_position=%llu, playback_content_type=%d, age_rating=%d, playlist_index=%Q WHERE name=%Q", + _sql_str = sqlite3_mprintf("UPDATE %q SET playback_state=%d, playback_position=%llu, playback_content_type=%d, age_rating=%d, playlist_index=%Q WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, i_value, llu_value, i_value_1, i_value_2, params[6], params[1]); } else { - sql_str = sqlite3_mprintf("UPDATE %q SET playback_state=%d, playback_position=%llu, playback_content_type=%d, age_rating=%d, playlist_name=NULL, playlist_index=NULL WHERE name=%Q", + _sql_str = sqlite3_mprintf("UPDATE %q SET playback_state=%d, playback_position=%llu, playback_content_type=%d, age_rating=%d, playlist_name=NULL, playlist_index=NULL WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, i_value, llu_value, i_value_1, i_value_2, params[1]); } } else if (strncmp(MC_DB_CMD_UPDATE_META, params[0], strlen(MC_DB_CMD_UPDATE_META)) == 0) { - sql_str = sqlite3_mprintf("INSERT OR REPLACE INTO %q VALUES (%Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q)", + _sql_str = sqlite3_mprintf("INSERT OR REPLACE INTO %q VALUES (%Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q)", MC_DB_TABLE_LATEST_META, params[1], __replace_null(params[2]), __replace_null(params[3]), __replace_null(params[4]), __replace_null(params[5]), __replace_null(params[6]), __replace_null(params[7]), __replace_null(params[8]), __replace_null(params[9]), @@ -680,22 +680,22 @@ static int __parse_and_update_db(uid_t uid, gchar **params) mc_retvm_if(!params[2], MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query"); mc_safe_strtoi(params[2], &i_value); - sql_str = sqlite3_mprintf("UPDATE %q SET shuffle_mode=%d WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, i_value, params[1]); + _sql_str = sqlite3_mprintf("UPDATE %q SET shuffle_mode=%d WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, i_value, params[1]); } else if (strncmp(MC_DB_CMD_UPDATE_REPEAT, params[0], strlen(MC_DB_CMD_UPDATE_REPEAT)) == 0) { mc_retvm_if(!params[2], MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query"); mc_safe_strtoi(params[2], &i_value); - sql_str = sqlite3_mprintf("UPDATE %q SET repeat_mode=%d WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, i_value, params[1]); + _sql_str = sqlite3_mprintf("UPDATE %q SET repeat_mode=%d WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, i_value, params[1]); } else if (strncmp(MC_DB_CMD_UPDATE_LATEST, params[0], strlen(MC_DB_CMD_UPDATE_LATEST)) == 0) { - sql_str = sqlite3_mprintf("DELETE FROM %q; INSERT INTO %q VALUES ('%q');", MC_DB_TABLE_LATEST_SERVER, MC_DB_TABLE_LATEST_SERVER, params[1]); + _sql_str = sqlite3_mprintf("DELETE FROM %q; INSERT INTO %q VALUES ('%q');", MC_DB_TABLE_LATEST_SERVER, MC_DB_TABLE_LATEST_SERVER, params[1]); } else if (strncmp(MC_DB_CMD_ADD_PLAYLIST, params[0], strlen(MC_DB_CMD_ADD_PLAYLIST)) == 0) { mc_retvm_if(!params[2], MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query"); - sql_str = sqlite3_mprintf("INSERT INTO %q(server_name, playlist_name) VALUES (%Q, %Q)", MC_DB_TABLE_PLAYLIST, params[1], params[2]); + _sql_str = sqlite3_mprintf("INSERT INTO %q(server_name, playlist_name) VALUES (%Q, %Q)", MC_DB_TABLE_PLAYLIST, params[1], params[2]); } else if (strncmp(MC_DB_CMD_UPDATE_PLAYLIST, params[0], strlen(MC_DB_CMD_UPDATE_PLAYLIST)) == 0) { bundle *bundle = NULL; @@ -732,13 +732,13 @@ static int __parse_and_update_db(uid_t uid, gchar **params) total_query_len += strlen(query); } - sql_str = (char *)calloc(1, total_query_len + 1); + _sql_str = (char *)calloc(1, total_query_len + 1); for (i = 2; i < list_len; i++) { char *query = NULL; query = g_list_nth_data(query_list, i); if (query != NULL) { - g_strlcat(sql_str, query, total_query_len + 1); + g_strlcat(_sql_str, query, total_query_len + 1); SQLITE3_SAFE_FREE(query); } } @@ -746,9 +746,9 @@ static int __parse_and_update_db(uid_t uid, gchar **params) query_list = NULL; } else if (strncmp(MC_DB_CMD_UPDATE_ICON, params[0], strlen(MC_DB_CMD_UPDATE_ICON)) == 0) { if (params[2]) - sql_str = sqlite3_mprintf("UPDATE %q SET icon_uri=%Q WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, params[2], params[1]); + _sql_str = sqlite3_mprintf("UPDATE %q SET icon_uri=%Q WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, params[2], params[1]); else - sql_str = sqlite3_mprintf("UPDATE %q SET icon_uri=NULL WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, params[1]); + _sql_str = sqlite3_mprintf("UPDATE %q SET icon_uri=NULL WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, params[1]); } else if (strncmp(MC_DB_CMD_UPDATE_ABILITY, params[0], strlen(MC_DB_CMD_UPDATE_ABILITY)) == 0) { mc_retvm_if((!params[2] || !params[3]), @@ -757,73 +757,81 @@ static int __parse_and_update_db(uid_t uid, gchar **params) mc_safe_strtoull(params[2], &llu_value); mc_safe_strtoull(params[3], &llu_value2); - sql_str = sqlite3_mprintf("UPDATE %q SET ability_decided=%llu, ability_supported=%llu WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, llu_value, llu_value2, params[1]); + _sql_str = sqlite3_mprintf("UPDATE %q SET ability_decided=%llu, ability_supported=%llu WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, llu_value, llu_value2, params[1]); } else if (strncmp(MC_DB_CMD_REMOVE_PLAYLIST, params[0], strlen(MC_DB_CMD_REMOVE_PLAYLIST)) == 0) { mc_retvm_if(!params[2], MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query"); - sql_str = sqlite3_mprintf("DELETE FROM %q WHERE server_name=%Q and playlist_name=%Q", MC_DB_TABLE_PLAYLIST, params[1], params[2]); + _sql_str = sqlite3_mprintf("DELETE FROM %q WHERE server_name=%Q and playlist_name=%Q", MC_DB_TABLE_PLAYLIST, params[1], params[2]); } else if (strncmp(MC_DB_CMD_UPDATE_SUBTITLES, params[0], strlen(MC_DB_CMD_UPDATE_SUBTITLES)) == 0) { mc_retvm_if(!params[2], MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query"); mc_safe_strtoi(params[2], &i_value); - sql_str = sqlite3_mprintf("UPDATE %q SET subtitles_mode=%d WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, i_value, params[1]); + _sql_str = sqlite3_mprintf("UPDATE %q SET subtitles_mode=%d WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, i_value, params[1]); } else if (strncmp(MC_DB_CMD_UPDATE_DISPLAY_MODE, params[0], strlen(MC_DB_CMD_UPDATE_DISPLAY_MODE)) == 0) { mc_retvm_if(!params[2], MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query"); mc_safe_strtoi(params[2], &i_value); - sql_str = sqlite3_mprintf("UPDATE %q SET display_mode=%d WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, i_value, params[1]); + _sql_str = sqlite3_mprintf("UPDATE %q SET display_mode=%d WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, i_value, params[1]); } else if (strncmp(MC_DB_CMD_UPDATE_DISPLAY_ROTATION, params[0], strlen(MC_DB_CMD_UPDATE_DISPLAY_ROTATION)) == 0) { mc_retvm_if(!params[2], MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query"); mc_safe_strtoi(params[2], &i_value); - sql_str = sqlite3_mprintf("UPDATE %q SET display_rotation=%d WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, i_value, params[1]); + _sql_str = sqlite3_mprintf("UPDATE %q SET display_rotation=%d WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, i_value, params[1]); } else if (strncmp(MC_DB_CMD_UPDATE_360, params[0], strlen(MC_DB_CMD_UPDATE_360)) == 0) { mc_retvm_if(!params[2], MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query"); mc_safe_strtoi(params[2], &i_value); - sql_str = sqlite3_mprintf("UPDATE %q SET spherical_mode=%d WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, i_value, params[1]); + _sql_str = sqlite3_mprintf("UPDATE %q SET spherical_mode=%d WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, i_value, params[1]); } else { mc_error("invalid request [%s]", params[0]); return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION; } - if (sql_str) { - ret = mc_db_connect(&_db_handle, uid, TRUE); - if (ret != MEDIA_CONTROLLER_ERROR_NONE) - mc_error("mc_db_connect error : %d", ret); + *sql_str = _sql_str; - ret = mc_db_util_update_db(_db_handle, sql_str); - if (ret != MEDIA_CONTROLLER_ERROR_NONE) - mc_error("media_db_update_db error : %d", ret); + return ret; +} - /* Update vconf */ - if (strncmp(MC_DB_CMD_UPDATE_LATEST, params[0], strlen(MC_DB_CMD_UPDATE_LATEST)) == 0) { - ret = __mc_update_latest_server_info_to_vconf(params[1], MC_SERVER_STATE_ACTIVATE, MC_PLAYBACK_STATE_PLAYING); +static int __update_db_request(uid_t uid, gchar **params, const char *sql_str) +{ + int ret = MEDIA_CONTROLLER_ERROR_NONE; + sqlite3* db_handle = NULL; + int i_value = 0; - } else if (strncmp(MC_DB_CMD_UPDATE_PLAYBACK, params[0], strlen(MC_DB_CMD_UPDATE_PLAYBACK)) == 0) { - if (__mc_db_is_latest(_db_handle, params[1])) { - mc_safe_strtoi(params[2], &i_value); - ret = __mc_update_latest_server_state_to_vconf(MC_SERVER_STATE_ACTIVATE, i_value); - } - } else if (strncmp(MC_DB_CMD_UPDATE_PLAYLIST, params[0], strlen(MC_DB_CMD_UPDATE_PLAYLIST)) == 0) { - MC_SAFE_FREE(sql_str); - } + mc_retvm_if(!params, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid params"); + mc_retvm_if(!sql_str, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid sql_str"); + mc_retvm_if((!params[0] || !params[1]), + MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query"); - mc_db_disconnect(_db_handle); + ret = mc_db_connect(&db_handle, uid, TRUE); + if (ret != MEDIA_CONTROLLER_ERROR_NONE) + mc_error("mc_db_connect error : %d", ret); - SQLITE3_SAFE_FREE(sql_str); + ret = mc_db_util_update_db(db_handle, sql_str); + if (ret != MEDIA_CONTROLLER_ERROR_NONE) + mc_error("media_db_update_db error : %d", ret); - } else { - mc_error("sql_str is NULL"); - ret = MEDIA_CONTROLLER_ERROR_OUT_OF_MEMORY; + /* Update vconf */ + if (strncmp(MC_DB_CMD_UPDATE_LATEST, params[0], strlen(MC_DB_CMD_UPDATE_LATEST)) == 0) { + ret = __mc_update_latest_server_info_to_vconf(params[1], MC_SERVER_STATE_ACTIVATE, MC_PLAYBACK_STATE_PLAYING); + + } else if (strncmp(MC_DB_CMD_UPDATE_PLAYBACK, params[0], strlen(MC_DB_CMD_UPDATE_PLAYBACK)) == 0) { + mc_retvm_if(!params[2], MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query"); + + if (__mc_db_is_latest(db_handle, params[1])) { + mc_safe_strtoi(params[2], &i_value); + ret = __mc_update_latest_server_state_to_vconf(MC_SERVER_STATE_ACTIVATE, i_value); + } } + mc_db_disconnect(db_handle); + return ret; } @@ -831,6 +839,7 @@ int mc_db_request(uid_t uid, const char *data, int data_size) { int ret = MEDIA_CONTROLLER_ERROR_NONE; gchar **params = NULL; + char *sql_str = NULL; mc_retvm_if(!data, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid data"); mc_retvm_if(data_size <= 0 , MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid data_size"); @@ -838,8 +847,15 @@ int mc_db_request(uid_t uid, const char *data, int data_size) params = g_strsplit(data, MC_STRING_DELIMITER, 0); mc_retvm_if(!params, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "fail to parsing query"); - ret = __parse_and_update_db(uid, params); + ret = __parse_db_request(params, &sql_str); + if (ret == MEDIA_CONTROLLER_ERROR_NONE) + ret = __update_db_request(uid, params, sql_str); + if (strncmp(MC_DB_CMD_UPDATE_PLAYLIST, params[0], strlen(MC_DB_CMD_UPDATE_PLAYLIST)) == 0) { + MC_SAFE_FREE(sql_str); + } else { + SQLITE3_SAFE_FREE(sql_str); + } g_strfreev(params); return ret;