add comment LCOV_EXCL
[platform/core/pim/calendar-service.git] / common / cal_record_instance_allday_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_allday_extended_create(calendar_record_h* out_record);
31 static int _cal_record_instance_allday_extended_destroy(calendar_record_h record, bool delete_child);
32 static int _cal_record_instance_allday_extended_clone(calendar_record_h record, calendar_record_h* out_record);
33 static int _cal_record_instance_allday_extended_get_str(calendar_record_h record, unsigned int property_id, char** out_str);
34 static int _cal_record_instance_allday_extended_get_str_p(calendar_record_h record, unsigned int property_id, char** out_str);
35 static int _cal_record_instance_allday_extended_get_int(calendar_record_h record, unsigned int property_id, int* out_value);
36 static int _cal_record_instance_allday_extended_get_double(calendar_record_h record, unsigned int property_id, double* out_value);
37 static int _cal_record_instance_allday_extended_get_lli(calendar_record_h record, unsigned int property_id, long long int* out_value);
38 static int _cal_record_instance_allday_extended_get_caltime(calendar_record_h record, unsigned int property_id, calendar_time_s* out_value);
39 static int _cal_record_instance_allday_extended_set_str(calendar_record_h record, unsigned int property_id, const char* value);
40 static int _cal_record_instance_allday_extended_set_int(calendar_record_h record, unsigned int property_id, int value);
41 static int _cal_record_instance_allday_extended_set_double(calendar_record_h record, unsigned int property_id, double value);
42 static int _cal_record_instance_allday_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_allday_extended_plugin_cb = {
45         .create = _cal_record_instance_allday_extended_create,
46         .destroy = _cal_record_instance_allday_extended_destroy,
47         .clone = _cal_record_instance_allday_extended_clone,
48         .get_str = _cal_record_instance_allday_extended_get_str,
49         .get_str_p = _cal_record_instance_allday_extended_get_str_p,
50         .get_int = _cal_record_instance_allday_extended_get_int,
51         .get_double = _cal_record_instance_allday_extended_get_double,
52         .get_lli = _cal_record_instance_allday_extended_get_lli,
53         .get_caltime = _cal_record_instance_allday_extended_get_caltime,
54         .set_str = _cal_record_instance_allday_extended_set_str,
55         .set_int = _cal_record_instance_allday_extended_set_int,
56         .set_double = _cal_record_instance_allday_extended_set_double,
57         .set_lli = NULL,
58         .set_caltime = _cal_record_instance_allday_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_allday_extended_struct_init(cal_instance_allday_extended_s* record)
67 {
68         memset(record, 0, sizeof(cal_instance_allday_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_allday_extended_create(calendar_record_h* out_record)
86 {
87         cal_instance_allday_extended_s *temp = NULL;
88         int ret = CALENDAR_ERROR_NONE;
89
90         temp = calloc(1, sizeof(cal_instance_allday_extended_s));
91         RETVM_IF(NULL == temp, CALENDAR_ERROR_OUT_OF_MEMORY, "calloc() Fail");
92
93         _cal_record_instance_allday_extended_struct_init(temp);
94
95         *out_record = (calendar_record_h)temp;
96
97         return ret;
98 }
99
100 static void _cal_record_instance_allday_extended_struct_free(cal_instance_allday_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_allday_extended_destroy(calendar_record_h record, bool delete_child)
116 {
117         int ret = CALENDAR_ERROR_NONE;
118
119         cal_instance_allday_extended_s *temp = (cal_instance_allday_extended_s*)(record);
120
121         _cal_record_instance_allday_extended_struct_free(temp);
122
123         return ret;
124 }
125
126 static int _cal_record_instance_allday_extended_clone(calendar_record_h record, calendar_record_h* out_record)
127 {
128         cal_instance_allday_extended_s *out_data = NULL;
129         cal_instance_allday_extended_s *src_data = NULL;
130
131         src_data = (cal_instance_allday_extended_s*)(record);
132
133         out_data = calloc(1, sizeof(cal_instance_allday_extended_s));
134         RETVM_IF(NULL == out_data, CALENDAR_ERROR_OUT_OF_MEMORY, "calloc() Fail");
135
136         CAL_RECORD_COPY_COMMON(&(out_data->common), &(src_data->common));
137
138         out_data->event_id = src_data->event_id;
139         out_data->calendar_id = src_data->calendar_id;
140         out_data->start = src_data->start;
141         out_data->end = src_data->end;
142         out_data->summary = cal_strdup(src_data->summary);
143         out_data->description = cal_strdup(src_data->description);
144         out_data->location = cal_strdup(src_data->location);
145         out_data->busy_status = src_data->busy_status;
146         out_data->event_status = src_data->event_status;
147         out_data->priority = src_data->priority;
148         out_data->sensitivity = src_data->sensitivity;
149         out_data->has_rrule = src_data->has_rrule;
150         out_data->latitude = src_data->latitude;
151         out_data->longitude = src_data->longitude;
152         out_data->has_alarm = src_data->has_alarm;
153         out_data->original_event_id = src_data->original_event_id;
154         out_data->last_mod = src_data->last_mod;
155         out_data->organizer_name = cal_strdup(src_data->organizer_name);
156         out_data->categories = cal_strdup(src_data->categories);
157         out_data->sync_data1 = cal_strdup(src_data->sync_data1);
158         out_data->sync_data2 = cal_strdup(src_data->sync_data2);
159         out_data->sync_data3 = cal_strdup(src_data->sync_data3);
160         out_data->sync_data4 = cal_strdup(src_data->sync_data4);
161
162         *out_record = (calendar_record_h)out_data;
163
164         return CALENDAR_ERROR_NONE;
165 }
166
167 static int _cal_record_instance_allday_extended_get_str(calendar_record_h record, unsigned int property_id, char** out_str)
168 {
169         cal_instance_allday_extended_s *rec = (cal_instance_allday_extended_s*)(record);
170         switch (property_id) {
171         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_SUMMARY:
172                 *out_str = cal_strdup(rec->summary);
173                 break;
174         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_DESCRIPTION:
175                 *out_str = cal_strdup(rec->description);
176                 break;
177         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_LOCATION:
178                 *out_str = cal_strdup(rec->location);
179                 break;
180         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_SYNC_DATA1:
181                 *out_str = cal_strdup(rec->sync_data1);
182                 break;
183         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_ORGANIZER_NAME:
184                 *out_str = cal_strdup(rec->organizer_name);
185                 break;
186         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_CATEGORIES:
187                 *out_str = cal_strdup(rec->categories);
188                 break;
189         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_SYNC_DATA2:
190                 *out_str = cal_strdup(rec->sync_data2);
191                 break;
192         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_SYNC_DATA3:
193                 *out_str = cal_strdup(rec->sync_data3);
194                 break;
195         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_SYNC_DATA4:
196                 *out_str = cal_strdup(rec->sync_data4);
197                 break;
198         default:
199                 /* LCOV_EXCL_START */
200                 ERR("invalid parameter (property:0x%x)", property_id);
201                 return CALENDAR_ERROR_INVALID_PARAMETER;
202                 /* LCOV_EXCL_STOP */
203         }
204
205         return CALENDAR_ERROR_NONE;
206 }
207
208 static int _cal_record_instance_allday_extended_get_str_p(calendar_record_h record, unsigned int property_id, char** out_str)
209 {
210         cal_instance_allday_extended_s *rec = (cal_instance_allday_extended_s*)(record);
211         switch (property_id) {
212         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_SUMMARY:
213                 *out_str = (rec->summary);
214                 break;
215         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_DESCRIPTION:
216                 *out_str = (rec->description);
217                 break;
218         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_LOCATION:
219                 *out_str = (rec->location);
220                 break;
221         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_SYNC_DATA1:
222                 *out_str = (rec->sync_data1);
223                 break;
224         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_ORGANIZER_NAME:
225                 *out_str = (rec->organizer_name);
226                 break;
227         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_CATEGORIES:
228                 *out_str = (rec->categories);
229                 break;
230         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_SYNC_DATA2:
231                 *out_str = (rec->sync_data2);
232                 break;
233         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_SYNC_DATA3:
234                 *out_str = (rec->sync_data3);
235                 break;
236         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_SYNC_DATA4:
237                 *out_str = (rec->sync_data4);
238                 break;
239         default:
240                 /* LCOV_EXCL_START */
241                 ERR("invalid parameter (property:0x%x)", property_id);
242                 return CALENDAR_ERROR_INVALID_PARAMETER;
243                 /* LCOV_EXCL_STOP */
244         }
245
246         return CALENDAR_ERROR_NONE;
247 }
248
249 static int _cal_record_instance_allday_extended_get_int(calendar_record_h record, unsigned int property_id, int* out_value)
250 {
251         cal_instance_allday_extended_s *rec = (cal_instance_allday_extended_s*)(record);
252         switch (property_id) {
253         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_EVENT_ID:
254                 *out_value = (rec->event_id);
255                 break;
256         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_CALENDAR_ID:
257                 *out_value = (rec->calendar_id);
258                 break;
259         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_BUSY_STATUS:
260                 *out_value = (rec->busy_status);
261                 break;
262         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_EVENT_STATUS:
263                 *out_value = (rec->event_status);
264                 break;
265         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_PRIORITY:
266                 *out_value = (rec->priority);
267                 break;
268         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_SENSITIVITY:
269                 *out_value = (rec->sensitivity);
270                 break;
271         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_HAS_RRULE:
272                 *out_value = (rec->has_rrule);
273                 break;
274         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_HAS_ALARM:
275                 *out_value = (rec->has_alarm);
276                 break;
277         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_ORIGINAL_EVENT_ID:
278                 *out_value = (rec->original_event_id);
279                 break;
280         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_HAS_ATTENDEE:
281                 *out_value = (rec->has_attendee);
282                 break;
283         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_IS_ALLDAY:
284                 *out_value = (rec->is_allday);
285                 break;
286
287         default:
288                 /* LCOV_EXCL_START */
289                 ERR("invalid parameter (property:0x%x)", property_id);
290                 return CALENDAR_ERROR_INVALID_PARAMETER;
291                 /* LCOV_EXCL_STOP */
292         }
293
294         return CALENDAR_ERROR_NONE;
295 }
296
297 static int _cal_record_instance_allday_extended_get_double(calendar_record_h record, unsigned int property_id, double* out_value)
298 {
299         cal_instance_allday_extended_s *rec = (cal_instance_allday_extended_s*)(record);
300         switch (property_id) {
301         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_LATITUDE:
302                 *out_value = (rec->latitude);
303                 break;
304         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_LONGITUDE:
305                 *out_value = (rec->longitude);
306                 break;
307
308         default:
309                 /* LCOV_EXCL_START */
310                 ERR("invalid parameter (property:0x%x)", property_id);
311                 return CALENDAR_ERROR_INVALID_PARAMETER;
312                 /* LCOV_EXCL_STOP */
313         }
314
315         return CALENDAR_ERROR_NONE;
316 }
317
318 static int _cal_record_instance_allday_extended_get_lli(calendar_record_h record, unsigned int property_id, long long int* out_value)
319 {
320         cal_instance_allday_extended_s *rec = (cal_instance_allday_extended_s*)(record);
321         switch (property_id) {
322         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_LAST_MODIFIED_TIME:
323                 *out_value = (rec->last_mod);
324                 break;
325         default:
326                 return CALENDAR_ERROR_INVALID_PARAMETER;
327         }
328
329         return CALENDAR_ERROR_NONE;
330 }
331
332 static int _cal_record_instance_allday_extended_get_caltime(calendar_record_h record, unsigned int property_id, calendar_time_s* out_value)
333 {
334         cal_instance_allday_extended_s *rec = (cal_instance_allday_extended_s*)(record);
335         switch (property_id) {
336         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_START:
337                 *out_value = rec->start;
338                 break;
339         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_END:
340                 *out_value = rec->end;
341                 break;
342         default:
343                 /* LCOV_EXCL_START */
344                 ERR("invalid parameter (property:0x%x)", property_id);
345                 return CALENDAR_ERROR_INVALID_PARAMETER;
346                 /* LCOV_EXCL_STOP */
347         }
348
349         return CALENDAR_ERROR_NONE;
350 }
351
352 static int _cal_record_instance_allday_extended_set_str(calendar_record_h record, unsigned int property_id, const char* value)
353 {
354         cal_instance_allday_extended_s *rec = (cal_instance_allday_extended_s*)(record);
355         switch (property_id) {
356         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_SUMMARY:
357                 CAL_FREE(rec->summary);
358                 rec->summary = cal_strdup(value);
359                 break;
360         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_DESCRIPTION:
361                 CAL_FREE(rec->description);
362                 rec->description = cal_strdup(value);
363                 break;
364         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_LOCATION:
365                 CAL_FREE(rec->location);
366                 rec->location = cal_strdup(value);
367                 break;
368         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_SYNC_DATA1:
369                 CAL_FREE(rec->sync_data1);
370                 rec->sync_data1 = cal_strdup(value);
371                 break;
372         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_ORGANIZER_NAME:
373                 CAL_FREE(rec->organizer_name);
374                 rec->organizer_name = cal_strdup(value);
375                 break;
376         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_CATEGORIES:
377                 CAL_FREE(rec->categories);
378                 rec->categories = cal_strdup(value);
379                 break;
380         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_SYNC_DATA2:
381                 CAL_FREE(rec->sync_data2);
382                 rec->sync_data2 = cal_strdup(value);
383                 break;
384         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_SYNC_DATA3:
385                 CAL_FREE(rec->sync_data3);
386                 rec->sync_data3 = cal_strdup(value);
387                 break;
388         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_SYNC_DATA4:
389                 CAL_FREE(rec->sync_data4);
390                 rec->sync_data4 = cal_strdup(value);
391                 break;
392         default:
393                 /* LCOV_EXCL_START */
394                 ERR("invalid parameter (property:0x%x)", property_id);
395                 return CALENDAR_ERROR_INVALID_PARAMETER;
396                 /* LCOV_EXCL_STOP */
397         }
398
399         return CALENDAR_ERROR_NONE;
400 }
401
402 static int _cal_record_instance_allday_extended_set_int(calendar_record_h record, unsigned int property_id, int value)
403 {
404         cal_instance_allday_extended_s *rec = (cal_instance_allday_extended_s*)(record);
405         switch (property_id) {
406         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_EVENT_ID:
407                 (rec->event_id) = value;
408                 break;
409         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_CALENDAR_ID:
410                 (rec->calendar_id) = value;
411                 break;
412         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_BUSY_STATUS:
413                 (rec->busy_status) = value;
414                 break;
415         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_EVENT_STATUS:
416                 (rec->event_status) = value;
417                 break;
418         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_PRIORITY:
419                 (rec->priority) = value;
420                 break;
421         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_SENSITIVITY:
422                 (rec->sensitivity) = value;
423                 break;
424         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_HAS_RRULE:
425                 (rec->has_rrule) = value;
426                 break;
427         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_HAS_ALARM:
428                 (rec->has_alarm) = value;
429                 break;
430         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_ORIGINAL_EVENT_ID:
431                 (rec->original_event_id) = value;
432                 break;
433         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_HAS_ATTENDEE:
434                 (rec->has_attendee) = value;
435                 break;
436         default:
437                 /* LCOV_EXCL_START */
438                 ERR("invalid parameter (property:0x%x)", property_id);
439                 return CALENDAR_ERROR_INVALID_PARAMETER;
440                 /* LCOV_EXCL_STOP */
441         }
442
443         return CALENDAR_ERROR_NONE;
444 }
445
446 static int _cal_record_instance_allday_extended_set_double(calendar_record_h record, unsigned int property_id, double value)
447 {
448         cal_instance_allday_extended_s *rec = (cal_instance_allday_extended_s*)(record);
449         switch (property_id) {
450         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_LATITUDE:
451                 (rec->latitude) = value;
452                 break;
453         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_LONGITUDE:
454                 (rec->longitude) = value;
455                 break;
456
457         default:
458                 /* LCOV_EXCL_START */
459                 ERR("invalid parameter (property:0x%x)", property_id);
460                 return CALENDAR_ERROR_INVALID_PARAMETER;
461                 /* LCOV_EXCL_STOP */
462         }
463
464         return CALENDAR_ERROR_NONE;
465 }
466
467 static int _cal_record_instance_allday_extended_set_caltime(calendar_record_h record, unsigned int property_id, calendar_time_s value)
468 {
469         cal_instance_allday_extended_s *rec = (cal_instance_allday_extended_s*)(record);
470         switch (property_id) {
471         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_START:
472                 rec->start = value;
473                 break;
474         case CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_END:
475                 rec->end = value;
476                 break;
477         default:
478                 /* LCOV_EXCL_START */
479                 ERR("invalid parameter (property:0x%x)", property_id);
480                 return CALENDAR_ERROR_INVALID_PARAMETER;
481                 /* LCOV_EXCL_STOP */
482         }
483
484         return CALENDAR_ERROR_NONE;
485 }