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.
24 #include "cal_internal.h"
25 #include "cal_typedef.h"
27 #include "cal_record.h"
28 #include "cal_utils.h"
30 static int _cal_record_attendee_create(calendar_record_h* out_record);
31 static int _cal_record_attendee_destroy(calendar_record_h record, bool delete_child);
32 static int _cal_record_attendee_clone(calendar_record_h record, calendar_record_h* out_record);
33 static int _cal_record_attendee_get_str(calendar_record_h record, unsigned int property_id, char** out_str);
34 static int _cal_record_attendee_get_str_p(calendar_record_h record, unsigned int property_id, char** out_str);
35 static int _cal_record_attendee_get_int(calendar_record_h record, unsigned int property_id, int* out_value);
36 static int _cal_record_attendee_set_str(calendar_record_h record, unsigned int property_id, const char* value);
37 static int _cal_record_attendee_set_int(calendar_record_h record, unsigned int property_id, int value);
39 cal_record_plugin_cb_s cal_record_attendee_plugin_cb = {
40 .create = _cal_record_attendee_create,
41 .destroy = _cal_record_attendee_destroy,
42 .clone = _cal_record_attendee_clone,
43 .get_str = _cal_record_attendee_get_str,
44 .get_str_p = _cal_record_attendee_get_str_p,
45 .get_int = _cal_record_attendee_get_int,
49 .set_str = _cal_record_attendee_set_str,
50 .set_int = _cal_record_attendee_set_int,
54 .add_child_record = NULL,
55 .remove_child_record = NULL,
56 .get_child_record_count = NULL,
57 .get_child_record_at_p = NULL,
58 .clone_child_record_list = NULL
61 static void _cal_record_attendee_struct_init(cal_attendee_s *record)
63 memset(record, 0, sizeof(cal_attendee_s));
66 static int _cal_record_attendee_create(calendar_record_h* out_record)
68 cal_attendee_s *temp = NULL;
69 int ret = CALENDAR_ERROR_NONE;
71 temp = calloc(1, sizeof(cal_attendee_s));
72 RETVM_IF(NULL == temp, CALENDAR_ERROR_OUT_OF_MEMORY, "calloc() Fail");
74 _cal_record_attendee_struct_init(temp);
76 *out_record = (calendar_record_h)temp;
81 static void _cal_record_attendee_struct_free(cal_attendee_s *record)
83 CAL_FREE(record->attendee_number);
84 CAL_FREE(record->attendee_uid);
85 CAL_FREE(record->attendee_group);
86 CAL_FREE(record->attendee_email);
87 CAL_FREE(record->attendee_delegatee_uri);
88 CAL_FREE(record->attendee_delegator_uri);
89 CAL_FREE(record->attendee_name);
90 CAL_FREE(record->attendee_member);
94 static int _cal_record_attendee_destroy(calendar_record_h record, bool delete_child)
96 int ret = CALENDAR_ERROR_NONE;
98 cal_attendee_s *temp = (cal_attendee_s*)(record);
100 _cal_record_attendee_struct_free(temp);
105 static int _cal_record_attendee_clone(calendar_record_h record, calendar_record_h* out_record)
107 cal_attendee_s *out_data = NULL;
108 cal_attendee_s *src_data = NULL;
110 src_data = (cal_attendee_s*)(record);
112 out_data = calloc(1, sizeof(cal_attendee_s));
113 RETVM_IF(NULL == out_data, CALENDAR_ERROR_OUT_OF_MEMORY, "calloc() Fail");
115 CAL_RECORD_COPY_COMMON(&(out_data->common), &(src_data->common));
117 out_data->parent_id = src_data->parent_id;
118 out_data->attendee_cutype = src_data->attendee_cutype;
119 out_data->attendee_ct_index = src_data->attendee_ct_index;
120 out_data->attendee_role = src_data->attendee_role;
121 out_data->attendee_status = src_data->attendee_status;
122 out_data->attendee_rsvp = src_data->attendee_rsvp;
123 out_data->attendee_number = cal_strdup(src_data->attendee_number);
124 out_data->attendee_uid = cal_strdup(src_data->attendee_uid);
125 out_data->attendee_group = cal_strdup(src_data->attendee_group);
126 out_data->attendee_email = cal_strdup(src_data->attendee_email);
127 out_data->attendee_delegatee_uri = cal_strdup(src_data->attendee_delegatee_uri);
128 out_data->attendee_delegator_uri = cal_strdup(src_data->attendee_delegator_uri);
129 out_data->attendee_name = cal_strdup(src_data->attendee_name);
130 out_data->attendee_member = cal_strdup(src_data->attendee_member);
132 *out_record = (calendar_record_h)out_data;
134 return CALENDAR_ERROR_NONE;
137 static int _cal_record_attendee_get_str(calendar_record_h record, unsigned int property_id, char** out_str)
139 cal_attendee_s *rec = (cal_attendee_s*)(record);
140 switch (property_id) {
141 case CAL_PROPERTY_ATTENDEE_NUMBER:
142 *out_str = cal_strdup(rec->attendee_number);
144 case CAL_PROPERTY_ATTENDEE_UID:
145 *out_str = cal_strdup(rec->attendee_uid);
147 case CAL_PROPERTY_ATTENDEE_GROUP:
148 *out_str = cal_strdup(rec->attendee_group);
150 case CAL_PROPERTY_ATTENDEE_EMAIL:
151 *out_str = cal_strdup(rec->attendee_email);
153 case CAL_PROPERTY_ATTENDEE_DELEGATEE_URI:
154 *out_str = cal_strdup(rec->attendee_delegatee_uri);
156 case CAL_PROPERTY_ATTENDEE_DELEGATOR_URI:
157 *out_str = cal_strdup(rec->attendee_delegator_uri);
159 case CAL_PROPERTY_ATTENDEE_NAME:
160 *out_str = cal_strdup(rec->attendee_name);
162 case CAL_PROPERTY_ATTENDEE_MEMBER:
163 *out_str = cal_strdup(rec->attendee_member);
166 ERR("invalid parameter (property:0x%x)", property_id);
167 return CALENDAR_ERROR_INVALID_PARAMETER;
170 return CALENDAR_ERROR_NONE;
173 static int _cal_record_attendee_get_str_p(calendar_record_h record, unsigned int property_id, char** out_str)
175 cal_attendee_s *rec = (cal_attendee_s*)(record);
176 switch (property_id) {
177 case CAL_PROPERTY_ATTENDEE_NUMBER:
178 *out_str = (rec->attendee_number);
180 case CAL_PROPERTY_ATTENDEE_UID:
181 *out_str = (rec->attendee_uid);
183 case CAL_PROPERTY_ATTENDEE_GROUP:
184 *out_str = (rec->attendee_group);
186 case CAL_PROPERTY_ATTENDEE_EMAIL:
187 *out_str = (rec->attendee_email);
189 case CAL_PROPERTY_ATTENDEE_DELEGATEE_URI:
190 *out_str = (rec->attendee_delegatee_uri);
192 case CAL_PROPERTY_ATTENDEE_DELEGATOR_URI:
193 *out_str = (rec->attendee_delegator_uri);
195 case CAL_PROPERTY_ATTENDEE_NAME:
196 *out_str = (rec->attendee_name);
198 case CAL_PROPERTY_ATTENDEE_MEMBER:
199 *out_str = (rec->attendee_member);
202 ERR("invalid parameter (property:0x%x)", property_id);
203 return CALENDAR_ERROR_INVALID_PARAMETER;
206 return CALENDAR_ERROR_NONE;
209 static int _cal_record_attendee_get_int(calendar_record_h record, unsigned int property_id, int* out_value)
211 cal_attendee_s *rec = (cal_attendee_s*)(record);
212 switch (property_id) {
213 case CAL_PROPERTY_ATTENDEE_CUTYPE:
214 *out_value = (rec->attendee_cutype);
216 case CAL_PROPERTY_ATTENDEE_CT_INDEX:
217 *out_value = (rec->attendee_ct_index);
219 case CAL_PROPERTY_ATTENDEE_ROLE:
220 *out_value = (rec->attendee_role);
222 case CAL_PROPERTY_ATTENDEE_STATUS:
223 *out_value = (rec->attendee_status);
225 case CAL_PROPERTY_ATTENDEE_RSVP:
226 *out_value = (rec->attendee_rsvp);
228 case CAL_PROPERTY_ATTENDEE_PARENT_ID:
229 *out_value = (rec->parent_id);
232 ERR("invalid parameter (property:0x%x)", property_id);
233 return CALENDAR_ERROR_INVALID_PARAMETER;
236 return CALENDAR_ERROR_NONE;
239 static int _cal_record_attendee_set_str(calendar_record_h record, unsigned int property_id, const char* value)
241 cal_attendee_s *rec = (cal_attendee_s*)(record);
242 switch (property_id) {
243 case CAL_PROPERTY_ATTENDEE_NUMBER:
244 CAL_FREE(rec->attendee_number);
245 rec->attendee_number = cal_strdup(value);
247 case CAL_PROPERTY_ATTENDEE_UID:
248 CAL_FREE(rec->attendee_uid);
249 rec->attendee_uid = cal_strdup(value);
251 case CAL_PROPERTY_ATTENDEE_GROUP:
252 CAL_FREE(rec->attendee_group);
253 rec->attendee_group = cal_strdup(value);
255 case CAL_PROPERTY_ATTENDEE_EMAIL:
256 CAL_FREE(rec->attendee_email);
257 rec->attendee_email = cal_strdup(value);
259 case CAL_PROPERTY_ATTENDEE_DELEGATEE_URI:
260 CAL_FREE(rec->attendee_delegatee_uri);
261 rec->attendee_delegatee_uri = cal_strdup(value);
263 case CAL_PROPERTY_ATTENDEE_DELEGATOR_URI:
264 CAL_FREE(rec->attendee_delegator_uri);
265 rec->attendee_delegator_uri = cal_strdup(value);
267 case CAL_PROPERTY_ATTENDEE_NAME:
268 CAL_FREE(rec->attendee_name);
269 rec->attendee_name = cal_strdup(value);
271 case CAL_PROPERTY_ATTENDEE_MEMBER:
272 CAL_FREE(rec->attendee_member);
273 rec->attendee_member = cal_strdup(value);
276 ERR("invalid parameter (property:0x%x)", property_id);
277 return CALENDAR_ERROR_INVALID_PARAMETER;
280 return CALENDAR_ERROR_NONE;
283 static int _cal_record_attendee_set_int(calendar_record_h record, unsigned int property_id, int value)
285 cal_attendee_s *rec = (cal_attendee_s*)(record);
286 switch (property_id) {
287 case CAL_PROPERTY_ATTENDEE_CUTYPE:
288 (rec->attendee_cutype) = value;
290 case CAL_PROPERTY_ATTENDEE_CT_INDEX:
291 (rec->attendee_ct_index) = value;
293 case CAL_PROPERTY_ATTENDEE_ROLE:
294 (rec->attendee_role) = value;
296 case CAL_PROPERTY_ATTENDEE_STATUS:
297 (rec->attendee_status) = value;
299 case CAL_PROPERTY_ATTENDEE_RSVP:
300 (rec->attendee_rsvp) = value;
302 case CAL_PROPERTY_ATTENDEE_PARENT_ID:
303 (rec->parent_id) = value;
306 ERR("invalid parameter (property:0x%x)", property_id);
307 return CALENDAR_ERROR_INVALID_PARAMETER;
310 return CALENDAR_ERROR_NONE;