Add NOTICE, AUTHOR file and modify boilerplate
[apps/native/ug-nfc-efl.git] / ug-nfc-setting-efl / src / ug-nfc-setting-db.c
1 /*
2   * Copyright (c) 2012, 2013 Samsung Electronics Co., Ltd.
3   *
4   * Licensed under the Flora License, Version 1.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
7
8   *     http://www.tizenopensource.org/license
9   *
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.
15   */
16
17
18 #include "ug-nfc-setting-main.h"
19 #include "ug-nfc-setting-db.h"
20
21
22 #define DB_FILE_PATH                    "/opt/usr/dbspace/.net-nfcpush.db"
23 #define DB_TABLE_NAME                   "NfcPushMsgTable"
24
25 /* sqlite> .schema              */
26 /* CREATE TABLE NfcPushMsgTable ( AppId TEXT PRIMARY KEY, PkgName TEXT, IconPath TEXT, MsgDesc TEXT ); */
27
28 #define DB_QUERY_LEN                    512
29
30 static sqlite3 *g_predefined_item_db;
31 static sqlite3_stmt *g_predefined_item_pstmt;
32
33
34 static void _db_finalize_statement(void)
35 {
36         LOGD("BEGIN >>>>");
37
38         int db_ret = SQLITE_OK;
39
40         if (g_predefined_item_pstmt != NULL)
41         {
42                 db_ret = sqlite3_finalize(g_predefined_item_pstmt);
43                 g_predefined_item_pstmt = NULL;
44
45                 if(db_ret != SQLITE_OK)
46                 {
47                         LOGD("Failed to sqlite3_finalize error[%d]", db_ret);
48                 }
49         }
50
51         LOGD("END <<<<");
52 }
53
54
55 int _ug_nfc_setting_db_open(void)
56 {
57         LOGD("BEGIN >>>>");
58
59         int db_ret = SQLITE_OK;
60
61         db_ret = sqlite3_open(DB_FILE_PATH, &g_predefined_item_db);
62         if(db_ret != SQLITE_OK)
63         {
64                 LOGD("Failed to open database. error[%d]", db_ret);
65         }
66
67         LOGD("END <<<<");
68
69         return db_ret;
70 }
71
72 int _ug_nfc_setting_db_close(void)
73 {
74         LOGD("BEGIN >>>>");
75
76         int db_ret = SQLITE_OK;
77
78         if (g_predefined_item_db != NULL)
79         {
80                 db_ret = sqlite3_close(g_predefined_item_db);
81                 if(db_ret != SQLITE_OK)
82                 {
83                         LOGD("Failed to close database. error[%d]", db_ret);
84                         return db_ret;
85                 }
86                 g_predefined_item_db = NULL;
87         }
88
89         LOGD("END <<<<");
90
91         return db_ret;
92 }
93
94 int _ug_nfc_setting_db_open_table(int *table_handle)
95 {
96         LOGD("BEGIN >>>>");
97
98         int db_ret = SQLITE_OK;
99         int count = 0;
100
101         /* get num_of_index */
102         _ug_nfc_setting_db_get_count(&count);
103
104         if (count > 0)
105         {
106                 char query[DB_QUERY_LEN] = { 0, };
107                 sqlite3_stmt *stmt = NULL;
108
109                 snprintf(query, DB_QUERY_LEN, "select * from %s", DB_TABLE_NAME);
110                 LOGD("query [%s]", query);
111
112                 db_ret = sqlite3_prepare_v2(g_predefined_item_db, query, strlen(query), &stmt, NULL);
113                 if (db_ret != SQLITE_OK)
114                 {
115                         LOGD("Failed to sqlite3_prepare_v2 error[%d]", db_ret);
116                         if (g_predefined_item_pstmt != NULL)
117                         {
118                                 db_ret = sqlite3_finalize(stmt);
119                                 stmt = NULL;
120                                 if(db_ret != SQLITE_OK)
121                                 {
122                                         LOGD("Failed to sqlite3_finalize error[%d]", db_ret);
123                                 }
124                         }
125                         return db_ret;
126                 }
127
128                 *table_handle = (int)stmt;
129         }
130         else
131         {
132                 LOGD("no item");
133                 db_ret = SQLITE_ERROR;
134         }
135
136         LOGD("END <<<<");
137
138         return db_ret;
139 }
140
141 int _ug_nfc_setting_db_get_count(int *count)
142 {
143         LOGD("BEGIN >>>>");
144
145         int db_ret = SQLITE_OK;
146         char query[DB_QUERY_LEN] = { 0, };
147
148         snprintf(query, DB_QUERY_LEN,
149                         "select count(AppId) from %s ",
150                         DB_TABLE_NAME);
151         LOGD("query [%s]", query);
152
153         db_ret = sqlite3_prepare_v2(g_predefined_item_db, query, strlen(query), &g_predefined_item_pstmt, NULL);
154         if (db_ret != SQLITE_OK)
155         {
156                 LOGD("Failed to sqlite3_prepare_v2 error[%d]", db_ret);
157                 _db_finalize_statement();
158                 return db_ret;
159         }
160
161         db_ret = sqlite3_step(g_predefined_item_pstmt);
162         if (db_ret != SQLITE_ROW)
163         {
164                 LOGD("Failed to sqlite3_step error[%d]", db_ret);
165                 _db_finalize_statement();
166                 return db_ret;
167         }
168
169         *count = sqlite3_column_int(g_predefined_item_pstmt, 0);
170
171         _db_finalize_statement();
172
173         LOGD("END <<<<");
174
175         return db_ret;
176 }
177
178 int _ug_nfc_setting_db_get_next_record(int table_handle,
179                                         char **app_id, char **pkgName,
180                                         char **iconPath, char **msgDes)
181 {
182         LOGD("BEGIN >>>>");
183
184         int db_ret = SQLITE_OK;
185         sqlite3_stmt *stmt = NULL;
186
187         stmt = (sqlite3_stmt *)table_handle;
188         if (stmt == NULL)
189         {
190                 return -1;
191         }
192
193         db_ret = sqlite3_step(stmt);
194         if (db_ret != SQLITE_DONE)
195         {
196                 LOGD("success to get next record");
197
198                 if ((char *)sqlite3_column_text(stmt, 0) != NULL)
199                         *app_id = strdup((char *)sqlite3_column_text(stmt, 0));
200                 if ((char *)sqlite3_column_text(stmt, 1) != NULL)
201                         *pkgName = strdup((char *)sqlite3_column_text(stmt, 1));
202                 if ((char *)sqlite3_column_text(stmt, 2) != NULL)
203                         *iconPath = strdup((char *)sqlite3_column_text(stmt, 2));
204                 if ((char *)sqlite3_column_text(stmt, 3) != NULL)
205                         *msgDes = strdup((char *)sqlite3_column_text(stmt, 3));
206         }
207
208         LOGD("END <<<<");
209
210         return SQLITE_OK;
211 }
212
213 int _ug_nfc_setting_db_get_pkgName(char *app_id, char **pkgName)
214 {
215         LOGD("BEGIN >>>>");
216
217         int db_ret = SQLITE_OK;
218         char query[DB_QUERY_LEN] = { 0, };
219
220         snprintf(query, DB_QUERY_LEN,
221                         "select PkgName from %s where AppId =\"%s\"", DB_TABLE_NAME, app_id);
222         LOGD("query [%s]", query);
223
224         db_ret = sqlite3_prepare_v2(g_predefined_item_db, query, strlen(query), &g_predefined_item_pstmt, NULL);
225         if (db_ret != SQLITE_OK)
226         {
227                 LOGD("Failed to sqlite3_prepare_v2 error[%d]", db_ret);
228                 _db_finalize_statement();
229                 return db_ret;
230         }
231
232         db_ret = sqlite3_step(g_predefined_item_pstmt);
233         if (db_ret != SQLITE_ROW)
234         {
235                 LOGD("Failed to sqlite3_step error[%d]", db_ret);
236                 _db_finalize_statement();
237                 return db_ret;
238         }
239
240         *pkgName = strdup((char *)sqlite3_column_text(g_predefined_item_pstmt, 0));
241
242         _db_finalize_statement();
243
244         LOGD("END <<<<");
245
246         return db_ret;
247 }
248
249 int _ug_nfc_setting_db_close_table(int table_handle)
250 {
251         LOGD("BEGIN >>>>");
252
253         int db_ret = SQLITE_OK;
254         sqlite3_stmt *stmt = NULL;
255
256         stmt = (sqlite3_stmt *)table_handle;
257         if (stmt == NULL)
258                 return -1;
259
260         db_ret = sqlite3_finalize(stmt);
261         if(db_ret != SQLITE_OK)
262         {
263                 LOGD("Failed to sqlite3_finalize error[%d]", db_ret);
264         }
265
266         LOGD("END <<<<");
267
268         return db_ret;
269 }
270
271
272