From 1909cbc149c3efe76da963c07724373acf838cde Mon Sep 17 00:00:00 2001 From: Junghyun Yeon Date: Mon, 14 Nov 2016 11:42:03 +0900 Subject: [PATCH] Implement pkgmgr_parser_update_app_label_info_in_db for app label change Change-Id: I33e506cd698189812c59783cf9cd25acc5ffb8ec Signed-off-by: Junghyun Yeon --- parser/include/pkgmgr_parser_db.h | 27 ++++++++++++++++++++ parser/src/pkgmgr_parser_db.c | 54 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) diff --git a/parser/include/pkgmgr_parser_db.h b/parser/include/pkgmgr_parser_db.h index 93fcc46..e9735ae 100644 --- a/parser/include/pkgmgr_parser_db.h +++ b/parser/include/pkgmgr_parser_db.h @@ -303,6 +303,33 @@ int pkgmgr_parser_update_app_splash_screen_display_info_in_db(const char *appid, */ int pkgmgr_parser_update_app_splash_screen_display_info_in_usr_db(const char *appid, uid_t uid, int flag); +/** + * @fn int pkgmgr_parser_update_app_label_info_in_db(const char *appid, const char *label) + * @brief This API updates label info of application + * + * @par This API is only for internal usage + * @par Sync (or) Async : Synchronous API + * + * @param[in] appid application ID to change label + * @param[in] label label to change + * @return 0 if success, error code(<0) if fail + */ +int pkgmgr_parser_update_app_label_info_in_db(const char *appid, const char *label); + +/** + * @fn int pkgmgr_parser_update_app_label_info_in_usr_db(const char *appid, uid_t uid, const char *label) + * @brief This API updates label info of application for user specified by uid + * + * @par This API is only for internal usage + * @par Sync (or) Async : Synchronous API + * + * @param[in] appid application ID to change label + * @param[in] uid user ID + * @param[in] label label to change + * @return 0 if success, error code(<0) if fail + */ +int pkgmgr_parser_update_app_label_info_in_usr_db(const char *appid, uid_t uid, const char *label); + int pkgmgr_parser_create_and_initialize_db(uid_t uid); diff --git a/parser/src/pkgmgr_parser_db.c b/parser/src/pkgmgr_parser_db.c index 1dc82b8..4b01c17 100644 --- a/parser/src/pkgmgr_parser_db.c +++ b/parser/src/pkgmgr_parser_db.c @@ -3250,3 +3250,57 @@ err: return ret; } +API int pkgmgr_parser_update_app_label_info_in_usr_db(const char *appid, uid_t uid, const char *label) +{ + int ret; + char query[MAX_QUERY_LEN] = {'\0'}; + + if (appid == NULL || label == NULL) { + _LOGE("Invalid parameter"); + return -1; + } + + ret = pkgmgr_parser_check_and_create_db(uid); + if (ret == -1) { + _LOGD("Failed to open DB"); + return -1; + } + + /*Begin transaction*/ + ret = sqlite3_exec(pkgmgr_parser_db, "BEGIN EXCLUSIVE", NULL, NULL, NULL); + if (ret != SQLITE_OK) { + _LOGD("Failed to begin transaction\n"); + ret = -1; + goto err; + } + + sqlite3_snprintf(MAX_QUERY_LEN, query, + "UPDATE package_app_localized_info SET app_label=%Q WHERE " \ + "app_id=%Q AND app_label IS NOT NULL", + label, appid); + ret = __exec_query(query); + if (ret == -1) { + sqlite3_exec(pkgmgr_parser_db, "ROLLBACK", NULL, NULL, NULL); + goto err; + } + + /* Commit transaction */ + ret = sqlite3_exec(pkgmgr_parser_db, "COMMIT", NULL, NULL, NULL); + if (ret != SQLITE_OK) { + _LOGD("Failed to commit transaction, Rollback now"); + sqlite3_exec(pkgmgr_parser_db, "ROLLBACK", NULL, NULL, NULL); + ret = -1; + goto err; + } + _LOGD("Transaction Commit and End"); + +err: + pkgmgr_parser_close_db(); + return ret; +} + +API int pkgmgr_parser_update_app_label_info_in_db(const char *appid, const char *label) +{ + return pkgmgr_parser_update_app_label_info_in_usr_db(appid, _getuid(), label); +} + -- 2.7.4