4 * Copyright (c) 2012 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
22 #include "cal_internal.h"
23 #include "cal_typedef.h"
25 #include "cal_record.h"
28 #include "cal_db_util.h"
29 #include "cal_db_query.h"
30 #include "cal_db_plugin_attendee_helper.h"
32 #include "cal_utils.h"
34 static int _cal_db_attendee_insert_record(calendar_record_h record, int parent_id)
38 char query[CAL_DB_SQL_MAX_LEN];
40 cal_attendee_s *attendee = NULL;
42 attendee = (cal_attendee_s *)(record);
43 RETVM_IF(NULL == attendee, CALENDAR_ERROR_INVALID_PARAMETER,
44 "Invalid argument: cal_alarm_s is NULL");
46 snprintf(query, sizeof(query),
49 "attendee_name, attendee_email, attendee_number, "
50 "attendee_status, attendee_cutype, attendee_ct_index, "
51 "attendee_role, attendee_rsvp, attendee_group, "
52 "attendee_delegator_uri, attendee_delegatee_uri, "
53 "attendee_member, attendee_uid "
63 attendee->attendee_status,
64 attendee->attendee_cutype,
65 attendee->attendee_ct_index,
66 attendee->attendee_role,
67 attendee->attendee_rsvp);
69 ret = cal_db_util_query_prepare(query, &stmt);
70 if (CALENDAR_ERROR_NONE != ret) {
72 ERR("cal_db_util_query_prepare() Fail(%d)", ret);
73 SECURE("query[%s]", query);
79 if (attendee->attendee_name)
80 cal_db_util_stmt_bind_text(stmt, index, attendee->attendee_name);
83 if (attendee->attendee_email)
84 cal_db_util_stmt_bind_text(stmt, index, attendee->attendee_email);
87 if (attendee->attendee_number)
88 cal_db_util_stmt_bind_text(stmt, index, attendee->attendee_number);
91 if (attendee->attendee_group)
92 cal_db_util_stmt_bind_text(stmt, index, attendee->attendee_group);
95 if (attendee->attendee_delegator_uri)
96 cal_db_util_stmt_bind_text(stmt, index, attendee->attendee_delegator_uri);
99 if (attendee->attendee_delegatee_uri)
100 cal_db_util_stmt_bind_text(stmt, index, attendee->attendee_delegatee_uri);
103 if (attendee->attendee_member)
104 cal_db_util_stmt_bind_text(stmt, index, attendee->attendee_member);
107 if (attendee->attendee_uid)
108 cal_db_util_stmt_bind_text(stmt, index, attendee->attendee_uid);
111 ret = cal_db_util_stmt_step(stmt);
112 sqlite3_finalize(stmt);
113 if (CALENDAR_ERROR_NONE != ret) {
114 /* LCOV_EXCL_START */
115 ERR("cal_db_util_stmt_step() Fail(%d)", ret);
120 attendee->parent_id = parent_id;
121 return CALENDAR_ERROR_NONE;
124 int cal_db_attendee_insert_records(cal_list_s *list_s, int parent_id)
128 calendar_record_h record = NULL;
129 calendar_list_h list = (calendar_list_h)list_s;
131 RETV_IF(NULL == list, CALENDAR_ERROR_INVALID_PARAMETER);
133 calendar_list_get_count(list, &count);
135 return CALENDAR_ERROR_NONE;
137 calendar_list_first(list);
138 while (CALENDAR_ERROR_NONE == calendar_list_get_current_record_p(list, &record)) {
139 ret = _cal_db_attendee_insert_record(record, parent_id);
140 RETVM_IF(CALENDAR_ERROR_NONE != ret, ret, "cal_db_extended_insert_record() Fail(%d)", ret);
141 calendar_list_next(list);
143 return CALENDAR_ERROR_NONE;
147 int cal_db_attendee_get_records(int parent_id, cal_list_s *list)
150 char query[CAL_DB_SQL_MAX_LEN] = {0};
151 sqlite3_stmt *stmt = NULL;
153 RETVM_IF(NULL == list, CALENDAR_ERROR_INVALID_PARAMETER,
154 "Invalid parameter: list is NULL");
156 snprintf(query, sizeof(query),
162 "attendee_ct_index, "
166 "attendee_delegator_uri, "
169 "attendee_delegatee_uri, "
171 "FROM %s WHERE event_id = %d ",
172 CAL_TABLE_ATTENDEE, parent_id);
174 ret = cal_db_util_query_prepare(query, &stmt);
175 if (CALENDAR_ERROR_NONE != ret) {
176 /* LCOV_EXCL_START */
177 ERR("cal_db_util_query_prepare() Fail(%d)", ret);
178 SECURE("query[%s]", query);
184 const unsigned char *temp;
185 calendar_record_h record = NULL;
186 cal_attendee_s *attendee = NULL;
188 while (CAL_SQLITE_ROW == cal_db_util_stmt_step(stmt)) {
189 ret = calendar_record_create(_calendar_attendee._uri, &record);
190 if (CALENDAR_ERROR_NONE != ret) {
191 /* LCOV_EXCL_START */
192 ERR("calendar_record_create() Fail(%d)", ret);
193 sqlite3_finalize(stmt);
194 cal_list_clear(list);
200 attendee = (cal_attendee_s *)(record);
202 attendee->parent_id = parent_id;
203 attendee->id = sqlite3_column_int(stmt, index++);
205 temp = sqlite3_column_text(stmt, index++);
206 attendee->attendee_name = cal_strdup((const char*)temp);
208 temp = sqlite3_column_text(stmt, index++);
209 attendee->attendee_email = cal_strdup((const char*)temp);
211 temp = sqlite3_column_text(stmt, index++);
212 attendee->attendee_number = cal_strdup((const char*)temp);
214 attendee->attendee_status = sqlite3_column_int(stmt, index++);
215 attendee->attendee_ct_index = sqlite3_column_int(stmt, index++);
216 attendee->attendee_role = sqlite3_column_int(stmt, index++);
217 attendee->attendee_rsvp = sqlite3_column_int(stmt, index++);
219 temp = sqlite3_column_text(stmt, index++);
220 attendee->attendee_group = cal_strdup((const char*)temp);
222 temp = sqlite3_column_text(stmt, index++);
223 attendee->attendee_delegator_uri = cal_strdup((const char*)temp);
225 temp = sqlite3_column_text(stmt, index++);
226 attendee->attendee_uid = cal_strdup((const char*)temp);
228 attendee->attendee_cutype = sqlite3_column_int(stmt, index++);
230 temp = sqlite3_column_text(stmt, index++);
231 attendee->attendee_delegatee_uri = cal_strdup((const char*)temp);
233 temp = sqlite3_column_text(stmt, index++);
234 attendee->attendee_member = cal_strdup((const char*)temp);
236 calendar_list_add((calendar_list_h)list, record);
239 sqlite3_finalize(stmt);
240 return CALENDAR_ERROR_NONE;
243 int cal_db_attendee_delete_with_id(int parent_id)
246 char query[CAL_DB_SQL_MAX_LEN] = {0};
248 snprintf(query, sizeof(query), "DELETE FROM %s WHERE event_id=%d ",
249 CAL_TABLE_ATTENDEE, parent_id);
251 ret = cal_db_util_query_exec(query);
252 if (CALENDAR_ERROR_NONE != ret) {
253 /* LCOV_EXCL_START */
254 ERR("cal_db_util_query_exec() Fail(%d)", ret);
255 SECURE("[%s]", query);
260 return CALENDAR_ERROR_NONE;