2 * Copyright (c) 2000 - 2016 Samsung Electronics Co., Ltd. All rights reserved.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 * @author Hyunho Kang (hhstark.kang@samsung.com)
27 #include <sys/types.h>
34 #include "rua_private.h"
36 API int rua_stat_update_for_uid(char *caller, char *tag, uid_t uid)
41 r = _rua_util_check_uid(uid);
45 if (caller == NULL || tag == NULL) {
46 LOGE("invalid param");
52 LOGE("bundle_create fail out of memory.");
55 bundle_add_str(b, AUL_SVC_K_RUA_STAT_CALLER, caller);
56 bundle_add_str(b, AUL_SVC_K_RUA_STAT_TAG, tag);
57 r = aul_update_rua_stat_for_uid(b, uid);
58 LOGI("rua_add_history_for_uid result : %d ", r);
63 static int __get_stat_tags_for_uid(sqlite3 *db, const char *caller,
64 int (*rua_stat_tag_iter_fn)(
65 const char *rua_stat_tag, void *data),
66 void *data, uid_t uid)
68 static const char query[] =
69 "SELECT rua_stat_tag FROM rua_panel_stat "
70 "WHERE caller_panel=? ORDER BY score DESC";
73 const unsigned char *ct;
75 r = sqlite3_prepare(db, query, strlen(query), &stmt, NULL);
77 LOGE("prepare failed: %s", sqlite3_errmsg(db));
81 __BIND_TEXT(db, stmt, 1, caller);
83 while (sqlite3_step(stmt) == SQLITE_ROW) {
84 ct = sqlite3_column_text(stmt, 0);
85 if (ct == NULL || ct[0] == '\0')
86 LOGW("sqlite3_column_text null");
88 rua_stat_tag_iter_fn((const char *)ct, data);
91 sqlite3_finalize(stmt);
96 API int rua_stat_get_stat_tags_for_uid(char *caller,
97 int (*rua_stat_tag_iter_fn)(const char *rua_stat_tag, void *data),
98 void *data, uid_t uid)
103 r = _rua_util_check_uid(uid);
107 r = _rua_util_open_db(&db, SQLITE_OPEN_READONLY, uid, RUA_STAT_DB_NAME);
109 LOGE("open rua stat db failed");
113 r = __get_stat_tags_for_uid(db, caller, rua_stat_tag_iter_fn, data,
116 sqlite3_close_v2(db);
121 API int rua_stat_get_stat_tags(char *caller,
122 int (*rua_stat_tag_iter_fn)(const char *rua_stat_tag, void *data),
125 return rua_stat_get_stat_tags_for_uid(caller, rua_stat_tag_iter_fn, data, getuid());