bc2069d9f0e3e9b2e88f88c72551667da9ca8578
[profile/ivi/org.tizen.browser.git] / src / database / browser-user-agent-db.cpp
1 /*\r
2   * Copyright 2012  Samsung Electronics Co., Ltd\r
3   *\r
4   * Licensed under the Flora License, Version 1.0 (the "License");\r
5   * you may not use this file except in compliance with the License.\r
6   * You may obtain a copy of the License at\r
7   *\r
8   *    http://www.tizenopensource.org/license\r
9   *\r
10   * Unless required by applicable law or agreed to in writing, software\r
11   * distributed under the License is distributed on an "AS IS" BASIS,\r
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13   * See the License for the specific language governing permissions and\r
14   * limitations under the License.\r
15   */\r
16 \r
17 using namespace std;\r
18 \r
19 #include "browser-user-agent-db.h"\r
20 \r
21 sqlite3* Browser_User_Agent_DB::m_db_descriptor = NULL;\r
22 \r
23 Browser_User_Agent_DB::Browser_User_Agent_DB(void)\r
24 {\r
25         BROWSER_LOGD("[%s]", __func__);\r
26 }\r
27 \r
28 Browser_User_Agent_DB::~Browser_User_Agent_DB(void)\r
29 {\r
30         BROWSER_LOGD("[%s]", __func__);\r
31 }\r
32 \r
33 Eina_Bool Browser_User_Agent_DB::_open_db(void)\r
34 {\r
35         BROWSER_LOGD("[%s]", __func__);\r
36         int error = db_util_open(BROWSER_USER_AGENT_DB_PATH, &m_db_descriptor, DB_UTIL_REGISTER_HOOK_METHOD);\r
37         if (error != SQLITE_OK) {\r
38                 db_util_close(m_db_descriptor);\r
39                 m_db_descriptor = NULL;\r
40                 return EINA_FALSE;\r
41         }\r
42 \r
43         return EINA_TRUE;\r
44 }\r
45 \r
46 Eina_Bool Browser_User_Agent_DB::_close_db(void)\r
47 {\r
48         BROWSER_LOGD("[%s]", __func__);\r
49         if (m_db_descriptor)\r
50         {\r
51                 int error = db_util_close(m_db_descriptor);\r
52                 if (error != SQLITE_OK) {\r
53                         BROWSER_LOGE("db_util_close error");\r
54                         m_db_descriptor = NULL;\r
55                         return EINA_FALSE;\r
56                 }\r
57                 m_db_descriptor = NULL;\r
58         }\r
59 \r
60         return EINA_TRUE;\r
61 }\r
62 \r
63 Eina_Bool Browser_User_Agent_DB::get_user_agent(const char *title, char *&user_agent)\r
64 {\r
65         BROWSER_LOGD("[%s]", __func__);\r
66         if (_open_db() == EINA_FALSE)\r
67                 return EINA_FALSE;\r
68 \r
69         sqlite3_stmt *sqlite3_stmt = NULL;\r
70         int error = sqlite3_prepare_v2(m_db_descriptor, "select value from user_agents where name=?",\r
71                                         -1, &sqlite3_stmt, NULL);\r
72         if (error != SQLITE_OK) {\r
73                 BROWSER_LOGD("SQL error=%d", error);\r
74                 if (sqlite3_finalize(sqlite3_stmt) != SQLITE_OK)\r
75                         BROWSER_LOGE("sqlite3_finalize is failed.\n");\r
76                 _close_db();\r
77                 return EINA_FALSE;\r
78         }\r
79 \r
80         if (sqlite3_bind_text(sqlite3_stmt, 1, title, -1, NULL) != SQLITE_OK)\r
81                 BROWSER_LOGE("sqlite3_bind_text is failed.\n");\r
82 \r
83         error = sqlite3_step(sqlite3_stmt);\r
84 \r
85         string value;\r
86         if (error == SQLITE_ROW)\r
87                 value = reinterpret_cast<const char*>(sqlite3_column_text(sqlite3_stmt, 0));\r
88 \r
89         if (sqlite3_finalize(sqlite3_stmt) != SQLITE_OK)\r
90                 BROWSER_LOGE("sqlite3_finalize is failed.\n");\r
91 \r
92         if (!value.empty())\r
93                 user_agent = strdup(value.c_str());\r
94         else\r
95                 user_agent = NULL;\r
96 \r
97         _close_db();\r
98 \r
99         return (error == SQLITE_DONE || error == SQLITE_ROW);\r
100 }\r
101 \r