add comment LCOV_EXCL
[platform/core/pim/calendar-service.git] / common / cal_record_instance_normal_extended.c
1 /*
2  * Calendar Service
3  *
4  * Copyright (c) 2012 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
5  *
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
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
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.
17  *
18  */
19
20 #include <stdlib.h>
21 #include <stdbool.h>
22 #include <string.h>
23
24 #include "cal_internal.h"
25 #include "cal_typedef.h"
26 #include "cal_view.h"
27 #include "cal_record.h"
28 #include "cal_utils.h"
29
30 static int _cal_record_instance_normal_extended_create(calendar_record_h* out_record);
31 static int _cal_record_instance_normal_extended_destroy(calendar_record_h record, bool delete_child);
32 static int _cal_record_instance_normal_extended_clone(calendar_record_h record, calendar_record_h* out_record);
33 static int _cal_record_instance_normal_extended_get_str(calendar_record_h record, unsigned int property_id, char** out_str);
34 static int _cal_record_instance_normal_extended_get_str_p(calendar_record_h record, unsigned int property_id, char** out_str);
35 static int _cal_record_instance_normal_extended_get_int(calendar_record_h record, unsigned int property_id, int* out_value);
36 static int _cal_record_instance_normal_extended_get_double(calendar_record_h record, unsigned int property_id, double* out_value);
37 static int _cal_record_instance_normal_extended_get_lli(calendar_record_h record, unsigned int property_id, long long int* out_value);
38 static int _cal_record_instance_normal_extended_get_caltime(calendar_record_h record, unsigned int property_id, calendar_time_s* out_value);
39 static int _cal_record_instance_normal_extended_set_str(calendar_record_h record, unsigned int property_id, const char* value);
40 static int _cal_record_instance_normal_extended_set_int(calendar_record_h record, unsigned int property_id, int value);
41 static int _cal_record_instance_normal_extended_set_double(calendar_record_h record, unsigned int property_id, double value);
42 static int _cal_record_instance_normal_extended_set_caltime(calendar_record_h record, unsigned int property_id, calendar_time_s value);
43
44 cal_record_plugin_cb_s cal_record_instance_normal_extended_plugin_cb = {
45         .create = _cal_record_instance_normal_extended_create,
46         .destroy = _cal_record_instance_normal_extended_destroy,
47         .clone = _cal_record_instance_normal_extended_clone,
48         .get_str = _cal_record_instance_normal_extended_get_str,
49         .get_str_p = _cal_record_instance_normal_extended_get_str_p,
50         .get_int = _cal_record_instance_normal_extended_get_int,
51         .get_double = _cal_record_instance_normal_extended_get_double,
52         .get_lli = _cal_record_instance_normal_extended_get_lli,
53         .get_caltime = _cal_record_instance_normal_extended_get_caltime,
54         .set_str = _cal_record_instance_normal_extended_set_str,
55         .set_int = _cal_record_instance_normal_extended_set_int,
56         .set_double = _cal_record_instance_normal_extended_set_double,
57         .set_lli = NULL,
58         .set_caltime = _cal_record_instance_normal_extended_set_caltime,
59         .add_child_record = NULL,
60         .remove_child_record = NULL,
61         .get_child_record_count = NULL,
62         .get_child_record_at_p = NULL,
63         .clone_child_record_list = NULL
64 };
65
66 static void _cal_record_instance_normal_extended_struct_init(cal_instance_normal_extended_s* record)
67 {
68         memset(record, 0, sizeof(cal_instance_normal_extended_s));
69
70         record->event_status = CALENDAR_EVENT_STATUS_NONE;
71         record->calendar_id = DEFAULT_EVENT_CALENDAR_BOOK_ID;
72         record->event_id = CAL_INVALID_ID;
73
74         record->busy_status = 2;
75         record->summary = NULL;
76         record->description = NULL;
77         record->location = NULL;
78
79         record->latitude = 1000; /* set default 1000 out of range(-180 ~ 180) */
80         record->longitude = 1000; /* set default 1000 out of range(-180 ~ 180) */
81
82         return ;
83 }
84
85 static int _cal_record_instance_normal_extended_create(calendar_record_h* out_record)
86 {
87         cal_instance_normal_extended_s *temp = NULL;
88         int ret = CALENDAR_ERROR_NONE;
89
90         temp = calloc(1, sizeof(cal_instance_normal_extended_s));
91         RETVM_IF(NULL == temp, CALENDAR_ERROR_OUT_OF_MEMORY, "calloc() Fail");
92
93         _cal_record_instance_normal_extended_struct_init(temp);
94
95         *out_record = (calendar_record_h)temp;
96
97         return ret;
98 }
99
100 static void _cal_record_instance_normal_extended_struct_free(cal_instance_normal_extended_s *record)
101 {
102         CAL_FREE(record->summary);
103         CAL_FREE(record->description);
104         CAL_FREE(record->location);
105         CAL_FREE(record->organizer_name);
106         CAL_FREE(record->categories);
107         CAL_FREE(record->sync_data1);
108         CAL_FREE(record->sync_data2);
109         CAL_FREE(record->sync_data3);
110         CAL_FREE(record->sync_data4);
111
112         CAL_FREE(record);
113 }
114
115 static int _cal_record_instance_normal_extended_destroy(calendar_record_h record, bool delete_child)
116 {
117         cal_instance_normal_extended_s *temp = (cal_instance_normal_extended_s*)(record);
118
119         _cal_record_instance_normal_extended_struct_free(temp);
120
121         return CALENDAR_ERROR_NONE;
122 }
123
124 static int _cal_record_instance_normal_extended_clone(calendar_record_h record, calendar_record_h* out_record)
125 {
126         cal_instance_normal_extended_s *out_data = NULL;
127         cal_instance_normal_extended_s *src_data = NULL;
128
129         src_data = (cal_instance_normal_extended_s*)(record);
130
131         out_data = calloc(1, sizeof(cal_instance_normal_extended_s));
132         RETVM_IF(NULL == out_data, CALENDAR_ERROR_OUT_OF_MEMORY, "calloc() Fail");
133
134         CAL_RECORD_COPY_COMMON(&(out_data->common), &(src_data->common));
135
136         out_data->event_id = src_data->event_id;
137         out_data->calendar_id = src_data->calendar_id;
138         out_data->start = src_data->start;
139         out_data->end = src_data->end;
140         out_data->summary = cal_strdup(src_data->summary);
141         out_data->description = cal_strdup(src_data->description);
142         out_data->location = cal_strdup(src_data->location);
143         out_data->busy_status = src_data->busy_status;
144         out_data->event_status = src_data->event_status;
145         out_data->priority = src_data->priority;
146         out_data->sensitivity = src_data->sensitivity;
147         out_data->has_rrule = src_data->has_rrule;
148         out_data->latitude = src_data->latitude;
149         out_data->longitude = src_data->longitude;
150         out_data->has_alarm = src_data->has_alarm;
151         out_data->original_event_id = src_data->original_event_id;
152         out_data->last_mod = src_data->last_mod;
153         out_data->organizer_name = cal_strdup(src_data->organizer_name);
154         out_data->categories = cal_strdup(src_data->categories);
155         out_data->sync_data1 = cal_strdup(src_data->sync_data1);
156         out_data->sync_data2 = cal_strdup(src_data->sync_data2);
157         out_data->sync_data3 = cal_strdup(src_data->sync_data3);
158         out_data->sync_data4 = cal_strdup(src_data->sync_data4);
159
160         *out_record = (calendar_record_h)out_data;
161
162         return CALENDAR_ERROR_NONE;
163 }
164
165 static int _cal_record_instance_normal_extended_get_str(calendar_record_h record, unsigned int property_id, char** out_str)
166 {
167         cal_instance_normal_extended_s *rec = (cal_instance_normal_extended_s*)(record);
168         switch (property_id) {
169         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_SUMMARY:
170                 *out_str = cal_strdup(rec->summary);
171                 break;
172         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_DESCRIPTION:
173                 *out_str = cal_strdup(rec->description);
174                 break;
175         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_LOCATION:
176                 *out_str = cal_strdup(rec->location);
177                 break;
178         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_SYNC_DATA1:
179                 *out_str = cal_strdup(rec->sync_data1);
180                 break;
181         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_ORGANIZER_NAME:
182                 *out_str = cal_strdup(rec->organizer_name);
183                 break;
184         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_CATEGORIES:
185                 *out_str = cal_strdup(rec->categories);
186                 break;
187         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_SYNC_DATA2:
188                 *out_str = cal_strdup(rec->sync_data2);
189                 break;
190         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_SYNC_DATA3:
191                 *out_str = cal_strdup(rec->sync_data3);
192                 break;
193         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_SYNC_DATA4:
194                 *out_str = cal_strdup(rec->sync_data4);
195                 break;
196         default:
197                 /* LCOV_EXCL_START */
198                 ERR("invalid parameter (property:0x%x)", property_id);
199                 return CALENDAR_ERROR_INVALID_PARAMETER;
200                 /* LCOV_EXCL_STOP */
201         }
202
203         return CALENDAR_ERROR_NONE;
204 }
205
206 static int _cal_record_instance_normal_extended_get_str_p(calendar_record_h record, unsigned int property_id, char** out_str)
207 {
208         cal_instance_normal_extended_s *rec = (cal_instance_normal_extended_s*)(record);
209         switch (property_id) {
210         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_SUMMARY:
211                 *out_str = (rec->summary);
212                 break;
213         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_DESCRIPTION:
214                 *out_str = (rec->description);
215                 break;
216         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_LOCATION:
217                 *out_str = (rec->location);
218                 break;
219         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_SYNC_DATA1:
220                 *out_str = (rec->sync_data1);
221                 break;
222         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_ORGANIZER_NAME:
223                 *out_str = (rec->organizer_name);
224                 break;
225         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_CATEGORIES:
226                 *out_str = (rec->categories);
227                 break;
228         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_SYNC_DATA2:
229                 *out_str = (rec->sync_data2);
230                 break;
231         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_SYNC_DATA3:
232                 *out_str = (rec->sync_data3);
233                 break;
234         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_SYNC_DATA4:
235                 *out_str = (rec->sync_data4);
236                 break;
237         default:
238                 /* LCOV_EXCL_START */
239                 ERR("invalid parameter (property:0x%x)", property_id);
240                 return CALENDAR_ERROR_INVALID_PARAMETER;
241                 /* LCOV_EXCL_STOP */
242         }
243
244         return CALENDAR_ERROR_NONE;
245 }
246
247 static int _cal_record_instance_normal_extended_get_int(calendar_record_h record, unsigned int property_id, int* out_value)
248 {
249         cal_instance_normal_extended_s *rec = (cal_instance_normal_extended_s*)(record);
250         switch (property_id) {
251         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_EVENT_ID:
252                 *out_value = (rec->event_id);
253                 break;
254         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_CALENDAR_ID:
255                 *out_value = (rec->calendar_id);
256                 break;
257         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_BUSY_STATUS:
258                 *out_value = (rec->busy_status);
259                 break;
260         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_EVENT_STATUS:
261                 *out_value = (rec->event_status);
262                 break;
263         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_PRIORITY:
264                 *out_value = (rec->priority);
265                 break;
266         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_SENSITIVITY:
267                 *out_value = (rec->sensitivity);
268                 break;
269         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_HAS_RRULE:
270                 *out_value = (rec->has_rrule);
271                 break;
272         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_HAS_ALARM:
273                 *out_value = (rec->has_alarm);
274                 break;
275         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_ORIGINAL_EVENT_ID:
276                 *out_value = (rec->original_event_id);
277                 break;
278         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_HAS_ATTENDEE:
279                 *out_value = (rec->has_attendee);
280                 break;
281         default:
282                 /* LCOV_EXCL_START */
283                 ERR("invalid parameter (property:0x%x)", property_id);
284                 return CALENDAR_ERROR_INVALID_PARAMETER;
285                 /* LCOV_EXCL_STOP */
286         }
287
288         return CALENDAR_ERROR_NONE;
289 }
290
291 static int _cal_record_instance_normal_extended_get_double(calendar_record_h record, unsigned int property_id, double* out_value)
292 {
293         cal_instance_normal_extended_s *rec = (cal_instance_normal_extended_s*)(record);
294         switch (property_id) {
295         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_LATITUDE:
296                 *out_value = (rec->latitude);
297                 break;
298         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_LONGITUDE:
299                 *out_value = (rec->longitude);
300                 break;
301
302         default:
303                 /* LCOV_EXCL_START */
304                 ERR("invalid parameter (property:0x%x)", property_id);
305                 return CALENDAR_ERROR_INVALID_PARAMETER;
306                 /* LCOV_EXCL_STOP */
307         }
308
309         return CALENDAR_ERROR_NONE;
310 }
311
312 static int _cal_record_instance_normal_extended_get_lli(calendar_record_h record, unsigned int property_id, long long int* out_value)
313 {
314         cal_instance_normal_extended_s *rec = (cal_instance_normal_extended_s*)(record);
315         switch (property_id) {
316         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_LAST_MODIFIED_TIME:
317                 *out_value = (rec->last_mod);
318                 break;
319         default:
320                 return CALENDAR_ERROR_INVALID_PARAMETER;
321                 /* LCOV_EXCL_STOP */
322         }
323
324         return CALENDAR_ERROR_NONE;
325 }
326
327 static int _cal_record_instance_normal_extended_get_caltime(calendar_record_h record, unsigned int property_id, calendar_time_s* out_value)
328 {
329         cal_instance_normal_extended_s *rec = (cal_instance_normal_extended_s*)(record);
330         switch (property_id) {
331         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_START:
332                 *out_value = rec->start;
333                 break;
334         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_END:
335                 *out_value = rec->end;
336                 break;
337         default:
338                 /* LCOV_EXCL_START */
339                 ERR("invalid parameter (property:0x%x)", property_id);
340                 return CALENDAR_ERROR_INVALID_PARAMETER;
341                 /* LCOV_EXCL_STOP */
342         }
343
344         return CALENDAR_ERROR_NONE;
345 }
346
347 static int _cal_record_instance_normal_extended_set_str(calendar_record_h record, unsigned int property_id, const char* value)
348 {
349         cal_instance_normal_extended_s *rec = (cal_instance_normal_extended_s*)(record);
350         switch (property_id) {
351         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_SUMMARY:
352                 CAL_FREE(rec->summary);
353                 rec->summary = cal_strdup(value);
354                 break;
355         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_DESCRIPTION:
356                 CAL_FREE(rec->description);
357                 rec->description = cal_strdup(value);
358                 break;
359         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_LOCATION:
360                 CAL_FREE(rec->location);
361                 rec->location = cal_strdup(value);
362                 break;
363         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_SYNC_DATA1:
364                 CAL_FREE(rec->sync_data1);
365                 rec->sync_data1 = cal_strdup(value);
366                 break;
367         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_ORGANIZER_NAME:
368                 CAL_FREE(rec->organizer_name);
369                 rec->organizer_name = cal_strdup(value);
370                 break;
371         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_CATEGORIES:
372                 CAL_FREE(rec->categories);
373                 rec->categories = cal_strdup(value);
374                 break;
375         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_SYNC_DATA2:
376                 CAL_FREE(rec->sync_data2);
377                 rec->sync_data2 = cal_strdup(value);
378                 break;
379         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_SYNC_DATA3:
380                 CAL_FREE(rec->sync_data3);
381                 rec->sync_data3 = cal_strdup(value);
382                 break;
383         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_SYNC_DATA4:
384                 CAL_FREE(rec->sync_data4);
385                 rec->sync_data4 = cal_strdup(value);
386                 break;
387         default:
388                 /* LCOV_EXCL_START */
389                 ERR("invalid parameter (property:0x%x)", property_id);
390                 return CALENDAR_ERROR_INVALID_PARAMETER;
391                 /* LCOV_EXCL_STOP */
392         }
393
394         return CALENDAR_ERROR_NONE;
395 }
396
397 static int _cal_record_instance_normal_extended_set_int(calendar_record_h record, unsigned int property_id, int value)
398 {
399         cal_instance_normal_extended_s *rec = (cal_instance_normal_extended_s*)(record);
400         switch (property_id) {
401         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_EVENT_ID:
402                 (rec->event_id) = value;
403                 break;
404         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_CALENDAR_ID:
405                 (rec->calendar_id) = value;
406                 break;
407         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_BUSY_STATUS:
408                 (rec->busy_status) = value;
409                 break;
410         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_EVENT_STATUS:
411                 (rec->event_status) = value;
412                 break;
413         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_PRIORITY:
414                 (rec->priority) = value;
415                 break;
416         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_SENSITIVITY:
417                 (rec->sensitivity) = value;
418                 break;
419         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_HAS_RRULE:
420                 (rec->has_rrule) = value;
421                 break;
422         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_HAS_ALARM:
423                 (rec->has_alarm) = value;
424                 break;
425         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_ORIGINAL_EVENT_ID:
426                 (rec->original_event_id) = value;
427                 break;
428         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_HAS_ATTENDEE:
429                 (rec->has_attendee) = value;
430                 break;
431         default:
432                 /* LCOV_EXCL_START */
433                 ERR("invalid parameter (property:0x%x)", property_id);
434                 return CALENDAR_ERROR_INVALID_PARAMETER;
435                 /* LCOV_EXCL_STOP */
436         }
437
438         return CALENDAR_ERROR_NONE;
439 }
440
441 static int _cal_record_instance_normal_extended_set_double(calendar_record_h record, unsigned int property_id, double value)
442 {
443         cal_instance_normal_extended_s *rec = (cal_instance_normal_extended_s*)(record);
444         switch (property_id) {
445         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_LATITUDE:
446                 (rec->latitude) = value;
447                 break;
448         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_LONGITUDE:
449                 (rec->longitude) = value;
450                 break;
451
452         default:
453                 /* LCOV_EXCL_START */
454                 ERR("invalid parameter (property:0x%x)", property_id);
455                 return CALENDAR_ERROR_INVALID_PARAMETER;
456                 /* LCOV_EXCL_STOP */
457         }
458
459         return CALENDAR_ERROR_NONE;
460 }
461
462 static int _cal_record_instance_normal_extended_set_caltime(calendar_record_h record, unsigned int property_id, calendar_time_s value)
463 {
464         cal_instance_normal_extended_s *rec = (cal_instance_normal_extended_s*)(record);
465         switch (property_id) {
466         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_START:
467                 rec->start = value;
468                 break;
469         case CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_END:
470                 rec->end = value;
471                 break;
472         default:
473                 /* LCOV_EXCL_START */
474                 ERR("invalid parameter (property:0x%x)", property_id);
475                 return CALENDAR_ERROR_INVALID_PARAMETER;
476                 /* LCOV_EXCL_STOP */
477         }
478
479         return CALENDAR_ERROR_NONE;
480 }