modify terminology:calendar->book,allday->localtime,normal->utime,svc->service
[platform/core/pim/calendar-service.git] / common / cal_record_instance_localtime.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_localtime_create(calendar_record_h* out_record);
31 static int _cal_record_instance_localtime_destroy(calendar_record_h record, bool delete_child);
32 static int _cal_record_instance_localtime_clone(calendar_record_h record, calendar_record_h* out_record);
33 static int _cal_record_instance_localtime_get_str(calendar_record_h record, unsigned int property_id, char** out_str);
34 static int _cal_record_instance_localtime_get_str_p(calendar_record_h record, unsigned int property_id, char** out_str);
35 static int _cal_record_instance_localtime_get_int(calendar_record_h record, unsigned int property_id, int* out_value);
36 static int _cal_record_instance_localtime_get_double(calendar_record_h record, unsigned int property_id, double* out_value);
37 static int _cal_record_instance_localtime_get_lli(calendar_record_h record, unsigned int property_id, long long int* out_value);
38 static int _cal_record_instance_localtime_get_caltime(calendar_record_h record, unsigned int property_id, calendar_time_s* out_value);
39 static int _cal_record_instance_localtime_set_str(calendar_record_h record, unsigned int property_id, const char* value);
40 static int _cal_record_instance_localtime_set_int(calendar_record_h record, unsigned int property_id, int value);
41 static int _cal_record_instance_localtime_set_double(calendar_record_h record, unsigned int property_id, double value);
42 static int _cal_record_instance_localtime_set_caltime(calendar_record_h record, unsigned int property_id, calendar_time_s value);
43
44 cal_record_plugin_cb_s cal_record_instance_localtime_plugin_cb = {
45         .create = _cal_record_instance_localtime_create,
46         .destroy = _cal_record_instance_localtime_destroy,
47         .clone = _cal_record_instance_localtime_clone,
48         .get_str = _cal_record_instance_localtime_get_str,
49         .get_str_p = _cal_record_instance_localtime_get_str_p,
50         .get_int = _cal_record_instance_localtime_get_int,
51         .get_double = _cal_record_instance_localtime_get_double,
52         .get_lli = _cal_record_instance_localtime_get_lli,
53         .get_caltime = _cal_record_instance_localtime_get_caltime,
54         .set_str = _cal_record_instance_localtime_set_str,
55         .set_int = _cal_record_instance_localtime_set_int,
56         .set_double = _cal_record_instance_localtime_set_double,
57         .set_lli = NULL,
58         .set_caltime = _cal_record_instance_localtime_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_localtime_struct_init(cal_instance_localtime_s* record)
67 {
68         memset(record, 0, sizeof(cal_instance_localtime_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_localtime_create(calendar_record_h* out_record)
86 {
87         cal_instance_localtime_s *temp = NULL;
88         int ret = CALENDAR_ERROR_NONE;
89
90         temp = calloc(1, sizeof(cal_instance_localtime_s));
91         RETVM_IF(NULL == temp, CALENDAR_ERROR_OUT_OF_MEMORY, "calloc() Fail");
92
93         _cal_record_instance_localtime_struct_init(temp);
94
95         *out_record = (calendar_record_h)temp;
96
97         return ret;
98 }
99
100 static void _cal_record_instance_localtime_struct_free(cal_instance_localtime_s *record)
101 {
102         CAL_FREE(record->summary);
103         CAL_FREE(record->description);
104         CAL_FREE(record->location);
105         CAL_FREE(record->sync_data1);
106
107         CAL_FREE(record);
108 }
109
110 static int _cal_record_instance_localtime_destroy(calendar_record_h record, bool delete_child)
111 {
112         int ret = CALENDAR_ERROR_NONE;
113
114         cal_instance_localtime_s *temp = (cal_instance_localtime_s*)(record);
115
116         _cal_record_instance_localtime_struct_free(temp);
117
118         return ret;
119 }
120
121 static int _cal_record_instance_localtime_clone(calendar_record_h record, calendar_record_h* out_record)
122 {
123         cal_instance_localtime_s *out_data = NULL;
124         cal_instance_localtime_s *src_data = NULL;
125
126         src_data = (cal_instance_localtime_s*)(record);
127
128         out_data = calloc(1, sizeof(cal_instance_localtime_s));
129         RETVM_IF(NULL == out_data, CALENDAR_ERROR_OUT_OF_MEMORY, "calloc() Fail");
130
131         CAL_RECORD_COPY_COMMON(&(out_data->common), &(src_data->common));
132
133         out_data->event_id = src_data->event_id;
134         out_data->calendar_id = src_data->calendar_id;
135         out_data->start = src_data->start;
136         out_data->end = src_data->end;
137         out_data->summary = cal_strdup(src_data->summary);
138         out_data->description = cal_strdup(src_data->description);
139         out_data->location = cal_strdup(src_data->location);
140         out_data->busy_status = src_data->busy_status;
141         out_data->event_status = src_data->event_status;
142         out_data->priority = src_data->priority;
143         out_data->sensitivity = src_data->sensitivity;
144         out_data->has_rrule = src_data->has_rrule;
145         out_data->latitude = src_data->latitude;
146         out_data->longitude = src_data->longitude;
147         out_data->has_alarm = src_data->has_alarm;
148         out_data->original_event_id = src_data->original_event_id;
149         out_data->last_mod = src_data->last_mod;
150         out_data->sync_data1 = cal_strdup(src_data->sync_data1);
151
152         *out_record = (calendar_record_h)out_data;
153
154         return CALENDAR_ERROR_NONE;
155 }
156
157 static int _cal_record_instance_localtime_get_str(calendar_record_h record, unsigned int property_id, char** out_str)
158 {
159         cal_instance_localtime_s *rec = (cal_instance_localtime_s*)(record);
160         switch (property_id) {
161         case CAL_PROPERTY_INSTANCE_LOCALTIME_SUMMARY:
162                 *out_str = cal_strdup(rec->summary);
163                 break;
164         case CAL_PROPERTY_INSTANCE_LOCALTIME_DESCRIPTION:
165                 *out_str = cal_strdup(rec->description);
166                 break;
167         case CAL_PROPERTY_INSTANCE_LOCALTIME_LOCATION:
168                 *out_str = cal_strdup(rec->location);
169                 break;
170         case CAL_PROPERTY_INSTANCE_LOCALTIME_SYNC_DATA1:
171                 *out_str = cal_strdup(rec->sync_data1);
172                 break;
173         default:
174                 /* LCOV_EXCL_START */
175                 ERR("invalid parameter (property:0x%x)", property_id);
176                 return CALENDAR_ERROR_INVALID_PARAMETER;
177                 /* LCOV_EXCL_STOP */
178         }
179
180         return CALENDAR_ERROR_NONE;
181 }
182
183 static int _cal_record_instance_localtime_get_str_p(calendar_record_h record, unsigned int property_id, char** out_str)
184 {
185         cal_instance_localtime_s *rec = (cal_instance_localtime_s*)(record);
186         switch (property_id) {
187         case CAL_PROPERTY_INSTANCE_LOCALTIME_SUMMARY:
188                 *out_str = (rec->summary);
189                 break;
190         case CAL_PROPERTY_INSTANCE_LOCALTIME_DESCRIPTION:
191                 *out_str = (rec->description);
192                 break;
193         case CAL_PROPERTY_INSTANCE_LOCALTIME_LOCATION:
194                 *out_str = (rec->location);
195                 break;
196         case CAL_PROPERTY_INSTANCE_LOCALTIME_SYNC_DATA1:
197                 *out_str = (rec->sync_data1);
198                 break;
199         default:
200                 /* LCOV_EXCL_START */
201                 ERR("invalid parameter (property:0x%x)", property_id);
202                 return CALENDAR_ERROR_INVALID_PARAMETER;
203                 /* LCOV_EXCL_STOP */
204         }
205
206         return CALENDAR_ERROR_NONE;
207 }
208
209 static int _cal_record_instance_localtime_get_int(calendar_record_h record, unsigned int property_id, int* out_value)
210 {
211         cal_instance_localtime_s *rec = (cal_instance_localtime_s*)(record);
212         switch (property_id) {
213         case CAL_PROPERTY_INSTANCE_LOCALTIME_EVENT_ID:
214                 *out_value = (rec->event_id);
215                 break;
216         case CAL_PROPERTY_INSTANCE_LOCALTIME_BOOK_ID:
217                 *out_value = (rec->calendar_id);
218                 break;
219         case CAL_PROPERTY_INSTANCE_LOCALTIME_BUSY_STATUS:
220                 *out_value = (rec->busy_status);
221                 break;
222         case CAL_PROPERTY_INSTANCE_LOCALTIME_EVENT_STATUS:
223                 *out_value = (rec->event_status);
224                 break;
225         case CAL_PROPERTY_INSTANCE_LOCALTIME_PRIORITY:
226                 *out_value = (rec->priority);
227                 break;
228         case CAL_PROPERTY_INSTANCE_LOCALTIME_SENSITIVITY:
229                 *out_value = (rec->sensitivity);
230                 break;
231         case CAL_PROPERTY_INSTANCE_LOCALTIME_HAS_RRULE:
232                 *out_value = (rec->has_rrule);
233                 break;
234         case CAL_PROPERTY_INSTANCE_LOCALTIME_HAS_ALARM:
235                 *out_value = (rec->has_alarm);
236                 break;
237         case CAL_PROPERTY_INSTANCE_LOCALTIME_ORIGINAL_EVENT_ID:
238                 *out_value = (rec->original_event_id);
239                 break;
240         case CAL_PROPERTY_INSTANCE_LOCALTIME_IS_ALLDAY:
241                 *out_value = (rec->is_allday);
242                 break;
243         default:
244                 /* LCOV_EXCL_START */
245                 ERR("invalid parameter (property:0x%x)", property_id);
246                 return CALENDAR_ERROR_INVALID_PARAMETER;
247                 /* LCOV_EXCL_STOP */
248         }
249
250         return CALENDAR_ERROR_NONE;
251 }
252
253 static int _cal_record_instance_localtime_get_double(calendar_record_h record, unsigned int property_id, double* out_value)
254 {
255         cal_instance_localtime_s *rec = (cal_instance_localtime_s*)(record);
256         switch (property_id) {
257         case CAL_PROPERTY_INSTANCE_LOCALTIME_LATITUDE:
258                 *out_value = (rec->latitude);
259                 break;
260         case CAL_PROPERTY_INSTANCE_LOCALTIME_LONGITUDE:
261                 *out_value = (rec->longitude);
262                 break;
263         default:
264                 /* LCOV_EXCL_START */
265                 ERR("invalid parameter (property:0x%x)", property_id);
266                 return CALENDAR_ERROR_INVALID_PARAMETER;
267                 /* LCOV_EXCL_STOP */
268         }
269
270         return CALENDAR_ERROR_NONE;
271 }
272
273 static int _cal_record_instance_localtime_get_lli(calendar_record_h record, unsigned int property_id, long long int* out_value)
274 {
275         cal_instance_localtime_s *rec = (cal_instance_localtime_s*)(record);
276         switch (property_id) {
277         case CAL_PROPERTY_INSTANCE_LOCALTIME_LAST_MODIFIED_TIME:
278                 *out_value = (rec->last_mod);
279                 break;
280         default:
281                 return CALENDAR_ERROR_INVALID_PARAMETER;
282         }
283
284         return CALENDAR_ERROR_NONE;
285 }
286
287 static int _cal_record_instance_localtime_get_caltime(calendar_record_h record, unsigned int property_id, calendar_time_s* out_value)
288 {
289         cal_instance_localtime_s *rec = (cal_instance_localtime_s*)(record);
290         switch (property_id) {
291         case CAL_PROPERTY_INSTANCE_LOCALTIME_START:
292                 *out_value = rec->start;
293                 break;
294         case CAL_PROPERTY_INSTANCE_LOCALTIME_END:
295                 *out_value = rec->end;
296                 break;
297         default:
298                 /* LCOV_EXCL_START */
299                 ERR("invalid parameter (property:0x%x)", property_id);
300                 return CALENDAR_ERROR_INVALID_PARAMETER;
301                 /* LCOV_EXCL_STOP */
302         }
303
304         return CALENDAR_ERROR_NONE;
305 }
306
307 static int _cal_record_instance_localtime_set_str(calendar_record_h record, unsigned int property_id, const char* value)
308 {
309         cal_instance_localtime_s *rec = (cal_instance_localtime_s*)(record);
310         switch (property_id) {
311         case CAL_PROPERTY_INSTANCE_LOCALTIME_SUMMARY:
312                 CAL_FREE(rec->summary);
313                 rec->summary = cal_strdup(value);
314                 break;
315         case CAL_PROPERTY_INSTANCE_LOCALTIME_DESCRIPTION:
316                 CAL_FREE(rec->description);
317                 rec->description = cal_strdup(value);
318                 break;
319         case CAL_PROPERTY_INSTANCE_LOCALTIME_LOCATION:
320                 CAL_FREE(rec->location);
321                 rec->location = cal_strdup(value);
322                 break;
323         case CAL_PROPERTY_INSTANCE_LOCALTIME_SYNC_DATA1:
324                 CAL_FREE(rec->sync_data1);
325                 rec->sync_data1 = cal_strdup(value);
326                 break;
327         default:
328                 /* LCOV_EXCL_START */
329                 ERR("invalid parameter (property:0x%x)", property_id);
330                 return CALENDAR_ERROR_INVALID_PARAMETER;
331                 /* LCOV_EXCL_STOP */
332         }
333
334         return CALENDAR_ERROR_NONE;
335 }
336
337 static int _cal_record_instance_localtime_set_int(calendar_record_h record, unsigned int property_id, int value)
338 {
339         cal_instance_localtime_s *rec = (cal_instance_localtime_s*)(record);
340         switch (property_id) {
341         case CAL_PROPERTY_INSTANCE_LOCALTIME_EVENT_ID:
342                 (rec->event_id) = value;
343                 break;
344         case CAL_PROPERTY_INSTANCE_LOCALTIME_BOOK_ID:
345                 (rec->calendar_id) = value;
346                 break;
347         case CAL_PROPERTY_INSTANCE_LOCALTIME_BUSY_STATUS:
348                 (rec->busy_status) = value;
349                 break;
350         case CAL_PROPERTY_INSTANCE_LOCALTIME_EVENT_STATUS:
351                 (rec->event_status) = value;
352                 break;
353         case CAL_PROPERTY_INSTANCE_LOCALTIME_PRIORITY:
354                 (rec->priority) = value;
355                 break;
356         case CAL_PROPERTY_INSTANCE_LOCALTIME_SENSITIVITY:
357                 (rec->sensitivity) = value;
358                 break;
359         case CAL_PROPERTY_INSTANCE_LOCALTIME_HAS_RRULE:
360                 (rec->has_rrule) = value;
361                 break;
362         case CAL_PROPERTY_INSTANCE_LOCALTIME_HAS_ALARM:
363                 (rec->has_alarm) = value;
364                 break;
365         case CAL_PROPERTY_INSTANCE_LOCALTIME_ORIGINAL_EVENT_ID:
366                 (rec->original_event_id) = value;
367                 break;
368         default:
369                 /* LCOV_EXCL_START */
370                 ERR("invalid parameter (property:0x%x)", property_id);
371                 return CALENDAR_ERROR_INVALID_PARAMETER;
372                 /* LCOV_EXCL_STOP */
373         }
374
375         return CALENDAR_ERROR_NONE;
376 }
377
378 static int _cal_record_instance_localtime_set_double(calendar_record_h record, unsigned int property_id, double value)
379 {
380         cal_instance_localtime_s *rec = (cal_instance_localtime_s*)(record);
381         switch (property_id) {
382         case CAL_PROPERTY_INSTANCE_LOCALTIME_LATITUDE:
383                 (rec->latitude) = value;
384                 break;
385         case CAL_PROPERTY_INSTANCE_LOCALTIME_LONGITUDE:
386                 (rec->longitude) = value;
387                 break;
388         default:
389                 /* LCOV_EXCL_START */
390                 ERR("invalid parameter (property:0x%x)", property_id);
391                 return CALENDAR_ERROR_INVALID_PARAMETER;
392                 /* LCOV_EXCL_STOP */
393         }
394
395         return CALENDAR_ERROR_NONE;
396 }
397
398 static int _cal_record_instance_localtime_set_caltime(calendar_record_h record, unsigned int property_id, calendar_time_s value)
399 {
400         cal_instance_localtime_s *rec = (cal_instance_localtime_s*)(record);
401         switch (property_id) {
402         case CAL_PROPERTY_INSTANCE_LOCALTIME_START:
403                 rec->start = value;
404                 break;
405         case CAL_PROPERTY_INSTANCE_LOCALTIME_END:
406                 rec->end = value;
407                 break;
408         default:
409                 /* LCOV_EXCL_START */
410                 ERR("invalid parameter (property:0x%x)", property_id);
411                 return CALENDAR_ERROR_INVALID_PARAMETER;
412                 /* LCOV_EXCL_STOP */
413         }
414
415         return CALENDAR_ERROR_NONE;
416 }