4 * Copyright (c) 2010 - 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.
25 #include "ctsvc_internal.h"
26 #include "ctsvc_list.h"
27 #include "ctsvc_record.h"
28 #include "ctsvc_view.h"
30 static int __ctsvc_activity_create(contacts_record_h *out_record);
31 static int __ctsvc_activity_destroy(contacts_record_h record, bool delete_child);
32 static int __ctsvc_activity_clone(contacts_record_h record, contacts_record_h *out_record);
33 static int __ctsvc_activity_get_int(contacts_record_h record, unsigned int property_id, int *out);
34 static int __ctsvc_activity_get_str(contacts_record_h record, unsigned int property_id, char **out_str);
35 static int __ctsvc_activity_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str);
36 static int __ctsvc_activity_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
37 static int __ctsvc_activity_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty);
38 static int __ctsvc_activity_add_child_record(contacts_record_h record, unsigned int property_id, contacts_record_h child_record);
39 static int __ctsvc_activity_remove_child_record(contacts_record_h record, unsigned int property_id, contacts_record_h child_record);
40 static int __ctsvc_activity_get_child_record_count(contacts_record_h record, unsigned int property_id, int *count);
41 static int __ctsvc_activity_get_child_record_at_p(contacts_record_h record, unsigned int property_id, int index, contacts_record_h *out_record);
42 static int __ctsvc_activity_clone_child_record_list(contacts_record_h record, unsigned int property_id, contacts_list_h *out_list);
44 static int __ctsvc_activity_photo_create(contacts_record_h *out_record);
45 static int __ctsvc_activity_photo_destroy(contacts_record_h record, bool delete_child);
46 static int __ctsvc_activity_photo_clone(contacts_record_h record, contacts_record_h *out_record);
47 static int __ctsvc_activity_photo_get_int(contacts_record_h record, unsigned int property_id, int *out);
48 static int __ctsvc_activity_photo_get_str(contacts_record_h record, unsigned int property_id, char **out_str);
49 static int __ctsvc_activity_photo_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str);
50 static int __ctsvc_activity_photo_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
51 static int __ctsvc_activity_photo_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty);
54 static int __ctsvc_address_create(contacts_record_h *out_ecord);
55 static int __ctsvc_address_destroy(contacts_record_h record, bool delete_child);
56 static int __ctsvc_address_clone(contacts_record_h record, contacts_record_h *out_record);
57 static int __ctsvc_address_get_int(contacts_record_h record, unsigned int property_id, int *out);
58 static int __ctsvc_address_get_str(contacts_record_h record, unsigned int property_id, char **out_str);
59 static int __ctsvc_address_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str);
60 static int __ctsvc_address_get_bool(contacts_record_h record, unsigned int property_id, bool *value);
61 static int __ctsvc_address_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
62 static int __ctsvc_address_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty);
63 static int __ctsvc_address_set_bool(contacts_record_h record, unsigned int property_id, bool value, bool *is_dirty);
65 static int __ctsvc_company_create(contacts_record_h *out_record);
66 static int __ctsvc_company_destroy(contacts_record_h record, bool delete_child);
67 static int __ctsvc_company_clone(contacts_record_h record, contacts_record_h *out_record);
68 static int __ctsvc_company_get_int(contacts_record_h record, unsigned int property_id, int *out);
69 static int __ctsvc_company_get_str(contacts_record_h record, unsigned int property_id, char **out_str);
70 static int __ctsvc_company_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str);
71 static int __ctsvc_company_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
72 static int __ctsvc_company_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty);
74 static int __ctsvc_contact_create(contacts_record_h *out_record);
75 static int __ctsvc_contact_destroy(contacts_record_h record, bool delete_child);
76 static int __ctsvc_contact_clone(contacts_record_h record, contacts_record_h *out_record);
77 static int __ctsvc_contact_get_int(contacts_record_h record, unsigned int property_id, int *out);
78 static int __ctsvc_contact_get_str(contacts_record_h record, unsigned int property_id, char **out_str);
79 static int __ctsvc_contact_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str);
80 static int __ctsvc_contact_get_bool(contacts_record_h record, unsigned int property_id, bool *value);
81 static int __ctsvc_contact_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
82 static int __ctsvc_contact_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty);
83 static int __ctsvc_contact_set_bool(contacts_record_h record, unsigned int property_id, bool value, bool *is_dirty);
84 static int __ctsvc_contact_clone_child_record_list(contacts_record_h record, unsigned int property_id, contacts_list_h *out_list);
85 static int __ctsvc_contact_get_child_record_at_p(contacts_record_h record, unsigned int property_id, int index, contacts_record_h *out_record);
86 static int __ctsvc_contact_get_child_record_count(contacts_record_h record, unsigned int property_id, int *count);
87 static int __ctsvc_contact_add_child_record(contacts_record_h record, unsigned int property_id, contacts_record_h child_record);
88 static int __ctsvc_contact_remove_child_record(contacts_record_h record, unsigned int property_id, contacts_record_h child_record);
90 static int __ctsvc_email_create(contacts_record_h *out_record);
91 static int __ctsvc_email_destroy(contacts_record_h record, bool delete_child);
92 static int __ctsvc_email_clone(contacts_record_h record, contacts_record_h *out_record);
93 static int __ctsvc_email_get_int(contacts_record_h record, unsigned int property_id, int *out);
94 static int __ctsvc_email_get_str(contacts_record_h record, unsigned int property_id, char **out_str);
95 static int __ctsvc_email_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str);
96 static int __ctsvc_email_get_bool(contacts_record_h record, unsigned int property_id, bool *value);
97 static int __ctsvc_email_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
98 static int __ctsvc_email_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty);
99 static int __ctsvc_email_set_bool(contacts_record_h record, unsigned int property_id, bool value, bool *is_dirty);
101 static int __ctsvc_event_create(contacts_record_h *out_record);
102 static int __ctsvc_event_destroy(contacts_record_h record, bool delete_child);
103 static int __ctsvc_event_clone(contacts_record_h record, contacts_record_h *out_record);
104 static int __ctsvc_event_get_int(contacts_record_h record, unsigned int property_id, int *out);
105 static int __ctsvc_event_get_str(contacts_record_h record, unsigned int property_id, char **out_str);
106 static int __ctsvc_event_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str);
107 static int __ctsvc_event_get_bool(contacts_record_h record, unsigned int property_id, bool *value);
108 static int __ctsvc_event_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
109 static int __ctsvc_event_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty);
110 static int __ctsvc_event_set_bool(contacts_record_h record, unsigned int property_id, bool value, bool *is_dirty);
112 static int __ctsvc_extension_create(contacts_record_h *out_record);
113 static int __ctsvc_extension_destroy(contacts_record_h record, bool delete_child);
114 static int __ctsvc_extension_clone(contacts_record_h record, contacts_record_h *out_record);
115 static int __ctsvc_extension_get_int(contacts_record_h record, unsigned int property_id, int *out);
116 static int __ctsvc_extension_get_str(contacts_record_h record, unsigned int property_id, char **out_str);
117 static int __ctsvc_extension_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str);
118 static int __ctsvc_extension_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
119 static int __ctsvc_extension_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty);
121 static int __ctsvc_group_relation_create(contacts_record_h *out_record);
122 static int __ctsvc_group_relation_destroy(contacts_record_h record, bool delete_child);
123 static int __ctsvc_group_relation_clone(contacts_record_h record, contacts_record_h *out_record);
124 static int __ctsvc_group_relation_get_int(contacts_record_h record, unsigned int property_id, int *out);
125 static int __ctsvc_group_relation_get_str(contacts_record_h record, unsigned int property_id, char **out_str);
126 static int __ctsvc_group_relation_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str);
127 static int __ctsvc_group_relation_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
128 static int __ctsvc_group_relation_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty);
130 static int __ctsvc_messenger_create(contacts_record_h *out_record);
131 static int __ctsvc_messenger_destroy(contacts_record_h record, bool delete_child);
132 static int __ctsvc_messenger_clone(contacts_record_h record, contacts_record_h *out_record);
133 static int __ctsvc_messenger_get_int(contacts_record_h record, unsigned int property_id, int *out);
134 static int __ctsvc_messenger_get_str(contacts_record_h record, unsigned int property_id, char **out_str);
135 static int __ctsvc_messenger_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str);
136 static int __ctsvc_messenger_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
137 static int __ctsvc_messenger_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty);
139 static int __ctsvc_name_create(contacts_record_h *out_record);
140 static int __ctsvc_name_destroy(contacts_record_h record, bool delete_child);
141 static int __ctsvc_name_clone(contacts_record_h record, contacts_record_h *out_record);
142 static int __ctsvc_name_get_int(contacts_record_h record, unsigned int property_id, int *out);
143 static int __ctsvc_name_get_str(contacts_record_h record, unsigned int property_id, char **out_str);
144 static int __ctsvc_name_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str);
145 static int __ctsvc_name_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
146 static int __ctsvc_name_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty);
148 static int __ctsvc_nickname_create(contacts_record_h *out_record);
149 static int __ctsvc_nickname_destroy(contacts_record_h record, bool delete_child);
150 static int __ctsvc_nickname_clone(contacts_record_h record, contacts_record_h *out_record);
151 static int __ctsvc_nickname_get_int(contacts_record_h record, unsigned int property_id, int *out);
152 static int __ctsvc_nickname_get_str(contacts_record_h record, unsigned int property_id, char **out_str);
153 static int __ctsvc_nickname_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str);
154 static int __ctsvc_nickname_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
155 static int __ctsvc_nickname_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty);
157 static int __ctsvc_note_create(contacts_record_h *out_record);
158 static int __ctsvc_note_destroy(contacts_record_h record, bool delete_child);
159 static int __ctsvc_note_clone(contacts_record_h record, contacts_record_h *out_record);
160 static int __ctsvc_note_get_int(contacts_record_h record, unsigned int property_id, int *out);
161 static int __ctsvc_note_get_str(contacts_record_h record, unsigned int property_id, char **out_str);
162 static int __ctsvc_note_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str);
163 static int __ctsvc_note_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
164 static int __ctsvc_note_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty);
166 static int __ctsvc_number_create(contacts_record_h *out_record);
167 static int __ctsvc_number_destroy(contacts_record_h record, bool delete_child);
168 static int __ctsvc_number_clone(contacts_record_h record, contacts_record_h *out_record);
169 static int __ctsvc_number_get_int(contacts_record_h record, unsigned int property_id, int *out);
170 static int __ctsvc_number_get_str(contacts_record_h record, unsigned int property_id, char **out_str);
171 static int __ctsvc_number_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str);
172 static int __ctsvc_number_get_bool(contacts_record_h record, unsigned int property_id, bool *value);
173 static int __ctsvc_number_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
174 static int __ctsvc_number_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty);
175 static int __ctsvc_number_set_bool(contacts_record_h record, unsigned int property_id, bool value, bool *is_dirty);
177 static int __ctsvc_profile_create(contacts_record_h *out_record);
178 static int __ctsvc_profile_destroy(contacts_record_h record, bool delete_child);
179 static int __ctsvc_profile_clone(contacts_record_h record, contacts_record_h *out_reord);
180 static int __ctsvc_profile_get_int(contacts_record_h record, unsigned int property_id, int *out);
181 static int __ctsvc_profile_get_str(contacts_record_h record, unsigned int property_id, char **out_str);
182 static int __ctsvc_profile_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str);
183 static int __ctsvc_profile_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
184 static int __ctsvc_profile_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty);
186 static int __ctsvc_relationship_create(contacts_record_h *out_record);
187 static int __ctsvc_relationship_destroy(contacts_record_h record, bool delete_child);
188 static int __ctsvc_relationship_clone(contacts_record_h record, contacts_record_h *out_record);
189 static int __ctsvc_relationship_get_int(contacts_record_h record, unsigned int property_id, int *out);
190 static int __ctsvc_relationship_get_str(contacts_record_h record, unsigned int property_id, char **out_str);
191 static int __ctsvc_relationship_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str);
192 static int __ctsvc_relationship_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
193 static int __ctsvc_relationship_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty);
195 static int __ctsvc_image_create(contacts_record_h *out_record);
196 static int __ctsvc_image_destroy(contacts_record_h record, bool delete_child);
197 static int __ctsvc_image_clone(contacts_record_h record, contacts_record_h *out_record);
198 static int __ctsvc_image_get_int(contacts_record_h record, unsigned int property_id, int *out);
199 static int __ctsvc_image_get_str(contacts_record_h record, unsigned int property_id, char **out_str);
200 static int __ctsvc_image_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str);
201 static int __ctsvc_image_get_bool(contacts_record_h record, unsigned int property_id, bool *value);
202 static int __ctsvc_image_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
203 static int __ctsvc_image_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty);
204 static int __ctsvc_image_set_bool(contacts_record_h record, unsigned int property_id, bool value, bool *is_dirty);
206 static int __ctsvc_simple_contact_create(contacts_record_h *out_record);
207 static int __ctsvc_simple_contact_destroy(contacts_record_h record, bool delete_child);
208 static int __ctsvc_simple_contact_clone(contacts_record_h record, contacts_record_h *out_record);
209 static int __ctsvc_simple_contact_get_bool(contacts_record_h record, unsigned int property_id, bool *out);
210 static int __ctsvc_simple_contact_get_int(contacts_record_h record, unsigned int property_id, int *out);
211 static int __ctsvc_simple_contact_get_str(contacts_record_h record, unsigned int property_id, char **out_str);
212 static int __ctsvc_simple_contact_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str);
213 static int __ctsvc_simple_contact_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
214 static int __ctsvc_simple_contact_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty);
216 static int __ctsvc_url_create(contacts_record_h *out_record);
217 static int __ctsvc_url_destroy(contacts_record_h record, bool delete_child);
218 static int __ctsvc_url_clone(contacts_record_h record, contacts_record_h *out_record);
219 static int __ctsvc_url_get_int(contacts_record_h record, unsigned int property_id, int *out);
220 static int __ctsvc_url_get_str(contacts_record_h record, unsigned int property_id, char **out_str);
221 static int __ctsvc_url_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str);
222 static int __ctsvc_url_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
223 static int __ctsvc_url_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty);
225 static int __ctsvc_sip_create(contacts_record_h *out_record);
226 static int __ctsvc_sip_destroy(contacts_record_h record, bool delete_child);
227 static int __ctsvc_sip_clone(contacts_record_h record, contacts_record_h *out_record);
228 static int __ctsvc_sip_get_int(contacts_record_h record, unsigned int property_id, int *out);
229 static int __ctsvc_sip_get_str(contacts_record_h record, unsigned int property_id, char** out_str);
230 static int __ctsvc_sip_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str);
231 static int __ctsvc_sip_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
232 static int __ctsvc_sip_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty);
234 static GHashTable *__ctsvc_temp_image_file_hash_table = NULL;
236 ctsvc_record_plugin_cb_s name_plugin_cbs = {
237 .create = __ctsvc_name_create,
238 .destroy = __ctsvc_name_destroy,
239 .clone = __ctsvc_name_clone,
240 .get_str = __ctsvc_name_get_str,
241 .get_str_p = __ctsvc_name_get_str_p,
242 .get_int = __ctsvc_name_get_int,
246 .set_str = __ctsvc_name_set_str,
247 .set_int = __ctsvc_name_set_int,
251 .add_child_record = NULL,
252 .remove_child_record = NULL,
253 .get_child_record_count = NULL,
254 .get_child_record_at_p = NULL,
255 .clone_child_record_list = NULL,
258 ctsvc_record_plugin_cb_s number_plugin_cbs = {
259 .create = __ctsvc_number_create,
260 .destroy = __ctsvc_number_destroy,
261 .clone = __ctsvc_number_clone,
262 .get_str = __ctsvc_number_get_str,
263 .get_str_p = __ctsvc_number_get_str_p,
264 .get_int = __ctsvc_number_get_int,
265 .get_bool = __ctsvc_number_get_bool,
268 .set_str = __ctsvc_number_set_str,
269 .set_int = __ctsvc_number_set_int,
270 .set_bool = __ctsvc_number_set_bool,
273 .add_child_record = NULL,
274 .remove_child_record = NULL,
275 .get_child_record_count = NULL,
276 .get_child_record_at_p = NULL,
277 .clone_child_record_list = NULL,
280 ctsvc_record_plugin_cb_s address_plugin_cbs = {
281 .create = __ctsvc_address_create,
282 .destroy = __ctsvc_address_destroy,
283 .clone = __ctsvc_address_clone,
284 .get_str = __ctsvc_address_get_str,
285 .get_str_p = __ctsvc_address_get_str_p,
286 .get_int = __ctsvc_address_get_int,
287 .get_bool = __ctsvc_address_get_bool,
290 .set_str = __ctsvc_address_set_str,
291 .set_int = __ctsvc_address_set_int,
292 .set_bool = __ctsvc_address_set_bool,
295 .add_child_record = NULL,
296 .remove_child_record = NULL,
297 .get_child_record_count = NULL,
298 .get_child_record_at_p = NULL,
299 .clone_child_record_list = NULL,
302 ctsvc_record_plugin_cb_s url_plugin_cbs = {
303 .create = __ctsvc_url_create,
304 .destroy = __ctsvc_url_destroy,
305 .clone = __ctsvc_url_clone,
306 .get_str = __ctsvc_url_get_str,
307 .get_str_p = __ctsvc_url_get_str_p,
308 .get_int = __ctsvc_url_get_int,
312 .set_str = __ctsvc_url_set_str,
313 .set_int = __ctsvc_url_set_int,
317 .add_child_record = NULL,
318 .remove_child_record = NULL,
319 .get_child_record_count = NULL,
320 .get_child_record_at_p = NULL,
321 .clone_child_record_list = NULL,
324 ctsvc_record_plugin_cb_s event_plugin_cbs = {
325 .create = __ctsvc_event_create,
326 .destroy = __ctsvc_event_destroy,
327 .clone = __ctsvc_event_clone,
328 .get_str = __ctsvc_event_get_str,
329 .get_str_p = __ctsvc_event_get_str_p,
330 .get_int = __ctsvc_event_get_int,
331 .get_bool = __ctsvc_event_get_bool,
334 .set_str = __ctsvc_event_set_str,
335 .set_int = __ctsvc_event_set_int,
336 .set_bool = __ctsvc_event_set_bool,
339 .add_child_record = NULL,
340 .remove_child_record = NULL,
341 .get_child_record_count = NULL,
342 .get_child_record_at_p = NULL,
343 .clone_child_record_list = NULL,
346 ctsvc_record_plugin_cb_s messenger_plugin_cbs = {
347 .create = __ctsvc_messenger_create,
348 .destroy = __ctsvc_messenger_destroy,
349 .clone = __ctsvc_messenger_clone,
350 .get_str = __ctsvc_messenger_get_str,
351 .get_str_p = __ctsvc_messenger_get_str_p,
352 .get_int = __ctsvc_messenger_get_int,
356 .set_str = __ctsvc_messenger_set_str,
357 .set_int = __ctsvc_messenger_set_int,
361 .add_child_record = NULL,
362 .remove_child_record = NULL,
363 .get_child_record_count = NULL,
364 .get_child_record_at_p = NULL,
365 .clone_child_record_list = NULL,
368 ctsvc_record_plugin_cb_s activity_plugin_cbs = {
369 .create = __ctsvc_activity_create,
370 .destroy = __ctsvc_activity_destroy,
371 .clone = __ctsvc_activity_clone,
372 .get_str = __ctsvc_activity_get_str,
373 .get_str_p = __ctsvc_activity_get_str_p,
374 .get_int = __ctsvc_activity_get_int,
378 .set_str = __ctsvc_activity_set_str,
379 .set_int = __ctsvc_activity_set_int,
383 .add_child_record = __ctsvc_activity_add_child_record,
384 .remove_child_record = __ctsvc_activity_remove_child_record,
385 .get_child_record_count = __ctsvc_activity_get_child_record_count,
386 .get_child_record_at_p = __ctsvc_activity_get_child_record_at_p,
387 .clone_child_record_list = __ctsvc_activity_clone_child_record_list,
390 ctsvc_record_plugin_cb_s activity_photo_plugin_cbs = {
391 .create = __ctsvc_activity_photo_create,
392 .destroy = __ctsvc_activity_photo_destroy,
393 .clone = __ctsvc_activity_photo_clone,
394 .get_str = __ctsvc_activity_photo_get_str,
395 .get_str_p = __ctsvc_activity_photo_get_str_p,
396 .get_int = __ctsvc_activity_photo_get_int,
400 .set_str = __ctsvc_activity_photo_set_str,
401 .set_int = __ctsvc_activity_photo_set_int,
405 .add_child_record = NULL,
406 .remove_child_record = NULL,
407 .get_child_record_count = NULL,
408 .get_child_record_at_p = NULL,
409 .clone_child_record_list = NULL,
412 ctsvc_record_plugin_cb_s relationship_plugin_cbs = {
413 .create = __ctsvc_relationship_create,
414 .destroy = __ctsvc_relationship_destroy,
415 .clone = __ctsvc_relationship_clone,
416 .get_str = __ctsvc_relationship_get_str,
417 .get_str_p = __ctsvc_relationship_get_str_p,
418 .get_int = __ctsvc_relationship_get_int,
422 .set_str = __ctsvc_relationship_set_str,
423 .set_int = __ctsvc_relationship_set_int,
427 .add_child_record = NULL,
428 .remove_child_record = NULL,
429 .get_child_record_count = NULL,
430 .get_child_record_at_p = NULL,
431 .clone_child_record_list = NULL,
434 ctsvc_record_plugin_cb_s image_plugin_cbs = {
435 .create = __ctsvc_image_create,
436 .destroy = __ctsvc_image_destroy,
437 .clone = __ctsvc_image_clone,
438 .get_str = __ctsvc_image_get_str,
439 .get_str_p = __ctsvc_image_get_str_p,
440 .get_int = __ctsvc_image_get_int,
441 .get_bool = __ctsvc_image_get_bool,
444 .set_str = __ctsvc_image_set_str,
445 .set_int = __ctsvc_image_set_int,
446 .set_bool = __ctsvc_image_set_bool,
449 .add_child_record = NULL,
450 .remove_child_record = NULL,
451 .get_child_record_count = NULL,
452 .get_child_record_at_p = NULL,
453 .clone_child_record_list = NULL,
456 ctsvc_record_plugin_cb_s group_relation_plugin_cbs = {
457 .create = __ctsvc_group_relation_create,
458 .destroy = __ctsvc_group_relation_destroy,
459 .clone = __ctsvc_group_relation_clone,
460 .get_str = __ctsvc_group_relation_get_str,
461 .get_str_p = __ctsvc_group_relation_get_str_p,
462 .get_int = __ctsvc_group_relation_get_int,
466 .set_str = __ctsvc_group_relation_set_str,
467 .set_int = __ctsvc_group_relation_set_int,
471 .add_child_record = NULL,
472 .remove_child_record = NULL,
473 .get_child_record_count = NULL,
474 .get_child_record_at_p = NULL,
475 .clone_child_record_list = NULL,
478 ctsvc_record_plugin_cb_s note_plugin_cbs = {
479 .create = __ctsvc_note_create,
480 .destroy = __ctsvc_note_destroy,
481 .clone = __ctsvc_note_clone,
482 .get_str = __ctsvc_note_get_str,
483 .get_str_p = __ctsvc_note_get_str_p,
484 .get_int = __ctsvc_note_get_int,
488 .set_str = __ctsvc_note_set_str,
489 .set_int = __ctsvc_note_set_int,
493 .add_child_record = NULL,
494 .remove_child_record = NULL,
495 .get_child_record_count = NULL,
496 .get_child_record_at_p = NULL,
497 .clone_child_record_list = NULL,
500 ctsvc_record_plugin_cb_s company_plugin_cbs = {
501 .create = __ctsvc_company_create,
502 .destroy = __ctsvc_company_destroy,
503 .clone = __ctsvc_company_clone,
504 .get_str = __ctsvc_company_get_str,
505 .get_str_p = __ctsvc_company_get_str_p,
506 .get_int = __ctsvc_company_get_int,
510 .set_str = __ctsvc_company_set_str,
511 .set_int = __ctsvc_company_set_int,
515 .add_child_record = NULL,
516 .remove_child_record = NULL,
517 .get_child_record_count = NULL,
518 .get_child_record_at_p = NULL,
519 .clone_child_record_list = NULL,
522 ctsvc_record_plugin_cb_s profile_plugin_cbs = {
523 .create = __ctsvc_profile_create,
524 .destroy = __ctsvc_profile_destroy,
525 .clone = __ctsvc_profile_clone,
526 .get_str = __ctsvc_profile_get_str,
527 .get_str_p = __ctsvc_profile_get_str_p,
528 .get_int = __ctsvc_profile_get_int,
532 .set_str = __ctsvc_profile_set_str,
533 .set_int = __ctsvc_profile_set_int,
537 .add_child_record = NULL,
538 .remove_child_record = NULL,
539 .get_child_record_count = NULL,
540 .get_child_record_at_p = NULL,
541 .clone_child_record_list = NULL,
544 ctsvc_record_plugin_cb_s nickname_plugin_cbs = {
545 .create = __ctsvc_nickname_create,
546 .destroy = __ctsvc_nickname_destroy,
547 .clone = __ctsvc_nickname_clone,
548 .get_str = __ctsvc_nickname_get_str,
549 .get_str_p = __ctsvc_nickname_get_str_p,
550 .get_int = __ctsvc_nickname_get_int,
554 .set_str = __ctsvc_nickname_set_str,
555 .set_int = __ctsvc_nickname_set_int,
559 .add_child_record = NULL,
560 .remove_child_record = NULL,
561 .get_child_record_count = NULL,
562 .get_child_record_at_p = NULL,
563 .clone_child_record_list = NULL,
566 ctsvc_record_plugin_cb_s email_plugin_cbs = {
567 .create = __ctsvc_email_create,
568 .destroy = __ctsvc_email_destroy,
569 .clone = __ctsvc_email_clone,
570 .get_str = __ctsvc_email_get_str,
571 .get_str_p = __ctsvc_email_get_str_p,
572 .get_int = __ctsvc_email_get_int,
573 .get_bool = __ctsvc_email_get_bool,
576 .set_str = __ctsvc_email_set_str,
577 .set_int = __ctsvc_email_set_int,
578 .set_bool = __ctsvc_email_set_bool,
581 .add_child_record = NULL,
582 .remove_child_record = NULL,
583 .get_child_record_count = NULL,
584 .get_child_record_at_p = NULL,
585 .clone_child_record_list = NULL,
588 ctsvc_record_plugin_cb_s extension_plugin_cbs = {
589 .create = __ctsvc_extension_create,
590 .destroy = __ctsvc_extension_destroy,
591 .clone = __ctsvc_extension_clone,
592 .get_str = __ctsvc_extension_get_str,
593 .get_str_p = __ctsvc_extension_get_str_p,
594 .get_int = __ctsvc_extension_get_int,
598 .set_str = __ctsvc_extension_set_str,
599 .set_int = __ctsvc_extension_set_int,
603 .add_child_record = NULL,
604 .remove_child_record = NULL,
605 .get_child_record_count = NULL,
606 .get_child_record_at_p = NULL,
607 .clone_child_record_list = NULL,
610 ctsvc_record_plugin_cb_s contact_plugin_cbs = {
611 .create = __ctsvc_contact_create,
612 .destroy = __ctsvc_contact_destroy,
613 .clone = __ctsvc_contact_clone,
614 .get_str = __ctsvc_contact_get_str,
615 .get_str_p = __ctsvc_contact_get_str_p,
616 .get_int = __ctsvc_contact_get_int,
617 .get_bool = __ctsvc_contact_get_bool,
620 .set_str = __ctsvc_contact_set_str,
621 .set_int = __ctsvc_contact_set_int,
622 .set_bool = __ctsvc_contact_set_bool,
625 .add_child_record = __ctsvc_contact_add_child_record,
626 .remove_child_record = __ctsvc_contact_remove_child_record,
627 .get_child_record_count = __ctsvc_contact_get_child_record_count,
628 .get_child_record_at_p = __ctsvc_contact_get_child_record_at_p,
629 .clone_child_record_list = __ctsvc_contact_clone_child_record_list,
632 ctsvc_record_plugin_cb_s simple_contact_plugin_cbs = {
633 .create = __ctsvc_simple_contact_create,
634 .destroy = __ctsvc_simple_contact_destroy,
635 .clone = __ctsvc_simple_contact_clone,
636 .get_str = __ctsvc_simple_contact_get_str,
637 .get_str_p = __ctsvc_simple_contact_get_str_p,
638 .get_int = __ctsvc_simple_contact_get_int,
639 .get_bool = __ctsvc_simple_contact_get_bool,
642 .set_str = __ctsvc_simple_contact_set_str,
643 .set_int = __ctsvc_simple_contact_set_int,
647 .add_child_record = NULL,
648 .remove_child_record = NULL,
649 .get_child_record_count = NULL,
650 .get_child_record_at_p = NULL,
651 .clone_child_record_list = NULL,
654 ctsvc_record_plugin_cb_s sip_plugin_cbs = {
655 .create = __ctsvc_sip_create,
656 .destroy = __ctsvc_sip_destroy,
657 .clone = __ctsvc_sip_clone,
658 .get_str = __ctsvc_sip_get_str,
659 .get_str_p = __ctsvc_sip_get_str_p,
660 .get_int = __ctsvc_sip_get_int,
664 .set_str = __ctsvc_sip_set_str,
665 .set_int = __ctsvc_sip_set_int,
669 .add_child_record = NULL,
670 .remove_child_record = NULL,
671 .get_child_record_count = NULL,
672 .get_child_record_at_p = NULL,
673 .clone_child_record_list = NULL,
677 static int __ctsvc_activity_create(contacts_record_h *out_record)
679 ctsvc_activity_s *activity;
680 activity = calloc(1, sizeof(ctsvc_activity_s));
681 RETVM_IF(NULL == activity, CONTACTS_ERROR_OUT_OF_MEMORY,
684 activity->photos = calloc(1, sizeof(ctsvc_list_s));
685 if (NULL == activity->photos) {
686 /* LCOV_EXCL_START */
687 ERR("calloc() Fail");
689 return CONTACTS_ERROR_OUT_OF_MEMORY;
692 activity->photos->l_type = CTSVC_RECORD_ACTIVITY_PHOTO;
694 *out_record = (contacts_record_h)activity;
695 return CONTACTS_ERROR_NONE;
698 static int __ctsvc_activity_photo_create(contacts_record_h *out_record)
700 ctsvc_activity_photo_s *photo;
701 photo = calloc(1, sizeof(ctsvc_activity_photo_s));
702 RETVM_IF(NULL == photo, CONTACTS_ERROR_OUT_OF_MEMORY,
705 *out_record = (contacts_record_h)photo;
706 return CONTACTS_ERROR_NONE;
709 static int __ctsvc_address_create(contacts_record_h *out_record)
711 ctsvc_address_s *address;
712 address = calloc(1, sizeof(ctsvc_address_s));
713 RETVM_IF(NULL == address, CONTACTS_ERROR_OUT_OF_MEMORY,
716 *out_record = (contacts_record_h)address;
717 return CONTACTS_ERROR_NONE;
720 static int __ctsvc_company_create(contacts_record_h *out_record)
722 ctsvc_company_s *company;
723 company = calloc(1, sizeof(ctsvc_company_s));
724 RETVM_IF(NULL == company, CONTACTS_ERROR_OUT_OF_MEMORY,
727 *out_record = (contacts_record_h)company;
728 return CONTACTS_ERROR_NONE;
731 static int __ctsvc_email_create(contacts_record_h *out_record)
733 ctsvc_email_s *email;
734 email = calloc(1, sizeof(ctsvc_email_s));
735 RETVM_IF(NULL == email, CONTACTS_ERROR_OUT_OF_MEMORY,
738 *out_record = (contacts_record_h)email;
739 return CONTACTS_ERROR_NONE;
742 static int __ctsvc_event_create(contacts_record_h *out_record)
744 ctsvc_event_s *event;
745 event = calloc(1, sizeof(ctsvc_event_s));
746 RETVM_IF(NULL == event, CONTACTS_ERROR_OUT_OF_MEMORY,
749 *out_record = (contacts_record_h)event;
750 return CONTACTS_ERROR_NONE;
753 static int __ctsvc_extension_create(contacts_record_h *out_record)
755 ctsvc_extension_s *extension;
756 extension = calloc(1, sizeof(ctsvc_extension_s));
757 RETVM_IF(NULL == extension, CONTACTS_ERROR_OUT_OF_MEMORY,
760 *out_record = (contacts_record_h)extension;
761 return CONTACTS_ERROR_NONE;
764 static int __ctsvc_group_relation_create(contacts_record_h *out_record)
766 ctsvc_group_relation_s *group_relation;
767 group_relation = calloc(1, sizeof(ctsvc_group_relation_s));
768 RETVM_IF(NULL == group_relation, CONTACTS_ERROR_OUT_OF_MEMORY,
771 *out_record = (contacts_record_h)group_relation;
772 return CONTACTS_ERROR_NONE;
775 static int __ctsvc_messenger_create(contacts_record_h *out_record)
777 ctsvc_messenger_s *messenger;
778 messenger = calloc(1, sizeof(ctsvc_messenger_s));
779 RETVM_IF(NULL == messenger, CONTACTS_ERROR_OUT_OF_MEMORY,
782 *out_record = (contacts_record_h)messenger;
783 return CONTACTS_ERROR_NONE;
786 static int __ctsvc_name_create(contacts_record_h *out_record)
789 name = calloc(1, sizeof(ctsvc_name_s));
790 RETVM_IF(NULL == name, CONTACTS_ERROR_OUT_OF_MEMORY,
793 *out_record = (contacts_record_h)name;
794 return CONTACTS_ERROR_NONE;
797 static int __ctsvc_nickname_create(contacts_record_h *out_record)
799 ctsvc_nickname_s *nickname;
800 nickname = calloc(1, sizeof(ctsvc_nickname_s));
801 RETVM_IF(NULL == nickname, CONTACTS_ERROR_OUT_OF_MEMORY,
804 *out_record = (contacts_record_h)nickname;
805 return CONTACTS_ERROR_NONE;
808 static int __ctsvc_note_create(contacts_record_h *out_record)
811 note = calloc(1, sizeof(ctsvc_note_s));
812 RETVM_IF(NULL == note, CONTACTS_ERROR_OUT_OF_MEMORY,
815 *out_record = (contacts_record_h)note;
816 return CONTACTS_ERROR_NONE;
819 static int __ctsvc_number_create(contacts_record_h *out_record)
821 ctsvc_number_s *number;
822 number = calloc(1, sizeof(ctsvc_number_s));
823 RETVM_IF(NULL == number, CONTACTS_ERROR_OUT_OF_MEMORY,
826 *out_record = (contacts_record_h)number;
827 return CONTACTS_ERROR_NONE;
830 static int __ctsvc_profile_create(contacts_record_h *out_record)
832 ctsvc_profile_s *profile;
833 profile = calloc(1, sizeof(ctsvc_profile_s));
834 RETVM_IF(NULL == profile, CONTACTS_ERROR_OUT_OF_MEMORY,
837 *out_record = (contacts_record_h)profile;
838 return CONTACTS_ERROR_NONE;
841 static int __ctsvc_relationship_create(contacts_record_h *out_record)
843 ctsvc_relationship_s *relationship;
844 relationship = calloc(1, sizeof(ctsvc_relationship_s));
845 RETVM_IF(NULL == relationship, CONTACTS_ERROR_OUT_OF_MEMORY,
848 *out_record = (contacts_record_h)relationship;
849 return CONTACTS_ERROR_NONE;
852 static int __ctsvc_image_create(contacts_record_h *out_record)
854 ctsvc_image_s *image;
855 image = calloc(1, sizeof(ctsvc_image_s));
856 RETVM_IF(NULL == image, CONTACTS_ERROR_OUT_OF_MEMORY,
859 *out_record = (contacts_record_h)image;
860 return CONTACTS_ERROR_NONE;
863 static int __ctsvc_simple_contact_create(contacts_record_h *out_record)
865 ctsvc_simple_contact_s *simple_contact;
866 simple_contact = calloc(1, sizeof(ctsvc_simple_contact_s));
867 RETVM_IF(NULL == simple_contact, CONTACTS_ERROR_OUT_OF_MEMORY,
870 *out_record = (contacts_record_h)simple_contact;
871 return CONTACTS_ERROR_NONE;
874 static int __ctsvc_url_create(contacts_record_h *out_record)
877 url = calloc(1, sizeof(ctsvc_url_s));
878 RETVM_IF(NULL == url, CONTACTS_ERROR_OUT_OF_MEMORY,
881 *out_record = (contacts_record_h)url;
882 return CONTACTS_ERROR_NONE;
885 static int __ctsvc_sip_create(contacts_record_h *out_record)
888 sip = calloc(1, sizeof(ctsvc_sip_s));
889 RETVM_IF(NULL == sip, CONTACTS_ERROR_OUT_OF_MEMORY,
892 *out_record = (contacts_record_h)sip;
893 return CONTACTS_ERROR_NONE;
896 static int __ctsvc_name_destroy(contacts_record_h record, bool delete_child)
898 ctsvc_name_s *name = (ctsvc_name_s*)record;
899 name->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
900 free(name->base.properties_flags);
904 free(name->addition);
907 free(name->phonetic_first);
908 free(name->phonetic_middle);
909 free(name->phonetic_last);
911 free(name->reverse_lookup);
914 return CONTACTS_ERROR_NONE;
917 static void __ctsvc_temp_image_hash_table_insert(char *filename)
920 if (NULL == __ctsvc_temp_image_file_hash_table)
921 __ctsvc_temp_image_file_hash_table = g_hash_table_new(g_str_hash, g_str_equal);
923 count = GPOINTER_TO_INT(g_hash_table_lookup(__ctsvc_temp_image_file_hash_table, filename));
924 g_hash_table_insert(__ctsvc_temp_image_file_hash_table, filename, GINT_TO_POINTER(count+1));
927 static void __ctsvc_temp_image_hash_table_remove(char *filename)
931 if (NULL == __ctsvc_temp_image_file_hash_table) {
932 if (unlink(filename) < 0)
933 WARN("unlink Fail(%d)", errno);
937 count = GPOINTER_TO_INT(g_hash_table_lookup(__ctsvc_temp_image_file_hash_table, filename));
939 if (unlink(filename) < 0)
940 WARN("unlink Fail(%d)", errno);
941 } else if (1 == count) {
942 g_hash_table_remove(__ctsvc_temp_image_file_hash_table, filename);
943 if (0 == g_hash_table_size(__ctsvc_temp_image_file_hash_table)) {
944 g_hash_table_destroy(__ctsvc_temp_image_file_hash_table);
945 __ctsvc_temp_image_file_hash_table = NULL;
948 g_hash_table_insert(__ctsvc_temp_image_file_hash_table, filename, GINT_TO_POINTER(count-1));
952 static int __ctsvc_company_destroy(contacts_record_h record, bool delete_child)
954 ctsvc_company_s *company = (ctsvc_company_s*)record;
955 company->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
956 free(company->base.properties_flags);
958 free(company->label);
960 free(company->department);
961 free(company->job_title);
963 free(company->assistant_name);
964 if (company->logo && company->is_vcard)
965 __ctsvc_temp_image_hash_table_remove(company->logo);
967 free(company->location);
968 free(company->description);
969 free(company->phonetic_name);
972 return CONTACTS_ERROR_NONE;
975 static int __ctsvc_note_destroy(contacts_record_h record, bool delete_child)
977 ctsvc_note_s *note = (ctsvc_note_s*)record;
978 note->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
979 free(note->base.properties_flags);
984 return CONTACTS_ERROR_NONE;
987 static int __ctsvc_number_destroy(contacts_record_h record, bool delete_child)
989 ctsvc_number_s *number = (ctsvc_number_s*)record;
990 number->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
991 free(number->base.properties_flags);
994 free(number->number);
995 free(number->normalized);
996 free(number->cleaned);
997 free(number->lookup);
1000 return CONTACTS_ERROR_NONE;
1003 static int __ctsvc_email_destroy(contacts_record_h record, bool delete_child)
1005 ctsvc_email_s *email = (ctsvc_email_s*)record;
1006 email->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
1007 free(email->base.properties_flags);
1010 free(email->email_addr);
1013 return CONTACTS_ERROR_NONE;
1016 static int __ctsvc_group_relation_destroy(contacts_record_h record, bool delete_child)
1018 ctsvc_group_relation_s *group = (ctsvc_group_relation_s*)record;
1019 group->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
1020 free(group->base.properties_flags);
1022 free(group->group_name);
1025 return CONTACTS_ERROR_NONE;
1028 static int __ctsvc_activity_destroy(contacts_record_h record, bool delete_child)
1030 ctsvc_activity_s *activity = (ctsvc_activity_s*)record;
1031 activity->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
1032 free(activity->base.properties_flags);
1034 free(activity->source_name);
1035 free(activity->status);
1036 free(activity->service_operation);
1037 free(activity->uri);
1038 contacts_list_destroy((contacts_list_h)activity->photos, delete_child);
1041 return CONTACTS_ERROR_NONE;
1044 static int __ctsvc_activity_photo_destroy(contacts_record_h record, bool delete_child)
1046 ctsvc_activity_photo_s *photo = (ctsvc_activity_photo_s*)record;
1047 photo->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
1048 free(photo->base.properties_flags);
1050 free(photo->photo_url);
1053 return CONTACTS_ERROR_NONE;
1056 static int __ctsvc_event_destroy(contacts_record_h record, bool delete_child)
1058 ctsvc_event_s *event = (ctsvc_event_s*)record;
1059 event->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
1060 free(event->base.properties_flags);
1065 return CONTACTS_ERROR_NONE;
1068 static int __ctsvc_messenger_destroy(contacts_record_h record, bool delete_child)
1070 ctsvc_messenger_s *messenger = (ctsvc_messenger_s*)record;
1071 messenger->base.plugin_cbs = NULL;
1072 free(messenger->base.properties_flags);
1074 free(messenger->label);
1075 free(messenger->im_id);
1078 return CONTACTS_ERROR_NONE;
1081 static int __ctsvc_address_destroy(contacts_record_h record, bool delete_child)
1083 ctsvc_address_s *address = (ctsvc_address_s*)record;
1084 address->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
1085 free(address->base.properties_flags);
1087 free(address->label);
1088 free(address->pobox);
1089 free(address->postalcode);
1090 free(address->region);
1091 free(address->locality);
1092 free(address->street);
1093 free(address->extended);
1094 free(address->country);
1097 return CONTACTS_ERROR_NONE;
1099 static int __ctsvc_url_destroy(contacts_record_h record, bool delete_child)
1101 ctsvc_url_s *url = (ctsvc_url_s*)record;
1102 url->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
1103 free(url->base.properties_flags);
1109 return CONTACTS_ERROR_NONE;
1111 static int __ctsvc_nickname_destroy(contacts_record_h record, bool delete_child)
1113 ctsvc_nickname_s *nickname = (ctsvc_nickname_s*)record;
1114 nickname->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
1115 free(nickname->base.properties_flags);
1117 free(nickname->label);
1118 free(nickname->nickname);
1121 return CONTACTS_ERROR_NONE;
1124 static int __ctsvc_profile_destroy(contacts_record_h record, bool delete_child)
1126 ctsvc_profile_s *profile = (ctsvc_profile_s*)record;
1127 profile->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
1128 free(profile->base.properties_flags);
1131 free(profile->text);
1132 free(profile->service_operation);
1133 free(profile->mime);
1134 free(profile->app_id);
1136 free(profile->category);
1137 free(profile->extra_data);
1140 return CONTACTS_ERROR_NONE;
1142 static int __ctsvc_relationship_destroy(contacts_record_h record, bool delete_child)
1144 ctsvc_relationship_s *relationship = (ctsvc_relationship_s*)record;
1145 relationship->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
1146 free(relationship->base.properties_flags);
1148 free(relationship->label);
1149 free(relationship->name);
1152 return CONTACTS_ERROR_NONE;
1155 static int __ctsvc_image_destroy(contacts_record_h record, bool delete_child)
1157 ctsvc_image_s *image = (ctsvc_image_s*)record;
1158 image->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
1159 free(image->base.properties_flags);
1162 if (image->path && image->is_vcard)
1163 __ctsvc_temp_image_hash_table_remove(image->path);
1167 return CONTACTS_ERROR_NONE;
1170 static int __ctsvc_extension_destroy(contacts_record_h record, bool delete_child)
1172 ctsvc_extension_s *data = (ctsvc_extension_s*)record;
1173 data->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
1174 free(data->base.properties_flags);
1189 return CONTACTS_ERROR_NONE;
1192 static int __ctsvc_simple_contact_destroy(contacts_record_h record, bool delete_child)
1194 ctsvc_simple_contact_s *contact = (ctsvc_simple_contact_s*)record;
1196 /* help to find double destroy bug (refer to the contacts_record_destroy) */
1197 contact->base.plugin_cbs = NULL;
1199 free(contact->base.properties_flags);
1200 free(contact->display_name);
1201 free(contact->image_thumbnail_path);
1202 free(contact->ringtone_path);
1203 free(contact->vibration);
1204 free(contact->message_alert);
1208 return CONTACTS_ERROR_NONE;
1211 static int __ctsvc_sip_destroy(contacts_record_h record, bool delete_child)
1213 ctsvc_sip_s *sip = (ctsvc_sip_s*)record;
1214 sip->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
1215 free(sip->base.properties_flags);
1221 return CONTACTS_ERROR_NONE;
1224 static int __ctsvc_contact_create(contacts_record_h *out_record)
1226 ctsvc_contact_s *contact;
1228 contact = calloc(1, sizeof(ctsvc_contact_s));
1229 RETVM_IF(NULL == contact, CONTACTS_ERROR_OUT_OF_MEMORY,
1233 contact->name = calloc(1, sizeof(ctsvc_list_s));
1234 if (NULL == contact->name)
1236 contact->name->l_type = CTSVC_RECORD_NAME;
1238 contact->company = calloc(1, sizeof(ctsvc_list_s));
1239 if (NULL == contact->company)
1241 contact->company->l_type = CTSVC_RECORD_COMPANY;
1243 contact->note = calloc(1, sizeof(ctsvc_list_s));
1244 if (NULL == contact->note)
1246 contact->note->l_type = CTSVC_RECORD_NOTE;
1248 contact->numbers = calloc(1, sizeof(ctsvc_list_s));
1249 if (NULL == contact->numbers)
1251 contact->numbers->l_type = CTSVC_RECORD_NUMBER;
1253 contact->emails = calloc(1, sizeof(ctsvc_list_s));
1254 if (NULL == contact->emails)
1256 contact->emails->l_type = CTSVC_RECORD_EMAIL;
1258 contact->grouprelations = calloc(1, sizeof(ctsvc_list_s));
1259 if (NULL == contact->grouprelations)
1261 contact->grouprelations->l_type = CTSVC_RECORD_GROUP_RELATION;
1263 contact->events = calloc(1, sizeof(ctsvc_list_s));
1264 if (NULL == contact->events)
1266 contact->events->l_type = CTSVC_RECORD_EVENT;
1268 contact->messengers = calloc(1, sizeof(ctsvc_list_s));
1269 if (NULL == contact->messengers)
1271 contact->messengers->l_type = CTSVC_RECORD_MESSENGER;
1273 contact->postal_addrs = calloc(1, sizeof(ctsvc_list_s));
1274 if (NULL == contact->postal_addrs)
1276 contact->postal_addrs->l_type = CTSVC_RECORD_ADDRESS;
1278 contact->urls = calloc(1, sizeof(ctsvc_list_s));
1279 if (NULL == contact->urls)
1281 contact->urls->l_type = CTSVC_RECORD_URL;
1283 contact->nicknames = calloc(1, sizeof(ctsvc_list_s));
1284 if (NULL == contact->nicknames)
1286 contact->nicknames->l_type = CTSVC_RECORD_NICKNAME;
1288 contact->profiles = calloc(1, sizeof(ctsvc_list_s));
1289 if (NULL == contact->profiles)
1291 contact->profiles->l_type = CTSVC_RECORD_PROFILE;
1293 contact->relationships = calloc(1, sizeof(ctsvc_list_s));
1294 if (NULL == contact->relationships)
1296 contact->relationships->l_type = CTSVC_RECORD_RELATIONSHIP;
1298 contact->images = calloc(1, sizeof(ctsvc_list_s));
1299 if (NULL == contact->images)
1301 contact->images->l_type = CTSVC_RECORD_IMAGE;
1303 contact->extensions = calloc(1, sizeof(ctsvc_list_s));
1304 if (NULL == contact->extensions)
1306 contact->extensions->l_type = CTSVC_RECORD_EXTENSION;
1308 contact->sips = calloc(1, sizeof(ctsvc_list_s));
1309 if (NULL == contact->sips)
1311 contact->sips->l_type = CTSVC_RECORD_SIP;
1313 *out_record = (contacts_record_h)contact;
1314 return CONTACTS_ERROR_NONE;
1317 /* LCOV_EXCL_START */
1318 ERR("calloc() Fail");
1319 free(contact->extensions);
1320 free(contact->images);
1321 free(contact->relationships);
1322 free(contact->profiles);
1323 free(contact->nicknames);
1324 free(contact->urls);
1325 free(contact->postal_addrs);
1326 free(contact->messengers);
1327 free(contact->events);
1328 free(contact->grouprelations);
1329 free(contact->emails);
1330 free(contact->numbers);
1331 free(contact->note);
1332 free(contact->company);
1333 free(contact->name);
1334 free(contact->sips);
1336 return CONTACTS_ERROR_OUT_OF_MEMORY;
1337 /* LCOV_EXCL_STOP */
1340 static int __ctsvc_contact_destroy(contacts_record_h record, bool delete_child)
1342 ctsvc_contact_s *contact = (ctsvc_contact_s*)record;
1343 contact->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
1344 free(contact->base.properties_flags);
1346 free(contact->display_name);
1347 free(contact->reverse_display_name);
1349 free(contact->image_thumbnail_path);
1350 free(contact->ringtone_path);
1351 free(contact->vibration);
1352 free(contact->message_alert);
1353 free(contact->sort_name);
1354 free(contact->reverse_sort_name);
1355 free(contact->sortkey);
1356 free(contact->reverse_sortkey);
1358 contacts_list_destroy((contacts_list_h)contact->name, delete_child);
1360 contacts_list_destroy((contacts_list_h)contact->company, delete_child);
1362 contacts_list_destroy((contacts_list_h)contact->note, delete_child);
1364 contacts_list_destroy((contacts_list_h)contact->numbers, delete_child);
1366 contacts_list_destroy((contacts_list_h)contact->emails, delete_child);
1368 contacts_list_destroy((contacts_list_h)contact->grouprelations, delete_child);
1370 contacts_list_destroy((contacts_list_h)contact->events, delete_child);
1372 contacts_list_destroy((contacts_list_h)contact->messengers, delete_child);
1374 contacts_list_destroy((contacts_list_h)contact->postal_addrs, delete_child);
1376 contacts_list_destroy((contacts_list_h)contact->urls, delete_child);
1378 contacts_list_destroy((contacts_list_h)contact->nicknames, delete_child);
1380 contacts_list_destroy((contacts_list_h)contact->profiles, delete_child);
1382 contacts_list_destroy((contacts_list_h)contact->relationships, delete_child);
1384 contacts_list_destroy((contacts_list_h)contact->images, delete_child);
1386 contacts_list_destroy((contacts_list_h)contact->extensions, delete_child);
1388 contacts_list_destroy((contacts_list_h)contact->sips, delete_child);
1391 return CONTACTS_ERROR_NONE;
1395 static int __ctsvc_contact_get_int(contacts_record_h record, unsigned int property_id, int *out)
1397 ctsvc_contact_s *contact = (ctsvc_contact_s*)record;
1399 switch (property_id) {
1400 case CTSVC_PROPERTY_CONTACT_ID:
1403 case CTSVC_PROPERTY_CONTACT_DISPLAY_SOURCE_DATA_ID:
1404 *out = contact->display_source_type;
1406 case CTSVC_PROPERTY_CONTACT_ADDRESSBOOK_ID:
1407 *out = contact->addressbook_id;
1409 case CTSVC_PROPERTY_CONTACT_PERSON_ID:
1410 *out = contact->person_id;
1412 case CTSVC_PROPERTY_CONTACT_CHANGED_TIME:
1413 *out = contact->changed_time;
1415 case CTSVC_PROPERTY_CONTACT_LINK_MODE:
1416 *out = contact->link_mode;
1419 /* LCOV_EXCL_START */
1420 ERR("property_id(%d) is not supported in value(contact)", property_id);
1421 return CONTACTS_ERROR_INVALID_PARAMETER;
1422 /* LCOV_EXCL_STOP */
1424 return CONTACTS_ERROR_NONE;
1427 static int __ctsvc_simple_contact_get_int(contacts_record_h record, unsigned int property_id, int *out)
1429 ctsvc_simple_contact_s *contact = (ctsvc_simple_contact_s*)record;
1431 switch (property_id) {
1432 case CTSVC_PROPERTY_CONTACT_ID:
1433 *out = contact->contact_id;
1435 case CTSVC_PROPERTY_CONTACT_DISPLAY_SOURCE_DATA_ID:
1436 *out = contact->display_source_type;
1438 case CTSVC_PROPERTY_CONTACT_ADDRESSBOOK_ID:
1439 *out = contact->addressbook_id;
1441 case CTSVC_PROPERTY_CONTACT_PERSON_ID:
1442 *out = contact->person_id;
1444 case CTSVC_PROPERTY_CONTACT_CHANGED_TIME:
1445 *out = contact->changed_time;
1448 /* LCOV_EXCL_START */
1449 ERR("property_id(%d) is not supported in value(simple contact)", property_id);
1450 return CONTACTS_ERROR_INVALID_PARAMETER;
1451 /* LCOV_EXCL_STOP */
1453 return CONTACTS_ERROR_NONE;
1456 static int __ctsvc_name_get_int(contacts_record_h record, unsigned int property_id, int *out)
1458 ctsvc_name_s *name = (ctsvc_name_s*)record;
1460 switch (property_id) {
1461 case CTSVC_PROPERTY_NAME_ID:
1464 case CTSVC_PROPERTY_NAME_CONTACT_ID:
1465 *out = name->contact_id;
1468 /* LCOV_EXCL_START */
1469 ERR("property_id(%d) is not supported in value(name)", property_id);
1470 return CONTACTS_ERROR_INVALID_PARAMETER;
1471 /* LCOV_EXCL_STOP */
1473 return CONTACTS_ERROR_NONE;
1476 static int __ctsvc_company_get_int(contacts_record_h record, unsigned int property_id, int *out)
1478 ctsvc_company_s *company = (ctsvc_company_s*)record;
1480 switch (property_id) {
1481 case CTSVC_PROPERTY_COMPANY_ID:
1484 case CTSVC_PROPERTY_COMPANY_CONTACT_ID:
1485 *out = company->contact_id;
1487 case CTSVC_PROPERTY_COMPANY_TYPE:
1488 *out = company->type;
1491 /* LCOV_EXCL_START */
1492 ERR("property_id(%d) is not supported in value(company)", property_id);
1493 return CONTACTS_ERROR_INVALID_PARAMETER;
1494 /* LCOV_EXCL_STOP */
1496 return CONTACTS_ERROR_NONE;
1499 static int __ctsvc_note_get_int(contacts_record_h record, unsigned int property_id, int *out)
1501 ctsvc_note_s *note = (ctsvc_note_s*)record;
1503 switch (property_id) {
1504 case CTSVC_PROPERTY_NOTE_ID:
1507 case CTSVC_PROPERTY_NOTE_CONTACT_ID:
1508 *out = note->contact_id;
1511 /* LCOV_EXCL_START */
1512 ERR("property_id(%d) is not supported in value(note)", property_id);
1513 return CONTACTS_ERROR_INVALID_PARAMETER;
1514 /* LCOV_EXCL_STOP */
1516 return CONTACTS_ERROR_NONE;
1519 static int __ctsvc_number_get_int(contacts_record_h record, unsigned int property_id, int *out)
1521 ctsvc_number_s *number = (ctsvc_number_s*)record;
1523 switch (property_id) {
1524 case CTSVC_PROPERTY_NUMBER_ID:
1527 case CTSVC_PROPERTY_NUMBER_CONTACT_ID:
1528 *out = number->contact_id;
1530 case CTSVC_PROPERTY_NUMBER_TYPE:
1531 *out = number->type;
1534 /* LCOV_EXCL_START */
1535 ERR("property_id(%d) is not supported in value(number)", property_id);
1536 return CONTACTS_ERROR_INVALID_PARAMETER;
1537 /* LCOV_EXCL_STOP */
1539 return CONTACTS_ERROR_NONE;
1542 static int __ctsvc_email_get_int(contacts_record_h record, unsigned int property_id, int *out)
1544 ctsvc_email_s *email = (ctsvc_email_s*)record;
1546 switch (property_id) {
1547 case CTSVC_PROPERTY_EMAIL_ID:
1550 case CTSVC_PROPERTY_EMAIL_CONTACT_ID:
1551 *out = email->contact_id;
1553 case CTSVC_PROPERTY_EMAIL_TYPE:
1557 /* LCOV_EXCL_START */
1558 ERR("property_id(%d) is not supported in value(email)", property_id);
1559 return CONTACTS_ERROR_INVALID_PARAMETER;
1560 /* LCOV_EXCL_STOP */
1562 return CONTACTS_ERROR_NONE;
1565 static int __ctsvc_url_get_int(contacts_record_h record, unsigned int property_id, int *out)
1567 ctsvc_url_s *url = (ctsvc_url_s*)record;
1569 switch (property_id) {
1570 case CTSVC_PROPERTY_URL_ID:
1573 case CTSVC_PROPERTY_URL_CONTACT_ID:
1574 *out = url->contact_id;
1576 case CTSVC_PROPERTY_URL_TYPE:
1580 /* LCOV_EXCL_START */
1581 ERR("property_id(%d) is not supported in value(url)", property_id);
1582 return CONTACTS_ERROR_INVALID_PARAMETER;
1583 /* LCOV_EXCL_STOP */
1585 return CONTACTS_ERROR_NONE;
1588 static int __ctsvc_event_get_int(contacts_record_h record, unsigned int property_id, int *out)
1590 ctsvc_event_s *event = (ctsvc_event_s*)record;
1592 switch (property_id) {
1593 case CTSVC_PROPERTY_EVENT_ID:
1596 case CTSVC_PROPERTY_EVENT_CONTACT_ID:
1597 *out = event->contact_id;
1599 case CTSVC_PROPERTY_EVENT_TYPE:
1602 case CTSVC_PROPERTY_EVENT_DATE:
1605 case CTSVC_PROPERTY_EVENT_CALENDAR_TYPE:
1606 *out = event->calendar_type;
1609 /* LCOV_EXCL_START */
1610 ERR("property_id(%d) is not supported in value(event)", property_id);
1611 return CONTACTS_ERROR_INVALID_PARAMETER;
1612 /* LCOV_EXCL_STOP */
1614 return CONTACTS_ERROR_NONE;
1617 static int __ctsvc_nickname_get_int(contacts_record_h record, unsigned int property_id, int *out)
1619 ctsvc_nickname_s *nickname = (ctsvc_nickname_s*)record;
1621 switch (property_id) {
1622 case CTSVC_PROPERTY_NICKNAME_ID:
1623 *out = nickname->id;
1625 case CTSVC_PROPERTY_NICKNAME_CONTACT_ID:
1626 *out = nickname->contact_id;
1629 /* LCOV_EXCL_START */
1630 ERR("property_id(%d) is not supported in value(nickname)", property_id);
1631 return CONTACTS_ERROR_INVALID_PARAMETER;
1632 /* LCOV_EXCL_STOP */
1634 return CONTACTS_ERROR_NONE;
1637 static int __ctsvc_address_get_int(contacts_record_h record, unsigned int property_id, int *out)
1639 ctsvc_address_s *address = (ctsvc_address_s*)record;
1641 switch (property_id) {
1642 case CTSVC_PROPERTY_ADDRESS_ID:
1645 case CTSVC_PROPERTY_ADDRESS_CONTACT_ID:
1646 *out = address->contact_id;
1648 case CTSVC_PROPERTY_ADDRESS_TYPE:
1649 *out = address->type;
1652 /* LCOV_EXCL_START */
1653 ERR("property_id(%d) is not supported in value(address)", property_id);
1654 return CONTACTS_ERROR_INVALID_PARAMETER;
1655 /* LCOV_EXCL_STOP */
1657 return CONTACTS_ERROR_NONE;
1660 static int __ctsvc_messenger_get_int(contacts_record_h record, unsigned int property_id, int *out)
1662 ctsvc_messenger_s *messenger = (ctsvc_messenger_s*)record;
1664 switch (property_id) {
1665 case CTSVC_PROPERTY_MESSENGER_ID:
1666 *out = messenger->id;
1668 case CTSVC_PROPERTY_MESSENGER_CONTACT_ID:
1669 *out = messenger->contact_id;
1671 case CTSVC_PROPERTY_MESSENGER_TYPE:
1672 *out = messenger->type;
1675 /* LCOV_EXCL_START */
1676 ERR("property_id(%d) is not supported in value(messenger)", property_id);
1677 return CONTACTS_ERROR_INVALID_PARAMETER;
1678 /* LCOV_EXCL_STOP */
1680 return CONTACTS_ERROR_NONE;
1683 static int __ctsvc_group_relation_get_int(contacts_record_h record, unsigned int property_id, int *out)
1685 ctsvc_group_relation_s *group = (ctsvc_group_relation_s*)record;
1687 switch (property_id) {
1688 case CTSVC_PROPERTY_GROUP_RELATION_ID:
1691 case CTSVC_PROPERTY_GROUP_RELATION_CONTACT_ID:
1692 *out = group->contact_id;
1694 case CTSVC_PROPERTY_GROUP_RELATION_GROUP_ID:
1695 *out = group->group_id;
1698 /* LCOV_EXCL_START */
1699 ERR("property_id(%d) is not supported in value(group)", property_id);
1700 return CONTACTS_ERROR_INVALID_PARAMETER;
1701 /* LCOV_EXCL_STOP */
1703 return CONTACTS_ERROR_NONE;
1706 static int __ctsvc_activity_get_int(contacts_record_h record, unsigned int property_id, int *out)
1708 ctsvc_activity_s *activity = (ctsvc_activity_s*)record;
1710 switch (property_id) {
1711 case CTSVC_PROPERTY_ACTIVITY_ID:
1712 *out = activity->id;
1714 case CTSVC_PROPERTY_ACTIVITY_CONTACT_ID:
1715 *out = activity->contact_id;
1717 case CTSVC_PROPERTY_ACTIVITY_TIMESTAMP:
1718 *out = activity->timestamp;
1721 /* LCOV_EXCL_START */
1722 ERR("property_id(%d) is not supported in value(activity)", property_id);
1723 return CONTACTS_ERROR_INVALID_PARAMETER;
1724 /* LCOV_EXCL_STOP */
1726 return CONTACTS_ERROR_NONE;
1729 static int __ctsvc_activity_add_child_record(contacts_record_h record,
1730 unsigned int property_id, contacts_record_h child_record)
1732 ctsvc_activity_s *s_activity = (ctsvc_activity_s*)record;
1733 ctsvc_activity_photo_s *s_activity_photo = (ctsvc_activity_photo_s*)child_record;
1735 RETVM_IF(property_id != CTSVC_PROPERTY_ACTIVITY_ACTIVITY_PHOTO,
1736 CONTACTS_ERROR_INVALID_PARAMETER,
1737 "property_id(%d) is not supported",
1739 RETVM_IF(s_activity_photo->base.r_type != CTSVC_RECORD_ACTIVITY_PHOTO,
1740 CONTACTS_ERROR_INVALID_PARAMETER,
1741 "r_type(%d) is wrong",
1742 s_activity_photo->base.r_type);
1743 s_activity_photo->id = 0;
1745 return ctsvc_list_add_child((contacts_list_h)s_activity->photos, child_record);
1748 static int __ctsvc_activity_remove_child_record(contacts_record_h record,
1749 unsigned int property_id, contacts_record_h child_record)
1751 ctsvc_activity_s *s_activity = (ctsvc_activity_s*)record;
1752 ctsvc_activity_photo_s *s_activity_photo = (ctsvc_activity_photo_s*)child_record;
1754 RETVM_IF(property_id != CTSVC_PROPERTY_ACTIVITY_ACTIVITY_PHOTO,
1755 CONTACTS_ERROR_INVALID_PARAMETER,
1756 "property_id(%d) is not supported",
1759 ctsvc_list_remove_child((contacts_list_h)s_activity->photos, child_record,
1760 s_activity_photo->id ? true : false);
1762 return CONTACTS_ERROR_NONE;
1765 static int __ctsvc_activity_get_child_record_count(contacts_record_h record,
1766 unsigned int property_id, int *count)
1768 ctsvc_activity_s *s_activity = (ctsvc_activity_s*)record;
1769 RETVM_IF(property_id != CTSVC_PROPERTY_ACTIVITY_ACTIVITY_PHOTO, CONTACTS_ERROR_INVALID_PARAMETER, "property_id(%d) is not supported", property_id);
1771 if (s_activity->photos)
1772 contacts_list_get_count((contacts_list_h)s_activity->photos, count);
1774 return CONTACTS_ERROR_NONE;
1777 static int __ctsvc_activity_get_child_record_at_p(contacts_record_h record,
1778 unsigned int property_id, int index, contacts_record_h *out_record)
1781 ctsvc_activity_s *s_activity = (ctsvc_activity_s*)record;
1783 RETVM_IF(property_id != CTSVC_PROPERTY_ACTIVITY_ACTIVITY_PHOTO, CONTACTS_ERROR_INVALID_PARAMETER, "property_id(%d) is not supported", property_id);
1785 if (s_activity->photos)
1786 contacts_list_get_count((contacts_list_h)s_activity->photos, &count);
1788 if (count < index) {
1789 /* LCOV_EXCL_START */
1790 ERR("The index(%d) is greather than total length(%d)", index, count);
1792 return CONTACTS_ERROR_NO_DATA;
1793 /* LCOV_EXCL_STOP */
1796 return ctsvc_list_get_nth_record_p((contacts_list_h)s_activity->photos, index, out_record);
1800 static int __ctsvc_activity_clone_child_record_list(contacts_record_h record,
1801 unsigned int property_id, contacts_list_h *out_list)
1804 ctsvc_activity_s *s_activity = (ctsvc_activity_s*)record;
1806 RETVM_IF(property_id != CTSVC_PROPERTY_ACTIVITY_ACTIVITY_PHOTO, CONTACTS_ERROR_INVALID_PARAMETER, "property_id(%d) is not supported", property_id);
1808 contacts_list_get_count((contacts_list_h)s_activity->photos, &count);
1811 return CONTACTS_ERROR_NO_DATA;
1813 return ctsvc_list_clone((contacts_list_h)s_activity->photos, out_list);
1817 static int __ctsvc_activity_photo_get_int(contacts_record_h record, unsigned int property_id, int *out)
1819 ctsvc_activity_photo_s *photo = (ctsvc_activity_photo_s*)record;
1821 switch (property_id) {
1822 case CTSVC_PROPERTY_ACTIVITY_PHOTO_ID:
1825 case CTSVC_PROPERTY_ACTIVITY_PHOTO_ACTIVITY_ID:
1826 *out = photo->activity_id;
1828 case CTSVC_PROPERTY_ACTIVITY_PHOTO_SORT_INDEX:
1829 *out = photo->sort_index;
1832 /* LCOV_EXCL_START */
1833 ERR("property_id(%d) is not supported in value(activity)", property_id);
1834 return CONTACTS_ERROR_INVALID_PARAMETER;
1835 /* LCOV_EXCL_STOP */
1837 return CONTACTS_ERROR_NONE;
1840 static int __ctsvc_profile_get_int(contacts_record_h record, unsigned int property_id, int *out)
1842 ctsvc_profile_s *profile = (ctsvc_profile_s*)record;
1844 switch (property_id) {
1845 case CTSVC_PROPERTY_PROFILE_ID:
1848 case CTSVC_PROPERTY_PROFILE_CONTACT_ID:
1849 *out = profile->contact_id;
1851 case CTSVC_PROPERTY_PROFILE_ORDER:
1852 *out = profile->order;
1855 /* LCOV_EXCL_START */
1856 ERR("property_id(%d) is not supported in value(profile)", property_id);
1857 return CONTACTS_ERROR_INVALID_PARAMETER;
1858 /* LCOV_EXCL_STOP */
1860 return CONTACTS_ERROR_NONE;
1863 static int __ctsvc_relationship_get_int(contacts_record_h record, unsigned int property_id, int *out)
1865 ctsvc_relationship_s *relationship = (ctsvc_relationship_s*)record;
1867 switch (property_id) {
1868 case CTSVC_PROPERTY_RELATIONSHIP_ID:
1869 *out = relationship->id;
1871 case CTSVC_PROPERTY_RELATIONSHIP_CONTACT_ID:
1872 *out = relationship->contact_id;
1874 case CTSVC_PROPERTY_RELATIONSHIP_TYPE:
1875 *out = relationship->type;
1878 /* LCOV_EXCL_START */
1879 ERR("property_id(%d) is not supported in value(relationship)", property_id);
1880 return CONTACTS_ERROR_INVALID_PARAMETER;
1881 /* LCOV_EXCL_STOP */
1883 return CONTACTS_ERROR_NONE;
1886 static int __ctsvc_image_get_int(contacts_record_h record, unsigned int property_id, int *out)
1888 ctsvc_image_s *image = (ctsvc_image_s*)record;
1890 switch (property_id) {
1891 case CTSVC_PROPERTY_IMAGE_ID:
1894 case CTSVC_PROPERTY_IMAGE_CONTACT_ID:
1895 *out = image->contact_id;
1897 case CTSVC_PROPERTY_IMAGE_TYPE:
1901 /* LCOV_EXCL_START */
1902 ERR("property_id(%d) is not supported in value(image)", property_id);
1903 return CONTACTS_ERROR_INVALID_PARAMETER;
1904 /* LCOV_EXCL_STOP */
1906 return CONTACTS_ERROR_NONE;
1909 static int __ctsvc_extension_get_int(contacts_record_h record, unsigned int property_id, int *out)
1911 ctsvc_extension_s *extension = (ctsvc_extension_s*)record;
1913 switch (property_id) {
1914 case CTSVC_PROPERTY_EXTENSION_ID:
1915 *out = extension->id;
1917 case CTSVC_PROPERTY_EXTENSION_CONTACT_ID:
1918 *out = extension->contact_id;
1920 case CTSVC_PROPERTY_EXTENSION_DATA1:
1921 *out = extension->data1;
1924 /* LCOV_EXCL_START */
1925 ERR("property_id(%d) is not supported in value(extension)", property_id);
1926 return CONTACTS_ERROR_INVALID_PARAMETER;
1927 /* LCOV_EXCL_STOP */
1929 return CONTACTS_ERROR_NONE;
1932 static int __ctsvc_sip_get_int(contacts_record_h record, unsigned int property_id, int *out)
1934 ctsvc_sip_s *sip = (ctsvc_sip_s *)record;
1936 switch (property_id) {
1937 case CTSVC_PROPERTY_SIP_ID:
1940 case CTSVC_PROPERTY_SIP_CONTACT_ID:
1941 *out = sip->contact_id;
1943 case CTSVC_PROPERTY_SIP_TYPE:
1947 /* LCOV_EXCL_START */
1948 ERR("Invalid parameter : property_id(%d) is not supported in value(sip)", property_id);
1949 return CONTACTS_ERROR_INVALID_PARAMETER;
1950 /* LCOV_EXCL_STOP */
1952 return CONTACTS_ERROR_NONE;
1955 static int __ctsvc_contact_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
1957 ctsvc_contact_s *contact = (ctsvc_contact_s*)record;
1959 switch (property_id) {
1960 case CTSVC_PROPERTY_CONTACT_ID:
1961 CHECK_DIRTY_VAL(contact->id, value, is_dirty);
1962 contact->id = value;
1964 case CTSVC_PROPERTY_CONTACT_DISPLAY_SOURCE_DATA_ID:
1965 CHECK_DIRTY_VAL(contact->display_source_type, value, is_dirty);
1966 contact->display_source_type = value;
1968 case CTSVC_PROPERTY_CONTACT_PERSON_ID:
1969 RETVM_IF(0 < contact->id, CONTACTS_ERROR_INVALID_PARAMETER,
1970 "property_id(%d) is a read-only value (contact)", property_id);
1971 CHECK_DIRTY_VAL(contact->person_id, value, is_dirty);
1972 contact->person_id = value;
1974 case CTSVC_PROPERTY_CONTACT_CHANGED_TIME:
1975 CHECK_DIRTY_VAL(contact->changed_time, value, is_dirty);
1976 contact->changed_time = value;
1978 case CTSVC_PROPERTY_CONTACT_ADDRESSBOOK_ID:
1979 RETVM_IF(0 < contact->id, CONTACTS_ERROR_INVALID_PARAMETER,
1980 "property_id(%d) is a read-only value (contact)", property_id);
1981 CHECK_DIRTY_VAL(contact->addressbook_id, value, is_dirty);
1982 contact->addressbook_id = value;
1984 case CTSVC_PROPERTY_CONTACT_LINK_MODE:
1985 RETVM_IF(value != CONTACTS_CONTACT_LINK_MODE_NONE
1986 && value != CONTACTS_CONTACT_LINK_MODE_IGNORE_ONCE,
1987 CONTACTS_ERROR_INVALID_PARAMETER, "link mode is in invalid range (%d)", value);
1988 RETVM_IF(0 < contact->id, CONTACTS_ERROR_INVALID_PARAMETER,
1989 "property_id(%d) is a read-only value (contact)", property_id);
1990 CHECK_DIRTY_VAL(contact->link_mode, value, is_dirty);
1991 contact->link_mode = value;
1994 /* LCOV_EXCL_START */
1995 ERR("property_id(%d) is not supported in value (contact)", property_id);
1996 return CONTACTS_ERROR_INVALID_PARAMETER;
1997 /* LCOV_EXCL_STOP */
1999 return CONTACTS_ERROR_NONE;
2002 static int __ctsvc_simple_contact_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
2004 ctsvc_simple_contact_s *contact = (ctsvc_simple_contact_s*)record;
2006 switch (property_id) {
2007 case CTSVC_PROPERTY_CONTACT_ID:
2008 CHECK_DIRTY_VAL(contact->contact_id, value, is_dirty);
2009 contact->contact_id = value;
2011 case CTSVC_PROPERTY_CONTACT_DISPLAY_SOURCE_DATA_ID:
2012 CHECK_DIRTY_VAL(contact->display_source_type, value, is_dirty);
2013 contact->display_source_type = value;
2015 case CTSVC_PROPERTY_CONTACT_PERSON_ID:
2016 CHECK_DIRTY_VAL(contact->person_id, value, is_dirty);
2017 contact->person_id = value;
2019 case CTSVC_PROPERTY_CONTACT_ADDRESSBOOK_ID:
2020 RETVM_IF(0 < contact->contact_id, CONTACTS_ERROR_INVALID_PARAMETER,
2021 "Invalide parameter : property_id(%d) is a read-only value (contact)", property_id);
2022 CHECK_DIRTY_VAL(contact->addressbook_id, value, is_dirty);
2023 contact->addressbook_id = value;
2026 /* LCOV_EXCL_START */
2027 ERR("property_id(%d) is not supported in value(simple contact)", property_id);
2028 return CONTACTS_ERROR_INVALID_PARAMETER;
2029 /* LCOV_EXCL_STOP */
2031 return CONTACTS_ERROR_NONE;
2034 static int __ctsvc_name_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
2036 ctsvc_name_s *name = (ctsvc_name_s*)record;
2038 switch (property_id) {
2039 case CTSVC_PROPERTY_NAME_ID:
2040 CHECK_DIRTY_VAL(name->id, value, is_dirty);
2043 case CTSVC_PROPERTY_NAME_CONTACT_ID:
2044 RETVM_IF(0 < name->id, CONTACTS_ERROR_INVALID_PARAMETER,
2045 "property_id(%d) is a read-only value (name)", property_id);
2046 CHECK_DIRTY_VAL(name->contact_id, value, is_dirty);
2047 name->contact_id = value;
2050 /* LCOV_EXCL_START */
2051 ERR("property_id(%d) is not supported in value(name)", property_id);
2052 return CONTACTS_ERROR_INVALID_PARAMETER;
2053 /* LCOV_EXCL_STOP */
2055 return CONTACTS_ERROR_NONE;
2058 static int __ctsvc_company_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
2060 ctsvc_company_s *company = (ctsvc_company_s*)record;
2062 switch (property_id) {
2063 case CTSVC_PROPERTY_COMPANY_ID:
2064 CHECK_DIRTY_VAL(company->id, value, is_dirty);
2065 company->id = value;
2067 case CTSVC_PROPERTY_COMPANY_CONTACT_ID:
2068 RETVM_IF(0 < company->id, CONTACTS_ERROR_INVALID_PARAMETER,
2069 "property_id(%d) is a read-only value (company)", property_id);
2070 CHECK_DIRTY_VAL(company->contact_id, value, is_dirty);
2071 company->contact_id = value;
2073 case CTSVC_PROPERTY_COMPANY_TYPE:
2074 RETVM_IF(value < CONTACTS_COMPANY_TYPE_OTHER
2075 || CONTACTS_COMPANY_TYPE_WORK < value,
2076 CONTACTS_ERROR_INVALID_PARAMETER, "company type is in invalid range (%d)", value);
2078 CHECK_DIRTY_VAL(company->type, value, is_dirty);
2079 company->type = value;
2082 /* LCOV_EXCL_START */
2083 ERR("property_id(%d) is not supported in value(company)", property_id);
2084 return CONTACTS_ERROR_INVALID_PARAMETER;
2085 /* LCOV_EXCL_STOP */
2087 return CONTACTS_ERROR_NONE;
2090 static int __ctsvc_note_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
2092 ctsvc_note_s *note = (ctsvc_note_s*)record;
2094 switch (property_id) {
2095 case CTSVC_PROPERTY_NOTE_ID:
2096 CHECK_DIRTY_VAL(note->id, value, is_dirty);
2099 case CTSVC_PROPERTY_NOTE_CONTACT_ID:
2100 RETVM_IF(0 < note->id, CONTACTS_ERROR_INVALID_PARAMETER,
2101 "property_id(%d) is a read-only value (note)", property_id);
2102 CHECK_DIRTY_VAL(note->contact_id, value, is_dirty);
2103 note->contact_id = value;
2106 /* LCOV_EXCL_START */
2107 ERR("property_id(%d) is not supported in value(note)", property_id);
2108 return CONTACTS_ERROR_INVALID_PARAMETER;
2109 /* LCOV_EXCL_STOP */
2111 return CONTACTS_ERROR_NONE;
2114 static int __ctsvc_number_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
2116 ctsvc_number_s *number = (ctsvc_number_s*)record;
2118 switch (property_id) {
2119 case CTSVC_PROPERTY_NUMBER_ID:
2120 CHECK_DIRTY_VAL(number->id, value, is_dirty);
2123 case CTSVC_PROPERTY_NUMBER_CONTACT_ID:
2124 RETVM_IF(0 < number->id, CONTACTS_ERROR_INVALID_PARAMETER,
2125 "property_id(%d) is a read-only value (number)", property_id);
2126 CHECK_DIRTY_VAL(number->contact_id, value, is_dirty);
2127 number->contact_id = value;
2129 case CTSVC_PROPERTY_NUMBER_TYPE:
2130 CHECK_DIRTY_VAL(number->type, value, is_dirty);
2131 number->type = value;
2134 /* LCOV_EXCL_START */
2135 ERR("property_id(%d) is not supported in value(number)", property_id);
2136 return CONTACTS_ERROR_INVALID_PARAMETER;
2137 /* LCOV_EXCL_STOP */
2139 return CONTACTS_ERROR_NONE;
2142 static int __ctsvc_email_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
2144 ctsvc_email_s *email = (ctsvc_email_s*)record;
2146 switch (property_id) {
2147 case CTSVC_PROPERTY_EMAIL_ID:
2148 CHECK_DIRTY_VAL(email->id, value, is_dirty);
2151 case CTSVC_PROPERTY_EMAIL_CONTACT_ID:
2152 RETVM_IF(0 < email->id, CONTACTS_ERROR_INVALID_PARAMETER,
2153 "property_id(%d) is a read-only value (email)", property_id);
2154 CHECK_DIRTY_VAL(email->contact_id, value, is_dirty);
2155 email->contact_id = value;
2157 case CTSVC_PROPERTY_EMAIL_TYPE:
2158 RETVM_IF(value < CONTACTS_EMAIL_TYPE_OTHER
2159 || CONTACTS_EMAIL_TYPE_MOBILE < value,
2160 CONTACTS_ERROR_INVALID_PARAMETER, "email type is in invalid range (%d)", value);
2162 CHECK_DIRTY_VAL(email->type, value, is_dirty);
2163 email->type = value;
2166 /* LCOV_EXCL_START */
2167 ERR("property_id(%d) is not supported in value(email)", property_id);
2168 return CONTACTS_ERROR_INVALID_PARAMETER;
2169 /* LCOV_EXCL_STOP */
2171 return CONTACTS_ERROR_NONE;
2174 static int __ctsvc_url_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
2176 ctsvc_url_s *url = (ctsvc_url_s*)record;
2178 switch (property_id) {
2179 case CTSVC_PROPERTY_URL_ID:
2180 CHECK_DIRTY_VAL(url->id, value, is_dirty);
2183 case CTSVC_PROPERTY_URL_CONTACT_ID:
2184 RETVM_IF(0 < url->id, CONTACTS_ERROR_INVALID_PARAMETER,
2185 "property_id(%d) is a read-only value (url)", property_id);
2186 CHECK_DIRTY_VAL(url->contact_id, value, is_dirty);
2187 url->contact_id = value;
2189 case CTSVC_PROPERTY_URL_TYPE:
2190 RETVM_IF(value < CONTACTS_URL_TYPE_OTHER
2191 || CONTACTS_URL_TYPE_WORK < value,
2192 CONTACTS_ERROR_INVALID_PARAMETER, "url type is in invalid range (%d)", value);
2194 CHECK_DIRTY_VAL(url->type, value, is_dirty);
2198 /* LCOV_EXCL_START */
2199 ERR("property_id(%d) is not supported in value(url)", property_id);
2200 return CONTACTS_ERROR_INVALID_PARAMETER;
2201 /* LCOV_EXCL_STOP */
2203 return CONTACTS_ERROR_NONE;
2206 static int __ctsvc_event_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
2208 ctsvc_event_s *event = (ctsvc_event_s*)record;
2210 switch (property_id) {
2211 case CTSVC_PROPERTY_EVENT_ID:
2212 CHECK_DIRTY_VAL(event->id, value, is_dirty);
2215 case CTSVC_PROPERTY_EVENT_CONTACT_ID:
2216 RETVM_IF(0 < event->id, CONTACTS_ERROR_INVALID_PARAMETER,
2217 "property_id(%d) is a read-only value (event)", property_id);
2218 CHECK_DIRTY_VAL(event->contact_id, value, is_dirty);
2219 event->contact_id = value;
2221 case CTSVC_PROPERTY_EVENT_TYPE:
2222 RETVM_IF(value < CONTACTS_EVENT_TYPE_OTHER
2223 || CONTACTS_EVENT_TYPE_ANNIVERSARY < value,
2224 CONTACTS_ERROR_INVALID_PARAMETER, "event type is in invalid range (%d)", value);
2225 CHECK_DIRTY_VAL(event->type, value, is_dirty);
2226 event->type = value;
2228 case CTSVC_PROPERTY_EVENT_DATE:
2229 CHECK_DIRTY_VAL(event->date, value, is_dirty);
2230 event->date = value;
2232 case CTSVC_PROPERTY_EVENT_CALENDAR_TYPE:
2233 CHECK_DIRTY_VAL(event->calendar_type, value, is_dirty);
2234 event->calendar_type = value;
2237 /* LCOV_EXCL_START */
2238 ERR("property_id(%d) is not supported in value(event)", property_id);
2239 return CONTACTS_ERROR_INVALID_PARAMETER;
2240 /* LCOV_EXCL_STOP */
2242 return CONTACTS_ERROR_NONE;
2245 static int __ctsvc_nickname_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
2247 ctsvc_nickname_s *nickname = (ctsvc_nickname_s*)record;
2249 switch (property_id) {
2250 case CTSVC_PROPERTY_NICKNAME_ID:
2251 CHECK_DIRTY_VAL(nickname->id, value, is_dirty);
2252 nickname->id = value;
2254 case CTSVC_PROPERTY_NICKNAME_CONTACT_ID:
2255 RETVM_IF(0 < nickname->id, CONTACTS_ERROR_INVALID_PARAMETER,
2256 "property_id(%d) is a read-only value (nickname)", property_id);
2257 CHECK_DIRTY_VAL(nickname->contact_id, value, is_dirty);
2258 nickname->contact_id = value;
2261 /* LCOV_EXCL_START */
2262 ERR("property_id(%d) is not supported in value(nickname)", property_id);
2263 return CONTACTS_ERROR_INVALID_PARAMETER;
2264 /* LCOV_EXCL_STOP */
2266 return CONTACTS_ERROR_NONE;
2269 static int __ctsvc_address_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
2271 ctsvc_address_s *address = (ctsvc_address_s*)record;
2273 switch (property_id) {
2274 case CTSVC_PROPERTY_ADDRESS_ID:
2275 CHECK_DIRTY_VAL(address->id, value, is_dirty);
2276 address->id = value;
2278 case CTSVC_PROPERTY_ADDRESS_CONTACT_ID:
2279 RETVM_IF(0 < address->id, CONTACTS_ERROR_INVALID_PARAMETER,
2280 "property_id(%d) is a read-only value (address)", property_id);
2281 CHECK_DIRTY_VAL(address->contact_id, value, is_dirty);
2282 address->contact_id = value;
2284 case CTSVC_PROPERTY_ADDRESS_TYPE:
2285 RETVM_IF(value < CONTACTS_ADDRESS_TYPE_OTHER
2286 || CONTACTS_ADDRESS_TYPE_PARCEL < value,
2287 CONTACTS_ERROR_INVALID_PARAMETER, "address type is %d", value);
2288 CHECK_DIRTY_VAL(address->type, value, is_dirty);
2289 address->type = value;
2292 /* LCOV_EXCL_START */
2293 ERR("property_id(%d) is not supported in value(address)", property_id);
2294 return CONTACTS_ERROR_INVALID_PARAMETER;
2295 /* LCOV_EXCL_STOP */
2297 return CONTACTS_ERROR_NONE;
2300 static int __ctsvc_messenger_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
2302 ctsvc_messenger_s *messenger = (ctsvc_messenger_s*)record;
2304 switch (property_id) {
2305 case CTSVC_PROPERTY_MESSENGER_ID:
2306 CHECK_DIRTY_VAL(messenger->id, value, is_dirty);
2307 messenger->id = value;
2309 case CTSVC_PROPERTY_MESSENGER_CONTACT_ID:
2310 RETVM_IF(0 < messenger->id, CONTACTS_ERROR_INVALID_PARAMETER,
2311 "property_id(%d) is a read-only value (messenger)", property_id);
2312 CHECK_DIRTY_VAL(messenger->contact_id, value, is_dirty);
2313 messenger->contact_id = value;
2315 case CTSVC_PROPERTY_MESSENGER_TYPE:
2316 RETVM_IF(value < CONTACTS_MESSENGER_TYPE_OTHER
2317 || CONTACTS_MESSENGER_TYPE_IRC < value,
2318 CONTACTS_ERROR_INVALID_PARAMETER, "messenger type is in invalid range (%d)", value);
2320 CHECK_DIRTY_VAL(messenger->type, value, is_dirty);
2321 messenger->type = value;
2324 /* LCOV_EXCL_START */
2325 ERR("property_id(%d) is not supported in value(messenger)", property_id);
2326 return CONTACTS_ERROR_INVALID_PARAMETER;
2327 /* LCOV_EXCL_STOP */
2329 return CONTACTS_ERROR_NONE;
2332 static int __ctsvc_group_relation_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
2334 ctsvc_group_relation_s *group = (ctsvc_group_relation_s*)record;
2336 switch (property_id) {
2337 case CTSVC_PROPERTY_GROUP_RELATION_ID:
2338 CHECK_DIRTY_VAL(group->id, value, is_dirty);
2341 case CTSVC_PROPERTY_GROUP_RELATION_CONTACT_ID:
2342 RETVM_IF(0 < group->id, CONTACTS_ERROR_INVALID_PARAMETER,
2343 "property_id(%d) is a read-only value (group)", property_id);
2344 CHECK_DIRTY_VAL(group->contact_id, value, is_dirty);
2345 group->contact_id = value;
2347 case CTSVC_PROPERTY_GROUP_RELATION_GROUP_ID:
2348 RETVM_IF(0 < group->id, CONTACTS_ERROR_INVALID_PARAMETER,
2349 "property_id(%d) is a read-only value (group)", property_id);
2350 CHECK_DIRTY_VAL(group->group_id, value, is_dirty);
2351 group->group_id = value;
2354 /* LCOV_EXCL_START */
2355 ERR("property_id(%d) is not supported in value(group relation)", property_id);
2356 return CONTACTS_ERROR_INVALID_PARAMETER;
2357 /* LCOV_EXCL_STOP */
2359 return CONTACTS_ERROR_NONE;
2362 static int __ctsvc_activity_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
2364 ctsvc_activity_s *activity = (ctsvc_activity_s*)record;
2366 switch (property_id) {
2367 case CTSVC_PROPERTY_ACTIVITY_ID:
2368 CHECK_DIRTY_VAL(activity->id, value, is_dirty);
2369 activity->id = value;
2371 case CTSVC_PROPERTY_ACTIVITY_CONTACT_ID:
2372 RETVM_IF(0 < activity->id, CONTACTS_ERROR_INVALID_PARAMETER,
2373 "property_id(%d) is a read-only value (activity)", property_id);
2374 CHECK_DIRTY_VAL(activity->contact_id, value, is_dirty);
2375 activity->contact_id = value;
2377 case CTSVC_PROPERTY_ACTIVITY_TIMESTAMP:
2378 CHECK_DIRTY_VAL(activity->timestamp, value, is_dirty);
2379 activity->timestamp = value;
2382 /* LCOV_EXCL_START */
2383 ERR("property_id(%d) is not supported in value(activity)", property_id);
2384 return CONTACTS_ERROR_INVALID_PARAMETER;
2385 /* LCOV_EXCL_STOP */
2387 return CONTACTS_ERROR_NONE;
2390 static int __ctsvc_activity_photo_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
2392 ctsvc_activity_photo_s *photo = (ctsvc_activity_photo_s*)record;
2394 switch (property_id) {
2395 case CTSVC_PROPERTY_ACTIVITY_PHOTO_ID:
2396 CHECK_DIRTY_VAL(photo->id, value, is_dirty);
2399 case CTSVC_PROPERTY_ACTIVITY_PHOTO_ACTIVITY_ID:
2400 CHECK_DIRTY_VAL(photo->activity_id, value, is_dirty);
2401 photo->activity_id = value;
2403 case CTSVC_PROPERTY_ACTIVITY_PHOTO_SORT_INDEX:
2404 CHECK_DIRTY_VAL(photo->sort_index, value, is_dirty);
2405 photo->sort_index = value;
2408 /* LCOV_EXCL_START */
2409 ERR("property_id(%d) is not supported in value(activity)", property_id);
2410 return CONTACTS_ERROR_INVALID_PARAMETER;
2411 /* LCOV_EXCL_STOP */
2413 return CONTACTS_ERROR_NONE;
2416 static int __ctsvc_profile_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
2418 ctsvc_profile_s *profile = (ctsvc_profile_s*)record;
2420 switch (property_id) {
2421 case CTSVC_PROPERTY_PROFILE_ID:
2422 CHECK_DIRTY_VAL(profile->id, value, is_dirty);
2423 profile->id = value;
2425 case CTSVC_PROPERTY_PROFILE_CONTACT_ID:
2426 RETVM_IF(0 < profile->id, CONTACTS_ERROR_INVALID_PARAMETER,
2427 "property_id(%d) is a read-only value (profile)", property_id);
2428 CHECK_DIRTY_VAL(profile->contact_id, value, is_dirty);
2429 profile->contact_id = value;
2431 case CTSVC_PROPERTY_PROFILE_ORDER:
2432 CHECK_DIRTY_VAL(profile->order, value, is_dirty);
2433 profile->order = value;
2436 /* LCOV_EXCL_START */
2437 ERR("property_id(%d) is not supported in value(profile)", property_id);
2438 return CONTACTS_ERROR_INVALID_PARAMETER;
2439 /* LCOV_EXCL_STOP */
2441 return CONTACTS_ERROR_NONE;
2444 static int __ctsvc_relationship_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
2446 ctsvc_relationship_s *relationship = (ctsvc_relationship_s*)record;
2448 switch (property_id) {
2449 case CTSVC_PROPERTY_RELATIONSHIP_ID:
2450 CHECK_DIRTY_VAL(relationship->id, value, is_dirty);
2451 relationship->id = value;
2453 case CTSVC_PROPERTY_RELATIONSHIP_CONTACT_ID:
2454 RETVM_IF(0 < relationship->id, CONTACTS_ERROR_INVALID_PARAMETER,
2455 "property_id(%d) is a read-only value (relationship)", property_id);
2456 CHECK_DIRTY_VAL(relationship->contact_id, value, is_dirty);
2457 relationship->contact_id = value;
2459 case CTSVC_PROPERTY_RELATIONSHIP_TYPE:
2460 RETVM_IF(value < CONTACTS_RELATIONSHIP_TYPE_OTHER
2461 || CONTACTS_RELATIONSHIP_TYPE_CUSTOM < value,
2462 CONTACTS_ERROR_INVALID_PARAMETER, "relationship type is in invalid range (%d)", value);
2463 CHECK_DIRTY_VAL(relationship->type, value, is_dirty);
2464 relationship->type = value;
2467 /* LCOV_EXCL_START */
2468 ERR("property_id(%d) is not supported in value(relationship)", property_id);
2469 return CONTACTS_ERROR_INVALID_PARAMETER;
2470 /* LCOV_EXCL_STOP */
2472 return CONTACTS_ERROR_NONE;
2475 static int __ctsvc_image_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
2477 ctsvc_image_s *image = (ctsvc_image_s*)record;
2479 switch (property_id) {
2480 case CTSVC_PROPERTY_IMAGE_ID:
2481 CHECK_DIRTY_VAL(image->id, value, is_dirty);
2484 case CTSVC_PROPERTY_IMAGE_CONTACT_ID:
2485 RETVM_IF(0 < image->id, CONTACTS_ERROR_INVALID_PARAMETER,
2486 "property_id(%d) is a read-only value (image)", property_id);
2487 CHECK_DIRTY_VAL(image->contact_id, value, is_dirty);
2488 image->contact_id = value;
2490 case CTSVC_PROPERTY_IMAGE_TYPE:
2491 RETVM_IF(value < CONTACTS_IMAGE_TYPE_OTHER || CONTACTS_IMAGE_TYPE_CUSTOM < value,
2492 CONTACTS_ERROR_INVALID_PARAMETER,
2493 "image type is in invalid range (%d)", value);
2494 CHECK_DIRTY_VAL(image->type, value, is_dirty);
2495 image->type = value;
2498 /* LCOV_EXCL_START */
2499 ERR("property_id(%d) is not supported in value(image)", property_id);
2500 return CONTACTS_ERROR_INVALID_PARAMETER;
2501 /* LCOV_EXCL_STOP */
2503 return CONTACTS_ERROR_NONE;
2506 static int __ctsvc_extension_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
2508 ctsvc_extension_s *extension = (ctsvc_extension_s*)record;
2510 switch (property_id) {
2511 case CTSVC_PROPERTY_EXTENSION_ID:
2512 CHECK_DIRTY_VAL(extension->id, value, is_dirty);
2513 extension->id = value;
2515 case CTSVC_PROPERTY_EXTENSION_CONTACT_ID:
2516 RETVM_IF(0 < extension->id, CONTACTS_ERROR_INVALID_PARAMETER,
2517 "property_id(%d) is a read-only value (extension)", property_id);
2518 CHECK_DIRTY_VAL(extension->contact_id, value, is_dirty);
2519 extension->contact_id = value;
2521 case CTSVC_PROPERTY_EXTENSION_DATA1:
2522 CHECK_DIRTY_VAL(extension->data1, value, is_dirty);
2523 extension->data1 = value;
2526 /* LCOV_EXCL_START */
2527 ERR("property_id(%d) is not supported in value(extension)", property_id);
2528 return CONTACTS_ERROR_INVALID_PARAMETER;
2529 /* LCOV_EXCL_STOP */
2531 return CONTACTS_ERROR_NONE;
2534 static int __ctsvc_sip_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
2536 ctsvc_sip_s *sip = (ctsvc_sip_s *)record;
2538 switch (property_id) {
2539 case CTSVC_PROPERTY_SIP_ID:
2540 CHECK_DIRTY_VAL(sip->id, value, is_dirty);
2543 case CTSVC_PROPERTY_SIP_CONTACT_ID:
2544 RETVM_IF(0 < sip->id, CONTACTS_ERROR_INVALID_PARAMETER,
2545 "Invalid parameter : property_id(%d) is a read-only value (sip)", property_id);
2546 CHECK_DIRTY_VAL(sip->contact_id, value, is_dirty);
2547 sip->contact_id = value;
2549 case CTSVC_PROPERTY_SIP_TYPE:
2550 RETVM_IF(value < CONTACTS_SIP_TYPE_OTHER,
2551 CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : sip type is in invalid range (%d)", value);
2552 CHECK_DIRTY_VAL(sip->type, value, is_dirty);
2556 /* LCOV_EXCL_START */
2557 ERR("Invalid parameter : property_id(0x%x) is not supported in value(sip)", property_id);
2558 return CONTACTS_ERROR_INVALID_PARAMETER;
2559 /* LCOV_EXCL_STOP */
2561 return CONTACTS_ERROR_NONE;
2564 static int __ctsvc_contact_get_str_real(contacts_record_h record, unsigned int property_id, char **out_str, bool copy)
2566 ctsvc_contact_s *contact = (ctsvc_contact_s*)record;
2567 switch (property_id) {
2568 case CTSVC_PROPERTY_CONTACT_DISPLAY_NAME:
2569 *out_str = GET_STR(copy, contact->display_name);
2571 case CTSVC_PROPERTY_CONTACT_RINGTONE:
2572 *out_str = GET_STR(copy, contact->ringtone_path);
2574 case CTSVC_PROPERTY_CONTACT_IMAGE_THUMBNAIL:
2575 *out_str = GET_STR(copy, contact->image_thumbnail_path);
2577 case CTSVC_PROPERTY_CONTACT_UID:
2578 *out_str = GET_STR(copy, contact->uid);
2580 case CTSVC_PROPERTY_CONTACT_VIBRATION:
2581 *out_str = GET_STR(copy, contact->vibration);
2583 case CTSVC_PROPERTY_CONTACT_MESSAGE_ALERT:
2584 *out_str = GET_STR(copy, contact->message_alert);
2587 /* LCOV_EXCL_START */
2588 ERR("property_id(%d) is not supported in value(contact)", property_id);
2589 return CONTACTS_ERROR_INVALID_PARAMETER;
2590 /* LCOV_EXCL_STOP */
2592 return CONTACTS_ERROR_NONE;
2595 static int __ctsvc_contact_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str)
2597 return __ctsvc_contact_get_str_real(record, property_id, out_str, false);
2600 static int __ctsvc_contact_get_str(contacts_record_h record, unsigned int property_id, char **out_str)
2602 return __ctsvc_contact_get_str_real(record, property_id, out_str, true);
2605 static int __ctsvc_contact_get_record_list_p(contacts_record_h record,
2606 unsigned int property_id, contacts_list_h *list)
2608 ctsvc_contact_s *contact = (ctsvc_contact_s*)record;
2610 switch (property_id) {
2611 case CTSVC_PROPERTY_CONTACT_NAME:
2612 *list = (contacts_list_h)contact->name;
2614 case CTSVC_PROPERTY_CONTACT_COMPANY:
2615 *list = (contacts_list_h)contact->company;
2617 case CTSVC_PROPERTY_CONTACT_NOTE:
2618 *list = (contacts_list_h)contact->note;
2620 case CTSVC_PROPERTY_CONTACT_NUMBER:
2621 *list = (contacts_list_h)contact->numbers;
2623 case CTSVC_PROPERTY_CONTACT_EMAIL:
2624 *list = (contacts_list_h)contact->emails;
2626 case CTSVC_PROPERTY_CONTACT_EVENT:
2627 *list = (contacts_list_h)contact->events;
2629 case CTSVC_PROPERTY_CONTACT_MESSENGER:
2630 *list = (contacts_list_h)contact->messengers;
2632 case CTSVC_PROPERTY_CONTACT_ADDRESS:
2633 *list = (contacts_list_h)contact->postal_addrs;
2635 case CTSVC_PROPERTY_CONTACT_URL:
2636 *list = (contacts_list_h)contact->urls;
2638 case CTSVC_PROPERTY_CONTACT_NICKNAME:
2639 *list = (contacts_list_h)contact->nicknames;
2641 case CTSVC_PROPERTY_CONTACT_PROFILE:
2642 *list = (contacts_list_h)contact->profiles;
2644 case CTSVC_PROPERTY_CONTACT_RELATIONSHIP:
2645 *list = (contacts_list_h)contact->relationships;
2647 case CTSVC_PROPERTY_CONTACT_IMAGE:
2648 *list = (contacts_list_h)contact->images;
2650 case CTSVC_PROPERTY_CONTACT_GROUP_RELATION:
2651 *list = (contacts_list_h)contact->grouprelations;
2653 case CTSVC_PROPERTY_CONTACT_EXTENSION:
2654 *list = (contacts_list_h)contact->extensions;
2656 case CTSVC_PROPERTY_CONTACT_SIP:
2657 *list = (contacts_list_h)contact->sips;
2660 /* LCOV_EXCL_START */
2661 ERR("property_id(%d) is not supported in value(contact)", property_id);
2662 return CONTACTS_ERROR_INVALID_PARAMETER;
2663 /* LCOV_EXCL_STOP */
2665 return CONTACTS_ERROR_NONE;
2668 static int __ctsvc_contact_get_child_record_count(contacts_record_h record,
2669 unsigned int property_id, int *count)
2672 contacts_list_h list = NULL;
2675 ret = __ctsvc_contact_get_record_list_p(record, property_id, &list);
2676 if (CONTACTS_ERROR_INVALID_PARAMETER == ret)
2680 contacts_list_get_count(list, count);
2682 return CONTACTS_ERROR_NONE;
2685 static int __ctsvc_contact_get_child_record_at_p(contacts_record_h record,
2686 unsigned int property_id, int index, contacts_record_h *out_record)
2690 contacts_list_h list = NULL;
2692 ret = __ctsvc_contact_get_record_list_p(record, property_id, &list);
2693 if (CONTACTS_ERROR_INVALID_PARAMETER == ret)
2696 contacts_list_get_count(list, &count);
2697 if (count < index) {
2698 /* LCOV_EXCL_START */
2699 ERR("The index(%d) is greather than total length(%d)", index, count);
2701 return CONTACTS_ERROR_NO_DATA;
2702 /* LCOV_EXCL_STOP */
2704 return ctsvc_list_get_nth_record_p(list, index, out_record);
2708 static int __ctsvc_contact_clone_child_record_list(contacts_record_h record,
2709 unsigned int property_id, contacts_list_h *out_list)
2713 contacts_list_h list = NULL;
2715 ret = __ctsvc_contact_get_record_list_p(record, property_id, &list);
2716 if (CONTACTS_ERROR_INVALID_PARAMETER == ret)
2719 contacts_list_get_count(list, &count);
2722 return CONTACTS_ERROR_NO_DATA;
2724 ctsvc_list_clone(list, out_list);
2726 return CONTACTS_ERROR_NONE;
2730 static int __ctsvc_contact_reset_child_record_id(contacts_record_h child_record)
2732 ctsvc_record_s *record = (ctsvc_record_s*)child_record;
2734 switch (record->r_type) {
2735 case CTSVC_RECORD_NAME:
2736 ((ctsvc_name_s*)record)->id = 0;
2738 case CTSVC_RECORD_COMPANY:
2739 ((ctsvc_company_s*)record)->id = 0;
2741 case CTSVC_RECORD_NOTE:
2742 ((ctsvc_note_s*)record)->id = 0;
2744 case CTSVC_RECORD_NUMBER:
2745 ((ctsvc_number_s*)record)->id = 0;
2747 case CTSVC_RECORD_EMAIL:
2748 ((ctsvc_email_s*)record)->id = 0;
2750 case CTSVC_RECORD_URL:
2751 ((ctsvc_url_s*)record)->id = 0;
2753 case CTSVC_RECORD_EVENT:
2754 ((ctsvc_event_s*)record)->id = 0;
2756 case CTSVC_RECORD_NICKNAME:
2757 ((ctsvc_nickname_s*)record)->id = 0;
2759 case CTSVC_RECORD_ADDRESS:
2760 ((ctsvc_address_s*)record)->id = 0;
2762 case CTSVC_RECORD_MESSENGER:
2763 ((ctsvc_messenger_s*)record)->id = 0;
2765 case CTSVC_RECORD_GROUP_RELATION:
2766 ((ctsvc_group_relation_s*)record)->id = 0;
2768 case CTSVC_RECORD_ACTIVITY:
2769 ((ctsvc_activity_s*)record)->id = 0;
2771 case CTSVC_RECORD_PROFILE:
2772 ((ctsvc_profile_s*)record)->id = 0;
2774 case CTSVC_RECORD_RELATIONSHIP:
2775 ((ctsvc_relationship_s*)record)->id = 0;
2777 case CTSVC_RECORD_IMAGE:
2778 ((ctsvc_image_s*)record)->id = 0;
2780 case CTSVC_RECORD_EXTENSION:
2781 ((ctsvc_extension_s*)record)->id = 0;
2783 case CTSVC_RECORD_SIP:
2784 ((ctsvc_sip_s *)record)->id = 0;
2787 /* LCOV_EXCL_START */
2788 ERR("record(%d) is not child of contact", record->r_type);
2789 return CONTACTS_ERROR_INVALID_PARAMETER;
2790 /* LCOV_EXCL_STOP */
2792 return CONTACTS_ERROR_NONE;
2795 static int __ctsvc_contact_get_child_record_id(contacts_record_h child_record)
2797 ctsvc_record_s *record = (ctsvc_record_s*)child_record;
2799 switch (record->r_type) {
2800 case CTSVC_RECORD_NAME:
2801 return ((ctsvc_name_s*)record)->id;
2802 case CTSVC_RECORD_COMPANY:
2803 return ((ctsvc_company_s*)record)->id;
2804 case CTSVC_RECORD_NOTE:
2805 return ((ctsvc_note_s*)record)->id;
2806 case CTSVC_RECORD_NUMBER:
2807 return ((ctsvc_number_s*)record)->id;
2808 case CTSVC_RECORD_EMAIL:
2809 return ((ctsvc_email_s*)record)->id;
2810 case CTSVC_RECORD_URL:
2811 return ((ctsvc_url_s*)record)->id;
2812 case CTSVC_RECORD_EVENT:
2813 return ((ctsvc_event_s*)record)->id;
2814 case CTSVC_RECORD_NICKNAME:
2815 return ((ctsvc_nickname_s*)record)->id;
2816 case CTSVC_RECORD_ADDRESS:
2817 return ((ctsvc_address_s*)record)->id;
2818 case CTSVC_RECORD_MESSENGER:
2819 return ((ctsvc_messenger_s*)record)->id;
2820 case CTSVC_RECORD_GROUP_RELATION:
2821 return ((ctsvc_group_relation_s*)record)->id;
2822 case CTSVC_RECORD_ACTIVITY:
2823 return ((ctsvc_activity_s*)record)->id;
2824 case CTSVC_RECORD_PROFILE:
2825 return ((ctsvc_profile_s*)record)->id;
2826 case CTSVC_RECORD_RELATIONSHIP:
2827 return ((ctsvc_relationship_s*)record)->id;
2828 case CTSVC_RECORD_IMAGE:
2829 return ((ctsvc_image_s*)record)->id;
2830 case CTSVC_RECORD_EXTENSION:
2831 return ((ctsvc_extension_s*)record)->id;
2832 case CTSVC_RECORD_SIP:
2833 return ((ctsvc_sip_s *)record)->id;
2835 /* LCOV_EXCL_START */
2836 ERR("record(%d) is not child of contact", record->r_type);
2838 /* LCOV_EXCL_STOP */
2843 static int __ctsvc_contact_add_child_record(contacts_record_h record,
2844 unsigned int property_id, contacts_record_h child_record)
2847 contacts_list_h list = NULL;
2848 ctsvc_record_s *s_record = (ctsvc_record_s*)child_record;
2850 ret = __ctsvc_contact_get_record_list_p(record, property_id, &list);
2851 if (CONTACTS_ERROR_INVALID_PARAMETER == ret)
2854 if (CTSVC_RECORD_NAME == s_record->r_type && 1 == ((ctsvc_list_s*)list)->count) {
2855 /* LCOV_EXCL_START */
2856 ERR("This type(%d) of child_record can not be added anymore", s_record->r_type);
2857 return CONTACTS_ERROR_INVALID_PARAMETER;
2858 /* LCOV_EXCL_STOP */
2861 ret = __ctsvc_contact_reset_child_record_id(child_record);
2862 if (CONTACTS_ERROR_INVALID_PARAMETER == ret)
2865 ctsvc_list_add_child(list, child_record);
2867 return CONTACTS_ERROR_NONE;
2870 static int __ctsvc_contact_remove_child_record(contacts_record_h record,
2871 unsigned int property_id, contacts_record_h child_record)
2875 contacts_list_h list = NULL;
2877 ret = __ctsvc_contact_get_record_list_p(record, property_id, &list);
2878 if (CONTACTS_ERROR_INVALID_PARAMETER == ret)
2881 id = __ctsvc_contact_get_child_record_id(child_record);
2882 ctsvc_list_remove_child(list, child_record, id ? true : false);
2884 return CONTACTS_ERROR_NONE;
2887 static int __ctsvc_simple_contact_get_str_real(contacts_record_h record,
2888 unsigned int property_id, char **out_str, bool copy)
2890 ctsvc_simple_contact_s *contact = (ctsvc_simple_contact_s*)record;
2892 switch (property_id) {
2893 case CTSVC_PROPERTY_CONTACT_DISPLAY_NAME:
2894 *out_str = GET_STR(copy, contact->display_name);
2896 case CTSVC_PROPERTY_CONTACT_RINGTONE:
2897 *out_str = GET_STR(copy, contact->ringtone_path);
2899 case CTSVC_PROPERTY_CONTACT_IMAGE_THUMBNAIL:
2900 *out_str = GET_STR(copy, contact->image_thumbnail_path);
2902 case CTSVC_PROPERTY_CONTACT_UID:
2903 *out_str = GET_STR(copy, contact->uid);
2905 case CTSVC_PROPERTY_CONTACT_VIBRATION:
2906 *out_str = GET_STR(copy, contact->vibration);
2908 case CTSVC_PROPERTY_CONTACT_MESSAGE_ALERT:
2909 *out_str = GET_STR(copy, contact->message_alert);
2912 /* LCOV_EXCL_START */
2913 ERR("property_id(%d) is not supported in value(simple_contact)", property_id);
2914 return CONTACTS_ERROR_INVALID_PARAMETER;
2915 /* LCOV_EXCL_STOP */
2917 return CONTACTS_ERROR_NONE;
2920 static int __ctsvc_simple_contact_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str)
2922 return __ctsvc_simple_contact_get_str_real(record, property_id, out_str, false);
2925 static int __ctsvc_simple_contact_get_str(contacts_record_h record, unsigned int property_id, char **out_str)
2927 return __ctsvc_simple_contact_get_str_real(record, property_id, out_str, true);
2930 static int __ctsvc_name_get_str_real(contacts_record_h record, unsigned int property_id, char **out_str, bool copy)
2932 ctsvc_name_s *name = (ctsvc_name_s*)record;
2934 switch (property_id) {
2935 case CTSVC_PROPERTY_NAME_FIRST:
2936 *out_str = GET_STR(copy, name->first);
2938 case CTSVC_PROPERTY_NAME_LAST:
2939 *out_str = GET_STR(copy, name->last);
2941 case CTSVC_PROPERTY_NAME_ADDITION:
2942 *out_str = GET_STR(copy, name->addition);
2944 case CTSVC_PROPERTY_NAME_SUFFIX:
2945 *out_str = GET_STR(copy, name->suffix);
2947 case CTSVC_PROPERTY_NAME_PREFIX:
2948 *out_str = GET_STR(copy, name->prefix);
2950 case CTSVC_PROPERTY_NAME_PHONETIC_FIRST:
2951 *out_str = GET_STR(copy, name->phonetic_first);
2953 case CTSVC_PROPERTY_NAME_PHONETIC_MIDDLE:
2954 *out_str = GET_STR(copy, name->phonetic_middle);
2956 case CTSVC_PROPERTY_NAME_PHONETIC_LAST:
2957 *out_str = GET_STR(copy, name->phonetic_last);
2960 /* LCOV_EXCL_START */
2961 ERR("property_id(%d) is not supported in value(name)", property_id);
2962 return CONTACTS_ERROR_INVALID_PARAMETER;
2963 /* LCOV_EXCL_STOP */
2965 return CONTACTS_ERROR_NONE;
2968 static int __ctsvc_name_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str)
2970 return __ctsvc_name_get_str_real(record, property_id, out_str, false);
2973 static int __ctsvc_name_get_str(contacts_record_h record, unsigned int property_id, char **out_str)
2975 return __ctsvc_name_get_str_real(record, property_id, out_str, true);
2978 static int __ctsvc_company_get_str_real(contacts_record_h record, unsigned int property_id, char **out_str, bool copy)
2980 ctsvc_company_s *company = (ctsvc_company_s*)record;
2982 switch (property_id) {
2983 case CTSVC_PROPERTY_COMPANY_LABEL:
2984 *out_str = GET_STR(copy, company->label);
2986 case CTSVC_PROPERTY_COMPANY_NAME:
2987 *out_str = GET_STR(copy, company->name);
2989 case CTSVC_PROPERTY_COMPANY_DEPARTMENT:
2990 *out_str = GET_STR(copy, company->department);
2992 case CTSVC_PROPERTY_COMPANY_JOB_TITLE:
2993 *out_str = GET_STR(copy, company->job_title);
2995 case CTSVC_PROPERTY_COMPANY_ASSISTANT_NAME:
2996 *out_str = GET_STR(copy, company->assistant_name);
2998 case CTSVC_PROPERTY_COMPANY_ROLE:
2999 *out_str = GET_STR(copy, company->role);
3001 case CTSVC_PROPERTY_COMPANY_LOGO:
3002 *out_str = GET_STR(copy, company->logo);
3004 case CTSVC_PROPERTY_COMPANY_LOCATION:
3005 *out_str = GET_STR(copy, company->location);
3007 case CTSVC_PROPERTY_COMPANY_DESCRIPTION:
3008 *out_str = GET_STR(copy, company->description);
3010 case CTSVC_PROPERTY_COMPANY_PHONETIC_NAME:
3011 *out_str = GET_STR(copy, company->phonetic_name);
3014 /* LCOV_EXCL_START */
3015 ERR("property_id(%d) is not supported in value(company)", property_id);
3016 return CONTACTS_ERROR_INVALID_PARAMETER;
3017 /* LCOV_EXCL_STOP */
3019 return CONTACTS_ERROR_NONE;
3022 static int __ctsvc_company_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str)
3024 return __ctsvc_company_get_str_real(record, property_id, out_str, false);
3027 static int __ctsvc_company_get_str(contacts_record_h record, unsigned int property_id, char **out_str)
3029 return __ctsvc_company_get_str_real(record, property_id, out_str, true);
3032 static int __ctsvc_note_get_str_real(contacts_record_h record, unsigned int property_id, char **out_str, bool copy)
3034 ctsvc_note_s *note = (ctsvc_note_s*)record;
3036 switch (property_id) {
3037 case CTSVC_PROPERTY_NOTE_NOTE:
3038 *out_str = GET_STR(copy, note->note);
3041 /* LCOV_EXCL_START */
3042 ERR("property_id(%d) is not supported in value(note)", property_id);
3043 return CONTACTS_ERROR_INVALID_PARAMETER;
3044 /* LCOV_EXCL_STOP */
3046 return CONTACTS_ERROR_NONE;
3049 static int __ctsvc_note_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str)
3051 return __ctsvc_note_get_str_real(record, property_id, out_str, false);
3054 static int __ctsvc_note_get_str(contacts_record_h record, unsigned int property_id, char **out_str)
3056 return __ctsvc_note_get_str_real(record, property_id, out_str, true);
3059 static int __ctsvc_number_get_str_real(contacts_record_h record, unsigned int property_id, char **out_str, bool copy)
3061 ctsvc_number_s *number = (ctsvc_number_s*)record;
3063 switch (property_id) {
3064 case CTSVC_PROPERTY_NUMBER_LABEL:
3065 *out_str = GET_STR(copy, number->label);
3067 case CTSVC_PROPERTY_NUMBER_NUMBER:
3068 *out_str = GET_STR(copy, number->number);
3071 /* LCOV_EXCL_START */
3072 ERR("property_id(%d) is not supported in value(number)", property_id);
3073 return CONTACTS_ERROR_INVALID_PARAMETER;
3074 /* LCOV_EXCL_STOP */
3076 return CONTACTS_ERROR_NONE;
3079 static int __ctsvc_number_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str)
3081 return __ctsvc_number_get_str_real(record, property_id, out_str, false);
3084 static int __ctsvc_number_get_str(contacts_record_h record, unsigned int property_id, char **out_str)
3086 return __ctsvc_number_get_str_real(record, property_id, out_str, true);
3089 static int __ctsvc_email_get_str_real(contacts_record_h record, unsigned int property_id, char **out_str, bool copy)
3091 ctsvc_email_s *email = (ctsvc_email_s*)record;
3093 switch (property_id) {
3094 case CTSVC_PROPERTY_EMAIL_EMAIL:
3095 *out_str = GET_STR(copy, email->email_addr);
3097 case CTSVC_PROPERTY_EMAIL_LABEL:
3098 *out_str = GET_STR(copy, email->label);
3101 /* LCOV_EXCL_START */
3102 ERR("property_id(%d) is not supported in value(email)", property_id);
3103 return CONTACTS_ERROR_INVALID_PARAMETER;
3104 /* LCOV_EXCL_STOP */
3106 return CONTACTS_ERROR_NONE;
3109 static int __ctsvc_email_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str)
3111 return __ctsvc_email_get_str_real(record, property_id, out_str, false);
3114 static int __ctsvc_email_get_str(contacts_record_h record, unsigned int property_id, char **out_str)
3116 return __ctsvc_email_get_str_real(record, property_id, out_str, true);
3119 static int __ctsvc_url_get_str_real(contacts_record_h record, unsigned int property_id, char **out_str, bool copy)
3121 ctsvc_url_s *url = (ctsvc_url_s*)record;
3123 switch (property_id) {
3124 case CTSVC_PROPERTY_URL_URL:
3125 *out_str = GET_STR(copy, url->url);
3127 case CTSVC_PROPERTY_URL_LABEL:
3128 *out_str = GET_STR(copy, url->label);
3131 /* LCOV_EXCL_START */
3132 ERR("property_id(%d) is not supported in value(url)", property_id);
3133 return CONTACTS_ERROR_INVALID_PARAMETER;
3134 /* LCOV_EXCL_STOP */
3136 return CONTACTS_ERROR_NONE;
3139 static int __ctsvc_url_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str)
3141 return __ctsvc_url_get_str_real(record, property_id, out_str, false);
3144 static int __ctsvc_url_get_str(contacts_record_h record, unsigned int property_id, char **out_str)
3146 return __ctsvc_url_get_str_real(record, property_id, out_str, true);
3149 static int __ctsvc_event_get_str_real(contacts_record_h record, unsigned int property_id, char **out_str, bool copy)
3151 ctsvc_event_s *event = (ctsvc_event_s*)record;
3153 switch (property_id) {
3154 case CTSVC_PROPERTY_EVENT_LABEL:
3155 *out_str = GET_STR(copy, event->label);
3158 /* LCOV_EXCL_START */
3159 ERR("property_id(%d) is not supported in value(event)", property_id);
3160 return CONTACTS_ERROR_INVALID_PARAMETER;
3161 /* LCOV_EXCL_STOP */
3163 return CONTACTS_ERROR_NONE;
3166 static int __ctsvc_event_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str)
3168 return __ctsvc_event_get_str_real(record, property_id, out_str, false);
3171 static int __ctsvc_event_get_str(contacts_record_h record, unsigned int property_id, char **out_str)
3173 return __ctsvc_event_get_str_real(record, property_id, out_str, true);
3176 static int __ctsvc_nickname_get_str_real(contacts_record_h record, unsigned int property_id, char **out_str, bool copy)
3178 ctsvc_nickname_s *nickname = (ctsvc_nickname_s*)record;
3180 switch (property_id) {
3181 case CTSVC_PROPERTY_NICKNAME_NAME:
3182 *out_str = GET_STR(copy, nickname->nickname);
3185 /* LCOV_EXCL_START */
3186 ERR("property_id(%d) is not supported in value(nickname)", property_id);
3187 return CONTACTS_ERROR_INVALID_PARAMETER;
3188 /* LCOV_EXCL_STOP */
3190 return CONTACTS_ERROR_NONE;
3193 static int __ctsvc_nickname_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str)
3195 return __ctsvc_nickname_get_str_real(record, property_id, out_str, false);
3198 static int __ctsvc_nickname_get_str(contacts_record_h record, unsigned int property_id, char **out_str)
3200 return __ctsvc_nickname_get_str_real(record, property_id, out_str, true);
3203 static int __ctsvc_address_get_str_real(contacts_record_h record, unsigned int property_id, char **out_str, bool copy)
3205 ctsvc_address_s *address = (ctsvc_address_s*)record;
3207 switch (property_id) {
3208 case CTSVC_PROPERTY_ADDRESS_LABEL:
3209 *out_str = GET_STR(copy, address->label);
3211 case CTSVC_PROPERTY_ADDRESS_POSTBOX:
3212 *out_str = GET_STR(copy, address->pobox);
3214 case CTSVC_PROPERTY_ADDRESS_POSTAL_CODE:
3215 *out_str = GET_STR(copy, address->postalcode);
3217 case CTSVC_PROPERTY_ADDRESS_REGION:
3218 *out_str = GET_STR(copy, address->region);
3220 case CTSVC_PROPERTY_ADDRESS_LOCALITY:
3221 *out_str = GET_STR(copy, address->locality);
3223 case CTSVC_PROPERTY_ADDRESS_STREET:
3224 *out_str = GET_STR(copy, address->street);
3226 case CTSVC_PROPERTY_ADDRESS_COUNTRY:
3227 *out_str = GET_STR(copy, address->country);
3229 case CTSVC_PROPERTY_ADDRESS_EXTENDED:
3230 *out_str = GET_STR(copy, address->extended);
3233 /* LCOV_EXCL_START */
3234 ERR("property_id(%d) is not supported in value(address)", property_id);
3235 return CONTACTS_ERROR_INVALID_PARAMETER;
3236 /* LCOV_EXCL_STOP */
3238 return CONTACTS_ERROR_NONE;
3241 static int __ctsvc_address_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str)
3243 return __ctsvc_address_get_str_real(record, property_id, out_str, false);
3246 static int __ctsvc_address_get_str(contacts_record_h record, unsigned int property_id, char **out_str)
3248 return __ctsvc_address_get_str_real(record, property_id, out_str, true);
3251 static int __ctsvc_messenger_get_str_real(contacts_record_h record, unsigned int property_id, char **out_str, bool copy)
3253 ctsvc_messenger_s *messenger = (ctsvc_messenger_s*)record;
3255 switch (property_id) {
3256 case CTSVC_PROPERTY_MESSENGER_LABEL:
3257 *out_str = GET_STR(copy, messenger->label);
3259 case CTSVC_PROPERTY_MESSENGER_IM_ID:
3260 *out_str = GET_STR(copy, messenger->im_id);
3263 /* LCOV_EXCL_START */
3264 ERR("property_id(%d) is not supported in value(messenger)", property_id);
3265 return CONTACTS_ERROR_INVALID_PARAMETER;
3266 /* LCOV_EXCL_STOP */
3268 return CONTACTS_ERROR_NONE;
3271 static int __ctsvc_messenger_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str)
3273 return __ctsvc_messenger_get_str_real(record, property_id, out_str, false);
3276 static int __ctsvc_messenger_get_str(contacts_record_h record, unsigned int property_id, char **out_str)
3278 return __ctsvc_messenger_get_str_real(record, property_id, out_str, true);
3281 static int __ctsvc_group_relation_get_str_real(contacts_record_h record,
3282 unsigned int property_id, char **out_str, bool copy)
3284 ctsvc_group_relation_s *group_relation = (ctsvc_group_relation_s*)record;
3286 switch (property_id) {
3287 case CTSVC_PROPERTY_GROUP_RELATION_GROUP_NAME:
3288 *out_str = GET_STR(copy, group_relation->group_name);
3291 /* LCOV_EXCL_START */
3292 ERR("property_id(%d) is not supported in value(group_relation)", property_id);
3293 return CONTACTS_ERROR_INVALID_PARAMETER;
3294 /* LCOV_EXCL_STOP */
3296 return CONTACTS_ERROR_NONE;
3299 static int __ctsvc_group_relation_get_str_p(contacts_record_h record,
3300 unsigned int property_id, char **out_str)
3302 return __ctsvc_group_relation_get_str_real(record, property_id, out_str, false);
3305 static int __ctsvc_group_relation_get_str(contacts_record_h record, unsigned int property_id, char **out_str)
3307 return __ctsvc_group_relation_get_str_real(record, property_id, out_str, true);
3310 static int __ctsvc_activity_get_str_real(contacts_record_h record, unsigned int property_id, char **out_str, bool copy)
3312 ctsvc_activity_s *activity = (ctsvc_activity_s*)record;
3314 switch (property_id) {
3315 case CTSVC_PROPERTY_ACTIVITY_SOURCE_NAME:
3316 *out_str = GET_STR(copy, activity->source_name);
3318 case CTSVC_PROPERTY_ACTIVITY_STATUS:
3319 *out_str = GET_STR(copy, activity->status);
3321 case CTSVC_PROPERTY_ACTIVITY_SERVICE_OPERATION:
3322 *out_str = GET_STR(copy, activity->service_operation);
3324 case CTSVC_PROPERTY_ACTIVITY_URI:
3325 *out_str = GET_STR(copy, activity->uri);
3328 /* LCOV_EXCL_START */
3329 ERR("property_id(%d) is not supported in value(activity)", property_id);
3330 return CONTACTS_ERROR_INVALID_PARAMETER;
3331 /* LCOV_EXCL_STOP */
3333 return CONTACTS_ERROR_NONE;
3336 static int __ctsvc_activity_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str)
3338 return __ctsvc_activity_get_str_real(record, property_id, out_str, false);
3341 static int __ctsvc_activity_get_str(contacts_record_h record, unsigned int property_id, char **out_str)
3343 return __ctsvc_activity_get_str_real(record, property_id, out_str, true);
3346 static int __ctsvc_activity_photo_get_str_real(contacts_record_h record, unsigned int property_id, char **out_str, bool copy)
3348 ctsvc_activity_photo_s *photo = (ctsvc_activity_photo_s*)record;
3350 switch (property_id) {
3351 case CTSVC_PROPERTY_ACTIVITY_PHOTO_URL:
3352 *out_str = GET_STR(copy, photo->photo_url);
3355 /* LCOV_EXCL_START */
3356 ERR("property_id(%d) is not supported in value(activity)", property_id);
3357 return CONTACTS_ERROR_INVALID_PARAMETER;
3358 /* LCOV_EXCL_STOP */
3360 return CONTACTS_ERROR_NONE;
3363 static int __ctsvc_activity_photo_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str)
3365 return __ctsvc_activity_photo_get_str_real(record, property_id, out_str, false);
3368 static int __ctsvc_activity_photo_get_str(contacts_record_h record, unsigned int property_id, char **out_str)
3370 return __ctsvc_activity_photo_get_str_real(record, property_id, out_str, true);
3373 static int __ctsvc_profile_get_str_real(contacts_record_h record, unsigned int property_id, char **out_str, bool copy)
3375 ctsvc_profile_s *profile = (ctsvc_profile_s*)record;
3377 switch (property_id) {
3378 case CTSVC_PROPERTY_PROFILE_UID:
3379 *out_str = GET_STR(copy, profile->uid);
3381 case CTSVC_PROPERTY_PROFILE_TEXT:
3382 *out_str = GET_STR(copy, profile->text);
3384 case CTSVC_PROPERTY_PROFILE_SERVICE_OPERATION:
3385 *out_str = GET_STR(copy, profile->service_operation);
3387 case CTSVC_PROPERTY_PROFILE_MIME:
3388 *out_str = GET_STR(copy, profile->mime);
3390 case CTSVC_PROPERTY_PROFILE_APP_ID:
3391 *out_str = GET_STR(copy, profile->app_id);
3393 case CTSVC_PROPERTY_PROFILE_URI:
3394 *out_str = GET_STR(copy, profile->uri);
3396 case CTSVC_PROPERTY_PROFILE_CATEGORY:
3397 *out_str = GET_STR(copy, profile->category);
3399 case CTSVC_PROPERTY_PROFILE_EXTRA_DATA:
3400 *out_str = GET_STR(copy, profile->extra_data);
3403 /* LCOV_EXCL_START */
3404 ERR("property_id(%d) is not supported in value(profile)", property_id);
3405 return CONTACTS_ERROR_INVALID_PARAMETER;
3406 /* LCOV_EXCL_STOP */
3408 return CONTACTS_ERROR_NONE;
3411 static int __ctsvc_profile_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str)
3413 return __ctsvc_profile_get_str_real(record, property_id, out_str, false);
3416 static int __ctsvc_profile_get_str(contacts_record_h record, unsigned int property_id, char **out_str)
3418 return __ctsvc_profile_get_str_real(record, property_id, out_str, true);
3421 static int __ctsvc_relationship_get_str_real(contacts_record_h record, unsigned int property_id, char **out_str, bool copy)
3423 ctsvc_relationship_s *relationship = (ctsvc_relationship_s*)record;
3425 switch (property_id) {
3426 case CTSVC_PROPERTY_RELATIONSHIP_LABEL:
3427 *out_str = GET_STR(copy, relationship->label);
3429 case CTSVC_PROPERTY_RELATIONSHIP_NAME:
3430 *out_str = GET_STR(copy, relationship->name);
3433 /* LCOV_EXCL_START */
3434 ERR("property_id(%d) is not supported in value(relationship)", property_id);
3435 return CONTACTS_ERROR_INVALID_PARAMETER;
3436 /* LCOV_EXCL_STOP */
3438 return CONTACTS_ERROR_NONE;
3441 static int __ctsvc_relationship_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str)
3443 return __ctsvc_relationship_get_str_real(record, property_id, out_str, false);
3446 static int __ctsvc_relationship_get_str(contacts_record_h record, unsigned int property_id, char **out_str)
3448 return __ctsvc_relationship_get_str_real(record, property_id, out_str, true);
3451 static int __ctsvc_image_get_str_real(contacts_record_h record, unsigned int property_id, char **out_str, bool copy)
3453 ctsvc_image_s *image = (ctsvc_image_s*)record;
3455 switch (property_id) {
3456 case CTSVC_PROPERTY_IMAGE_LABEL:
3457 *out_str = GET_STR(copy, image->label);
3459 case CTSVC_PROPERTY_IMAGE_PATH:
3460 *out_str = GET_STR(copy, image->path);
3463 /* LCOV_EXCL_START */
3464 ERR("property_id(%d) is not supported in value(image)", property_id);
3465 return CONTACTS_ERROR_INVALID_PARAMETER;
3466 /* LCOV_EXCL_STOP */
3468 return CONTACTS_ERROR_NONE;
3471 static int __ctsvc_image_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str)
3473 return __ctsvc_image_get_str_real(record, property_id, out_str, false);
3476 static int __ctsvc_image_get_str(contacts_record_h record, unsigned int property_id, char **out_str)
3478 return __ctsvc_image_get_str_real(record, property_id, out_str, true);
3481 static int __ctsvc_extension_get_str_real(contacts_record_h record, unsigned int property_id, char **out_str, bool copy)
3483 ctsvc_extension_s *extension = (ctsvc_extension_s*)record;
3485 switch (property_id) {
3486 case CTSVC_PROPERTY_EXTENSION_DATA2:
3487 *out_str = GET_STR(copy, extension->data2);
3489 case CTSVC_PROPERTY_EXTENSION_DATA3:
3490 *out_str = GET_STR(copy, extension->data3);
3492 case CTSVC_PROPERTY_EXTENSION_DATA4:
3493 *out_str = GET_STR(copy, extension->data4);
3495 case CTSVC_PROPERTY_EXTENSION_DATA5:
3496 *out_str = GET_STR(copy, extension->data5);
3498 case CTSVC_PROPERTY_EXTENSION_DATA6:
3499 *out_str = GET_STR(copy, extension->data6);
3501 case CTSVC_PROPERTY_EXTENSION_DATA7:
3502 *out_str = GET_STR(copy, extension->data7);
3504 case CTSVC_PROPERTY_EXTENSION_DATA8:
3505 *out_str = GET_STR(copy, extension->data8);
3507 case CTSVC_PROPERTY_EXTENSION_DATA9:
3508 *out_str = GET_STR(copy, extension->data9);
3510 case CTSVC_PROPERTY_EXTENSION_DATA10:
3511 *out_str = GET_STR(copy, extension->data10);
3513 case CTSVC_PROPERTY_EXTENSION_DATA11:
3514 *out_str = GET_STR(copy, extension->data11);
3516 case CTSVC_PROPERTY_EXTENSION_DATA12:
3517 *out_str = GET_STR(copy, extension->data12);
3520 /* LCOV_EXCL_START */
3521 ERR("property_id(%d) is not supported in value(extension)", property_id);
3522 return CONTACTS_ERROR_INVALID_PARAMETER;
3523 /* LCOV_EXCL_STOP */
3525 return CONTACTS_ERROR_NONE;
3528 static int __ctsvc_extension_get_str_p(contacts_record_h record, unsigned int property_id, char **out_str)
3530 return __ctsvc_extension_get_str_real(record, property_id, out_str, false);
3533 static int __ctsvc_extension_get_str(contacts_record_h record, unsigned int property_id, char **out_str)
3535 return __ctsvc_extension_get_str_real(record, property_id, out_str, true);
3538 static int __ctsvc_sip_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy)
3540 ctsvc_sip_s *sip = (ctsvc_sip_s *)record;
3542 switch (property_id) {
3543 case CTSVC_PROPERTY_SIP_ADDRESS:
3544 *out_str = GET_STR(copy, sip->address);
3546 case CTSVC_PROPERTY_SIP_LABEL:
3547 *out_str = GET_STR(copy, sip->label);
3550 /* LCOV_EXCL_START */
3551 ERR("Invalid parameter : property_id(%d) is not supported in value(sip)", property_id);
3552 return CONTACTS_ERROR_INVALID_PARAMETER;
3553 /* LCOV_EXCL_STOP */
3555 return CONTACTS_ERROR_NONE;
3558 static int __ctsvc_sip_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str)
3560 return __ctsvc_sip_get_str_real(record, property_id, out_str, false);
3563 static int __ctsvc_sip_get_str(contacts_record_h record, unsigned int property_id, char** out_str)
3565 return __ctsvc_sip_get_str_real(record, property_id, out_str, true);
3568 static int __ctsvc_contact_set_str(contacts_record_h record, unsigned int property_id,
3569 const char *str, bool *is_dirty)
3571 ctsvc_contact_s *contact = (ctsvc_contact_s*)record;
3573 switch (property_id) {
3574 case CTSVC_PROPERTY_CONTACT_DISPLAY_NAME:
3575 CHECK_DIRTY_STR(contact->display_name, str, is_dirty);
3576 FREEandSTRDUP(contact->display_name, str);
3579 ERR("property_id(%d) is a read-only value (contact)", property_id);
3580 return CONTACTS_ERROR_INVALID_PARAMETER;
3582 case CTSVC_PROPERTY_CONTACT_RINGTONE:
3583 CHECK_DIRTY_STR(contact->ringtone_path, str, is_dirty);
3584 FREEandSTRDUP(contact->ringtone_path, str);
3586 case CTSVC_PROPERTY_CONTACT_IMAGE_THUMBNAIL:
3587 CHECK_DIRTY_STR(contact->image_thumbnail_path, str, is_dirty);
3588 FREEandSTRDUP(contact->image_thumbnail_path, str);
3590 case CTSVC_PROPERTY_CONTACT_UID:
3591 CHECK_DIRTY_STR(contact->uid, str, is_dirty);
3592 FREEandSTRDUP(contact->uid, str);
3594 case CTSVC_PROPERTY_CONTACT_VIBRATION:
3595 CHECK_DIRTY_STR(contact->vibration, str, is_dirty);
3596 FREEandSTRDUP(contact->vibration, str);
3598 case CTSVC_PROPERTY_CONTACT_MESSAGE_ALERT:
3599 CHECK_DIRTY_STR(contact->message_alert, str, is_dirty);
3600 FREEandSTRDUP(contact->message_alert, str);
3603 /* LCOV_EXCL_START */
3604 ERR("property_id(%d) is not supported in value(contact)", property_id);
3605 return CONTACTS_ERROR_INVALID_PARAMETER;
3606 /* LCOV_EXCL_STOP */
3608 return CONTACTS_ERROR_NONE;
3612 static int __ctsvc_simple_contact_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty)
3614 ctsvc_simple_contact_s *contact = (ctsvc_simple_contact_s*)record;
3616 switch (property_id) {
3617 case CTSVC_PROPERTY_CONTACT_DISPLAY_NAME:
3618 CHECK_DIRTY_STR(contact->display_name, str, is_dirty);
3619 FREEandSTRDUP(contact->display_name, str);
3622 ERR("property_id(%d) is a read-only value (contact)", property_id);
3623 return CONTACTS_ERROR_INVALID_PARAMETER;
3625 case CTSVC_PROPERTY_CONTACT_RINGTONE:
3626 CHECK_DIRTY_STR(contact->ringtone_path, str, is_dirty);
3627 FREEandSTRDUP(contact->ringtone_path, str);
3629 case CTSVC_PROPERTY_CONTACT_IMAGE_THUMBNAIL:
3630 CHECK_DIRTY_STR(contact->image_thumbnail_path, str, is_dirty);
3631 FREEandSTRDUP(contact->image_thumbnail_path, str);
3633 case CTSVC_PROPERTY_CONTACT_UID:
3634 CHECK_DIRTY_STR(contact->uid, str, is_dirty);
3635 FREEandSTRDUP(contact->uid, str);
3637 case CTSVC_PROPERTY_CONTACT_VIBRATION:
3638 CHECK_DIRTY_STR(contact->vibration, str, is_dirty);
3639 FREEandSTRDUP(contact->vibration, str);
3641 case CTSVC_PROPERTY_CONTACT_MESSAGE_ALERT:
3642 CHECK_DIRTY_STR(contact->message_alert, str, is_dirty);
3643 FREEandSTRDUP(contact->message_alert, str);
3646 /* LCOV_EXCL_START */
3647 ERR("property_id(%d) is not supported in value(simple_contact)", property_id);
3648 return CONTACTS_ERROR_INVALID_PARAMETER;
3649 /* LCOV_EXCL_STOP */
3651 return CONTACTS_ERROR_NONE;
3654 static int __ctsvc_name_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty)
3656 ctsvc_name_s *name = (ctsvc_name_s*)record;
3658 switch (property_id) {
3659 case CTSVC_PROPERTY_NAME_FIRST:
3660 CHECK_DIRTY_STR(name->first, str, is_dirty);
3661 FREEandSTRDUP(name->first, str);
3663 case CTSVC_PROPERTY_NAME_LAST:
3664 CHECK_DIRTY_STR(name->last, str, is_dirty);
3665 FREEandSTRDUP(name->last, str);
3667 case CTSVC_PROPERTY_NAME_ADDITION:
3668 CHECK_DIRTY_STR(name->addition, str, is_dirty);
3669 FREEandSTRDUP(name->addition, str);
3671 case CTSVC_PROPERTY_NAME_SUFFIX:
3672 CHECK_DIRTY_STR(name->suffix, str, is_dirty);
3673 FREEandSTRDUP(name->suffix, str);
3675 case CTSVC_PROPERTY_NAME_PREFIX:
3676 CHECK_DIRTY_STR(name->prefix, str, is_dirty);
3677 FREEandSTRDUP(name->prefix, str);
3679 case CTSVC_PROPERTY_NAME_PHONETIC_FIRST:
3680 CHECK_DIRTY_STR(name->phonetic_first, str, is_dirty);
3681 FREEandSTRDUP(name->phonetic_first, str);
3683 case CTSVC_PROPERTY_NAME_PHONETIC_MIDDLE:
3684 CHECK_DIRTY_STR(name->phonetic_middle, str, is_dirty);
3685 FREEandSTRDUP(name->phonetic_middle, str);
3687 case CTSVC_PROPERTY_NAME_PHONETIC_LAST:
3688 CHECK_DIRTY_STR(name->phonetic_last, str, is_dirty);
3689 FREEandSTRDUP(name->phonetic_last, str);
3692 /* LCOV_EXCL_START */
3693 ERR("property_id(%d) is not supported in value(name)", property_id);
3694 return CONTACTS_ERROR_INVALID_PARAMETER;
3695 /* LCOV_EXCL_STOP */
3697 return CONTACTS_ERROR_NONE;
3700 static int __ctsvc_company_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty)
3702 ctsvc_company_s *company = (ctsvc_company_s*)record;
3704 switch (property_id) {
3705 case CTSVC_PROPERTY_COMPANY_LABEL:
3706 CHECK_DIRTY_STR(company->label, str, is_dirty);
3707 FREEandSTRDUP(company->label, str);
3709 case CTSVC_PROPERTY_COMPANY_NAME:
3710 CHECK_DIRTY_STR(company->name, str, is_dirty);
3711 FREEandSTRDUP(company->name, str);
3713 case CTSVC_PROPERTY_COMPANY_DEPARTMENT:
3714 CHECK_DIRTY_STR(company->department, str, is_dirty);
3715 FREEandSTRDUP(company->department, str);
3717 case CTSVC_PROPERTY_COMPANY_JOB_TITLE:
3718 CHECK_DIRTY_STR(company->job_title, str, is_dirty);
3719 FREEandSTRDUP(company->job_title, str);
3721 case CTSVC_PROPERTY_COMPANY_ASSISTANT_NAME:
3722 CHECK_DIRTY_STR(company->assistant_name, str, is_dirty);
3723 FREEandSTRDUP(company->assistant_name, str);
3725 case CTSVC_PROPERTY_COMPANY_ROLE:
3726 CHECK_DIRTY_STR(company->role, str, is_dirty);
3727 FREEandSTRDUP(company->role, str);
3729 case CTSVC_PROPERTY_COMPANY_LOGO:
3730 if (company->logo && company->is_vcard && (NULL == str || STRING_EQUAL != strcmp(company->logo, str))) {
3731 company->is_vcard = false;
3732 __ctsvc_temp_image_hash_table_remove(company->logo);
3734 CHECK_DIRTY_STR(company->logo, str, is_dirty);
3735 FREEandSTRDUP(company->logo, str);
3737 case CTSVC_PROPERTY_COMPANY_LOCATION:
3738 CHECK_DIRTY_STR(company->location, str, is_dirty);
3739 FREEandSTRDUP(company->location, str);
3741 case CTSVC_PROPERTY_COMPANY_DESCRIPTION:
3742 CHECK_DIRTY_STR(company->description, str, is_dirty);
3743 FREEandSTRDUP(company->description, str);
3745 case CTSVC_PROPERTY_COMPANY_PHONETIC_NAME:
3746 CHECK_DIRTY_STR(company->phonetic_name, str, is_dirty);
3747 FREEandSTRDUP(company->phonetic_name, str);
3750 /* LCOV_EXCL_START */
3751 ERR("property_id(%d) is not supported in value(company)", property_id);
3752 return CONTACTS_ERROR_INVALID_PARAMETER;
3753 /* LCOV_EXCL_STOP */
3755 return CONTACTS_ERROR_NONE;
3758 static int __ctsvc_note_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty)
3760 ctsvc_note_s *note = (ctsvc_note_s*)record;
3762 switch (property_id) {
3763 case CTSVC_PROPERTY_NOTE_NOTE:
3764 CHECK_DIRTY_STR(note->note, str, is_dirty);
3765 FREEandSTRDUP(note->note, str);
3768 /* LCOV_EXCL_START */
3769 ERR("property_id(%d) is not supported in value(note)", property_id);
3770 return CONTACTS_ERROR_INVALID_PARAMETER;
3771 /* LCOV_EXCL_STOP */
3773 return CONTACTS_ERROR_NONE;
3776 static int __ctsvc_number_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty)
3778 ctsvc_number_s *number = (ctsvc_number_s*)record;
3780 switch (property_id) {
3781 case CTSVC_PROPERTY_NUMBER_LABEL:
3782 CHECK_DIRTY_STR(number->label, str, is_dirty);
3783 FREEandSTRDUP(number->label, str);
3785 case CTSVC_PROPERTY_NUMBER_NUMBER:
3786 CHECK_DIRTY_STR(number->number, str, is_dirty);
3787 FREEandSTRDUP(number->number, str);
3790 /* LCOV_EXCL_START */
3791 ERR("property_id(%d) is not supported in value(number)", property_id);
3792 return CONTACTS_ERROR_INVALID_PARAMETER;
3793 /* LCOV_EXCL_STOP */
3795 return CONTACTS_ERROR_NONE;
3798 static int __ctsvc_email_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty)
3800 ctsvc_email_s *email = (ctsvc_email_s*)record;
3802 switch (property_id) {
3803 case CTSVC_PROPERTY_EMAIL_EMAIL:
3804 CHECK_DIRTY_STR(email->email_addr, str, is_dirty);
3805 FREEandSTRDUP(email->email_addr, str);
3807 case CTSVC_PROPERTY_EMAIL_LABEL:
3808 CHECK_DIRTY_STR(email->label, str, is_dirty);
3809 FREEandSTRDUP(email->label, str);
3812 /* LCOV_EXCL_START */
3813 ERR("property_id(%d) is not supported in value(email)", property_id);
3814 return CONTACTS_ERROR_INVALID_PARAMETER;
3815 /* LCOV_EXCL_STOP */
3817 return CONTACTS_ERROR_NONE;
3820 static int __ctsvc_url_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty)
3822 ctsvc_url_s *url = (ctsvc_url_s*)record;
3824 switch (property_id) {
3825 case CTSVC_PROPERTY_URL_URL:
3826 CHECK_DIRTY_STR(url->url, str, is_dirty);
3827 FREEandSTRDUP(url->url, str);
3829 case CTSVC_PROPERTY_URL_LABEL:
3830 CHECK_DIRTY_STR(url->label, str, is_dirty);
3831 FREEandSTRDUP(url->label, str);
3834 /* LCOV_EXCL_START */
3835 ERR("property_id(%d) is not supported in value(url)", property_id);
3836 return CONTACTS_ERROR_INVALID_PARAMETER;
3837 /* LCOV_EXCL_STOP */
3839 return CONTACTS_ERROR_NONE;
3842 static int __ctsvc_event_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty)
3844 ctsvc_event_s *event = (ctsvc_event_s*)record;
3846 switch (property_id) {
3847 case CTSVC_PROPERTY_EVENT_LABEL:
3848 CHECK_DIRTY_STR(event->label, str, is_dirty);
3849 FREEandSTRDUP(event->label, str);
3852 /* LCOV_EXCL_START */
3853 ERR("property_id(%d) is not supported in value(event)", property_id);
3854 return CONTACTS_ERROR_INVALID_PARAMETER;
3855 /* LCOV_EXCL_STOP */
3857 return CONTACTS_ERROR_NONE;
3860 static int __ctsvc_nickname_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty)
3862 ctsvc_nickname_s *nickname = (ctsvc_nickname_s*)record;
3864 switch (property_id) {
3865 case CTSVC_PROPERTY_NICKNAME_NAME:
3866 CHECK_DIRTY_STR(nickname->nickname, str, is_dirty);
3867 FREEandSTRDUP(nickname->nickname, str);
3870 /* LCOV_EXCL_START */
3871 ERR("property_id(%d) is not supported in value(nickname)", property_id);
3872 return CONTACTS_ERROR_INVALID_PARAMETER;
3873 /* LCOV_EXCL_STOP */
3875 return CONTACTS_ERROR_NONE;
3878 static int __ctsvc_address_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty)
3880 ctsvc_address_s *address = (ctsvc_address_s*)record;
3882 switch (property_id) {
3883 case CTSVC_PROPERTY_ADDRESS_LABEL:
3884 CHECK_DIRTY_STR(address->label, str, is_dirty);
3885 FREEandSTRDUP(address->label, str);
3887 case CTSVC_PROPERTY_ADDRESS_POSTBOX:
3888 CHECK_DIRTY_STR(address->pobox, str, is_dirty);
3889 FREEandSTRDUP(address->pobox, str);
3891 case CTSVC_PROPERTY_ADDRESS_POSTAL_CODE:
3892 CHECK_DIRTY_STR(address->postalcode, str, is_dirty);
3893 FREEandSTRDUP(address->postalcode, str);
3895 case CTSVC_PROPERTY_ADDRESS_REGION:
3896 CHECK_DIRTY_STR(address->region, str, is_dirty);
3897 FREEandSTRDUP(address->region, str);
3899 case CTSVC_PROPERTY_ADDRESS_LOCALITY:
3900 CHECK_DIRTY_STR(address->locality, str, is_dirty);
3901 FREEandSTRDUP(address->locality, str);
3903 case CTSVC_PROPERTY_ADDRESS_STREET:
3904 CHECK_DIRTY_STR(address->street, str, is_dirty);
3905 FREEandSTRDUP(address->street, str);
3907 case CTSVC_PROPERTY_ADDRESS_COUNTRY:
3908 CHECK_DIRTY_STR(address->country, str, is_dirty);
3909 FREEandSTRDUP(address->country, str);
3911 case CTSVC_PROPERTY_ADDRESS_EXTENDED:
3912 CHECK_DIRTY_STR(address->extended, str, is_dirty);
3913 FREEandSTRDUP(address->extended, str);
3916 /* LCOV_EXCL_START */
3917 ERR("property_id(%d) is not supported in value(address)", property_id);
3918 return CONTACTS_ERROR_INVALID_PARAMETER;
3919 /* LCOV_EXCL_STOP */
3921 return CONTACTS_ERROR_NONE;
3924 static int __ctsvc_messenger_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty)
3926 ctsvc_messenger_s *messenger = (ctsvc_messenger_s*)record;
3928 switch (property_id) {
3929 case CTSVC_PROPERTY_MESSENGER_LABEL:
3930 CHECK_DIRTY_STR(messenger->label, str, is_dirty);
3931 FREEandSTRDUP(messenger->label, str);
3933 case CTSVC_PROPERTY_MESSENGER_IM_ID:
3934 CHECK_DIRTY_STR(messenger->im_id, str, is_dirty);
3935 FREEandSTRDUP(messenger->im_id, str);
3938 /* LCOV_EXCL_START */
3939 ERR("property_id(%d) is not supported in value(messenger)", property_id);
3940 return CONTACTS_ERROR_INVALID_PARAMETER;
3941 /* LCOV_EXCL_STOP */
3943 return CONTACTS_ERROR_NONE;
3946 static int __ctsvc_group_relation_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty)
3948 ctsvc_group_relation_s *group_relation = (ctsvc_group_relation_s*)record;
3950 switch (property_id) {
3951 case CTSVC_PROPERTY_GROUP_RELATION_GROUP_NAME:
3952 CHECK_DIRTY_STR(group_relation->group_name, str, is_dirty);
3953 FREEandSTRDUP(group_relation->group_name, str);
3956 ERR("property_id(%d) is a read-only value (group_relation)", property_id);
3957 return CONTACTS_ERROR_INVALID_PARAMETER;
3960 /* LCOV_EXCL_START */
3961 ERR("property_id(%d) is not supported in value(group_relation)", property_id);
3962 return CONTACTS_ERROR_INVALID_PARAMETER;
3963 /* LCOV_EXCL_STOP */
3965 return CONTACTS_ERROR_NONE;
3968 static int __ctsvc_activity_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty)
3970 ctsvc_activity_s *activity = (ctsvc_activity_s*)record;
3972 switch (property_id) {
3973 case CTSVC_PROPERTY_ACTIVITY_SOURCE_NAME:
3974 CHECK_DIRTY_STR(activity->source_name, str, is_dirty);
3975 FREEandSTRDUP(activity->source_name, str);
3977 case CTSVC_PROPERTY_ACTIVITY_STATUS:
3978 CHECK_DIRTY_STR(activity->status, str, is_dirty);
3979 FREEandSTRDUP(activity->status, str);
3981 case CTSVC_PROPERTY_ACTIVITY_SERVICE_OPERATION:
3982 CHECK_DIRTY_STR(activity->service_operation, str, is_dirty);
3983 FREEandSTRDUP(activity->service_operation, str);
3985 case CTSVC_PROPERTY_ACTIVITY_URI:
3986 CHECK_DIRTY_STR(activity->uri, str, is_dirty);
3987 FREEandSTRDUP(activity->uri, str);
3990 /* LCOV_EXCL_START */
3991 ERR("property_id(%d) is not supported in value(activity)", property_id);
3992 return CONTACTS_ERROR_INVALID_PARAMETER;
3993 /* LCOV_EXCL_STOP */
3995 return CONTACTS_ERROR_NONE;
3998 static int __ctsvc_activity_photo_set_str(contacts_record_h record, unsigned int property_id,
3999 const char *str, bool *is_dirty)
4001 ctsvc_activity_photo_s *photo = (ctsvc_activity_photo_s*)record;
4003 switch (property_id) {
4004 case CTSVC_PROPERTY_ACTIVITY_PHOTO_URL:
4005 CHECK_DIRTY_STR(photo->photo_url, str, is_dirty);
4006 FREEandSTRDUP(photo->photo_url, str);
4009 /* LCOV_EXCL_START */
4010 ERR("property_id(%d) is not supported in value(activity)", property_id);
4011 return CONTACTS_ERROR_INVALID_PARAMETER;
4012 /* LCOV_EXCL_STOP */
4014 return CONTACTS_ERROR_NONE;
4017 static int __ctsvc_profile_set_str(contacts_record_h record, unsigned int property_id,
4018 const char *str, bool *is_dirty)
4020 ctsvc_profile_s *profile = (ctsvc_profile_s*)record;
4022 switch (property_id) {
4023 case CTSVC_PROPERTY_PROFILE_UID:
4024 CHECK_DIRTY_STR(profile->uid, str, is_dirty);
4025 FREEandSTRDUP(profile->uid, str);
4027 case CTSVC_PROPERTY_PROFILE_TEXT:
4028 CHECK_DIRTY_STR(profile->text, str, is_dirty);
4029 FREEandSTRDUP(profile->text, str);
4031 case CTSVC_PROPERTY_PROFILE_SERVICE_OPERATION:
4032 CHECK_DIRTY_STR(profile->service_operation, str, is_dirty);
4033 FREEandSTRDUP(profile->service_operation, str);
4035 case CTSVC_PROPERTY_PROFILE_MIME:
4036 CHECK_DIRTY_STR(profile->mime, str, is_dirty);
4037 FREEandSTRDUP(profile->mime, str);
4039 case CTSVC_PROPERTY_PROFILE_APP_ID:
4040 CHECK_DIRTY_STR(profile->app_id, str, is_dirty);
4041 FREEandSTRDUP(profile->app_id, str);
4043 case CTSVC_PROPERTY_PROFILE_URI:
4044 CHECK_DIRTY_STR(profile->uri, str, is_dirty);
4045 FREEandSTRDUP(profile->uri, str);
4047 case CTSVC_PROPERTY_PROFILE_CATEGORY:
4048 CHECK_DIRTY_STR(profile->category, str, is_dirty);
4049 FREEandSTRDUP(profile->category, str);
4051 case CTSVC_PROPERTY_PROFILE_EXTRA_DATA:
4052 CHECK_DIRTY_STR(profile->extra_data, str, is_dirty);
4053 FREEandSTRDUP(profile->extra_data, str);
4056 /* LCOV_EXCL_START */
4057 ERR("property_id(%d) is not supported in value(profile)", property_id);
4058 return CONTACTS_ERROR_INVALID_PARAMETER;
4059 /* LCOV_EXCL_STOP */
4061 return CONTACTS_ERROR_NONE;
4064 static int __ctsvc_relationship_set_str(contacts_record_h record, unsigned int property_id,
4065 const char *str, bool *is_dirty)
4067 ctsvc_relationship_s *relationship = (ctsvc_relationship_s*)record;
4069 switch (property_id) {
4070 case CTSVC_PROPERTY_RELATIONSHIP_LABEL:
4071 CHECK_DIRTY_STR(relationship->label, str, is_dirty);
4072 FREEandSTRDUP(relationship->label, str);
4074 case CTSVC_PROPERTY_RELATIONSHIP_NAME:
4075 CHECK_DIRTY_STR(relationship->name, str, is_dirty);
4076 FREEandSTRDUP(relationship->name, str);
4079 /* LCOV_EXCL_START */
4080 ERR("property_id(%d) is not supported in value(relationship)", property_id);
4081 return CONTACTS_ERROR_INVALID_PARAMETER;
4082 /* LCOV_EXCL_STOP */
4084 return CONTACTS_ERROR_NONE;
4087 static int __ctsvc_image_set_str(contacts_record_h record, unsigned int property_id,
4088 const char *str, bool *is_dirty)
4090 ctsvc_image_s *image = (ctsvc_image_s*)record;
4092 switch (property_id) {
4093 case CTSVC_PROPERTY_IMAGE_LABEL:
4094 CHECK_DIRTY_STR(image->label, str, is_dirty);
4095 FREEandSTRDUP(image->label, str);
4097 case CTSVC_PROPERTY_IMAGE_PATH:
4098 if (image->path && image->is_vcard
4099 && (NULL == str || STRING_EQUAL != strcmp(image->path, str))) {
4100 image->is_vcard = false;
4101 __ctsvc_temp_image_hash_table_remove(image->path);
4103 CHECK_DIRTY_STR(image->path, str, is_dirty);
4104 FREEandSTRDUP(image->path, str);
4107 /* LCOV_EXCL_START */
4108 ERR("property_id(%d) is not supported in value(image)", property_id);
4109 return CONTACTS_ERROR_INVALID_PARAMETER;
4110 /* LCOV_EXCL_STOP */
4112 return CONTACTS_ERROR_NONE;
4115 static int __ctsvc_extension_set_str(contacts_record_h record, unsigned int property_id,
4116 const char *str, bool *is_dirty)
4118 ctsvc_extension_s *extension = (ctsvc_extension_s*)record;
4120 switch (property_id) {
4121 case CTSVC_PROPERTY_EXTENSION_DATA2:
4122 CHECK_DIRTY_STR(extension->data2, str, is_dirty);
4123 FREEandSTRDUP(extension->data2, str);
4125 case CTSVC_PROPERTY_EXTENSION_DATA3:
4126 CHECK_DIRTY_STR(extension->data3, str, is_dirty);
4127 FREEandSTRDUP(extension->data3, str);
4129 case CTSVC_PROPERTY_EXTENSION_DATA4:
4130 CHECK_DIRTY_STR(extension->data4, str, is_dirty);
4131 FREEandSTRDUP(extension->data4, str);
4133 case CTSVC_PROPERTY_EXTENSION_DATA5:
4134 CHECK_DIRTY_STR(extension->data5, str, is_dirty);
4135 FREEandSTRDUP(extension->data5, str);
4137 case CTSVC_PROPERTY_EXTENSION_DATA6:
4138 CHECK_DIRTY_STR(extension->data6, str, is_dirty);
4139 FREEandSTRDUP(extension->data6, str);
4141 case CTSVC_PROPERTY_EXTENSION_DATA7:
4142 CHECK_DIRTY_STR(extension->data7, str, is_dirty);
4143 FREEandSTRDUP(extension->data7, str);
4145 case CTSVC_PROPERTY_EXTENSION_DATA8:
4146 CHECK_DIRTY_STR(extension->data8, str, is_dirty);
4147 FREEandSTRDUP(extension->data8, str);
4149 case CTSVC_PROPERTY_EXTENSION_DATA9:
4150 CHECK_DIRTY_STR(extension->data9, str, is_dirty);
4151 FREEandSTRDUP(extension->data9, str);
4153 case CTSVC_PROPERTY_EXTENSION_DATA10:
4154 CHECK_DIRTY_STR(extension->data10, str, is_dirty);
4155 FREEandSTRDUP(extension->data10, str);
4157 case CTSVC_PROPERTY_EXTENSION_DATA11:
4158 CHECK_DIRTY_STR(extension->data11, str, is_dirty);
4159 FREEandSTRDUP(extension->data11, str);
4161 case CTSVC_PROPERTY_EXTENSION_DATA12:
4162 CHECK_DIRTY_STR(extension->data12, str, is_dirty);
4163 FREEandSTRDUP(extension->data12, str);
4166 /* LCOV_EXCL_START */
4167 ERR("property_id(%d) is not supported in value(extension)", property_id);
4168 return CONTACTS_ERROR_INVALID_PARAMETER;
4169 /* LCOV_EXCL_STOP */
4171 return CONTACTS_ERROR_NONE;
4174 static int __ctsvc_sip_set_str(contacts_record_h record, unsigned int property_id,
4175 const char* str, bool *is_dirty)
4177 ctsvc_sip_s *sip = (ctsvc_sip_s *)record;
4179 switch (property_id) {
4180 case CTSVC_PROPERTY_SIP_ADDRESS:
4181 CHECK_DIRTY_STR(sip->address, str, is_dirty);
4182 FREEandSTRDUP(sip->address, str);
4184 case CTSVC_PROPERTY_SIP_LABEL:
4185 CHECK_DIRTY_STR(sip->label, str, is_dirty);
4186 FREEandSTRDUP(sip->label, str);
4189 /* LCOV_EXCL_START */
4190 ERR("Invalid parameter : property_id(%d) is not supported in value(sip)", property_id);
4191 return CONTACTS_ERROR_INVALID_PARAMETER;
4192 /* LCOV_EXCL_STOP */
4194 return CONTACTS_ERROR_NONE;
4197 static int __ctsvc_contact_get_bool(contacts_record_h record, unsigned int property_id, bool *value)
4199 ctsvc_contact_s *contact = (ctsvc_contact_s*)record;
4200 switch (property_id) {
4201 case CTSVC_PROPERTY_CONTACT_IS_FAVORITE:
4202 *value = contact->is_favorite;
4204 case CTSVC_PROPERTY_CONTACT_HAS_PHONENUMBER:
4205 *value = contact->has_phonenumber;
4207 case CTSVC_PROPERTY_CONTACT_HAS_EMAIL:
4208 *value = contact->has_email;
4211 /* LCOV_EXCL_START */
4212 ERR("property_id(0x%x) is not supported in value(contact)", property_id);
4213 return CONTACTS_ERROR_INVALID_PARAMETER;
4214 /* LCOV_EXCL_STOP */
4216 return CONTACTS_ERROR_NONE;
4219 static int __ctsvc_simple_contact_get_bool(contacts_record_h record, unsigned int property_id, bool *value)
4221 ctsvc_simple_contact_s *contact = (ctsvc_simple_contact_s*)record;
4222 switch (property_id) {
4223 case CTSVC_PROPERTY_CONTACT_IS_FAVORITE:
4224 *value = contact->is_favorite;
4226 case CTSVC_PROPERTY_CONTACT_HAS_PHONENUMBER:
4227 *value = contact->has_phonenumber;
4229 case CTSVC_PROPERTY_CONTACT_HAS_EMAIL:
4230 *value = contact->has_email;
4233 /* LCOV_EXCL_START */
4234 ERR("property_id(0x%x) is not supported in value(contact)", property_id);
4235 return CONTACTS_ERROR_INVALID_PARAMETER;
4236 /* LCOV_EXCL_STOP */
4238 return CONTACTS_ERROR_NONE;
4242 static int __ctsvc_number_get_bool(contacts_record_h record, unsigned int property_id, bool *value)
4244 ctsvc_number_s *number = (ctsvc_number_s*)record;
4245 switch (property_id) {
4246 case CTSVC_PROPERTY_NUMBER_IS_DEFAULT:
4247 *value = number->is_default;
4250 /* LCOV_EXCL_START */
4251 ERR("property_id(0x%x) is not supported in value(number)", property_id);
4252 return CONTACTS_ERROR_INVALID_PARAMETER;
4253 /* LCOV_EXCL_STOP */
4255 return CONTACTS_ERROR_NONE;
4258 static int __ctsvc_email_get_bool(contacts_record_h record, unsigned int property_id, bool *value)
4260 ctsvc_email_s *email = (ctsvc_email_s*)record;
4261 switch (property_id) {
4262 case CTSVC_PROPERTY_EMAIL_IS_DEFAULT:
4263 *value = email->is_default;
4266 /* LCOV_EXCL_START */
4267 ERR("property_id(0x%x) is not supported in value(email)", property_id);
4268 return CONTACTS_ERROR_INVALID_PARAMETER;
4269 /* LCOV_EXCL_STOP */
4271 return CONTACTS_ERROR_NONE;
4274 static int __ctsvc_event_get_bool(contacts_record_h record, unsigned int property_id, bool *value)
4276 ctsvc_event_s *event = (ctsvc_event_s*)record;
4277 switch (property_id) {
4278 case CTSVC_PROPERTY_EVENT_IS_LEAP_MONTH: /* deprecated */
4279 WARN(DEPRECATED_STRING_FORMAT, "is_leap_month");
4280 *value = event->is_leap_month;
4283 /* LCOV_EXCL_START */
4284 ERR("property_id(0x%x) is not supported in value(event)", property_id);
4285 return CONTACTS_ERROR_INVALID_PARAMETER;
4286 /* LCOV_EXCL_STOP */
4288 return CONTACTS_ERROR_NONE;
4291 static int __ctsvc_image_get_bool(contacts_record_h record, unsigned int property_id, bool *value)
4293 ctsvc_image_s *image = (ctsvc_image_s*)record;
4294 switch (property_id) {
4295 case CTSVC_PROPERTY_IMAGE_IS_DEFAULT:
4296 *value = image->is_default;
4299 /* LCOV_EXCL_START */
4300 ERR("property_id(0x%x) is not supported in value(image)", property_id);
4301 return CONTACTS_ERROR_INVALID_PARAMETER;
4302 /* LCOV_EXCL_STOP */
4304 return CONTACTS_ERROR_NONE;
4307 static int __ctsvc_address_get_bool(contacts_record_h record, unsigned int property_id, bool *value)
4309 ctsvc_address_s *address = (ctsvc_address_s*)record;
4310 switch (property_id) {
4311 case CTSVC_PROPERTY_ADDRESS_IS_DEFAULT:
4312 *value = address->is_default;
4315 /* LCOV_EXCL_START */
4316 ERR("property_id(0x%x) is not supported in value(address)", property_id);
4317 return CONTACTS_ERROR_INVALID_PARAMETER;
4318 /* LCOV_EXCL_STOP */
4320 return CONTACTS_ERROR_NONE;
4323 static int __ctsvc_contact_set_bool(contacts_record_h record, unsigned int property_id, bool value, bool *is_dirty)
4325 ctsvc_contact_s *contact = (ctsvc_contact_s*)record;
4327 switch (property_id) {
4328 case CTSVC_PROPERTY_CONTACT_IS_FAVORITE:
4329 CHECK_DIRTY_VAL(contact->is_favorite, value, is_dirty);
4330 contact->is_favorite = value;
4332 case CTSVC_PROPERTY_CONTACT_HAS_PHONENUMBER:
4333 CHECK_DIRTY_VAL(contact->has_phonenumber, value, is_dirty);
4334 contact->has_phonenumber = value;
4336 case CTSVC_PROPERTY_CONTACT_HAS_EMAIL:
4337 CHECK_DIRTY_VAL(contact->has_email, value, is_dirty);
4338 contact->has_email = value;
4341 ERR("property_id(%d) is a read-only value(contact)", property_id);
4345 /* LCOV_EXCL_START */
4346 ERR("property_id(0x%x) is not supported in value(contact)", property_id);
4347 return CONTACTS_ERROR_INVALID_PARAMETER;
4348 /* LCOV_EXCL_STOP */
4350 return CONTACTS_ERROR_NONE;
4353 static int __ctsvc_number_set_bool(contacts_record_h record, unsigned int property_id, bool value, bool *is_dirty)
4355 ctsvc_number_s *number = (ctsvc_number_s*)record;
4357 switch (property_id) {
4358 case CTSVC_PROPERTY_NUMBER_IS_DEFAULT:
4359 CHECK_DIRTY_VAL(number->is_default, value, is_dirty);
4360 number->is_default = value;
4363 /* LCOV_EXCL_START */
4364 ERR("property_id(%d) is not supported in value(number)", property_id);
4365 return CONTACTS_ERROR_INVALID_PARAMETER;
4366 /* LCOV_EXCL_STOP */
4368 return CONTACTS_ERROR_NONE;
4371 static int __ctsvc_email_set_bool(contacts_record_h record, unsigned int property_id, bool value, bool *is_dirty)
4373 ctsvc_email_s *email = (ctsvc_email_s*)record;
4375 switch (property_id) {
4376 case CTSVC_PROPERTY_EMAIL_IS_DEFAULT:
4377 CHECK_DIRTY_VAL(email->is_default, value, is_dirty);
4378 email->is_default = value;
4381 /* LCOV_EXCL_START */
4382 ERR("property_id(%d) is not supported in value(email)", property_id);
4383 return CONTACTS_ERROR_INVALID_PARAMETER;
4384 /* LCOV_EXCL_STOP */
4386 return CONTACTS_ERROR_NONE;
4389 static int __ctsvc_event_set_bool(contacts_record_h record, unsigned int property_id, bool value, bool *is_dirty)
4391 ctsvc_event_s *event = (ctsvc_event_s*)record;
4393 switch (property_id) {
4394 case CTSVC_PROPERTY_EVENT_IS_LEAP_MONTH:
4395 WARN(DEPRECATED_STRING_FORMAT, "is_leap_month");
4396 CHECK_DIRTY_VAL(event->is_leap_month, value, is_dirty);
4397 event->is_leap_month = value;
4400 /* LCOV_EXCL_START */
4401 ERR("property_id(%d) is not supported in value(event)", property_id);
4402 return CONTACTS_ERROR_INVALID_PARAMETER;
4403 /* LCOV_EXCL_STOP */
4405 return CONTACTS_ERROR_NONE;
4408 static int __ctsvc_image_set_bool(contacts_record_h record, unsigned int property_id, bool value, bool *is_dirty)
4410 ctsvc_image_s *image = (ctsvc_image_s*)record;
4412 switch (property_id) {
4413 case CTSVC_PROPERTY_IMAGE_IS_DEFAULT:
4414 CHECK_DIRTY_VAL(image->is_default, value, is_dirty);
4415 image->is_default = value;
4418 /* LCOV_EXCL_START */
4419 ERR("property_id(0x%x) is not supported in value(image)", property_id);
4420 return CONTACTS_ERROR_INVALID_PARAMETER;
4421 /* LCOV_EXCL_STOP */
4423 return CONTACTS_ERROR_NONE;
4426 static int __ctsvc_address_set_bool(contacts_record_h record, unsigned int property_id, bool value, bool *is_dirty)
4428 ctsvc_address_s *address = (ctsvc_address_s*)record;
4430 switch (property_id) {
4431 case CTSVC_PROPERTY_ADDRESS_IS_DEFAULT:
4432 CHECK_DIRTY_VAL(address->is_default, value, is_dirty);
4433 address->is_default = value;
4436 /* LCOV_EXCL_START */
4437 ERR("property_id(%d) is not supported in value(address)", property_id);
4438 return CONTACTS_ERROR_INVALID_PARAMETER;
4439 /* LCOV_EXCL_STOP */
4441 return CONTACTS_ERROR_NONE;
4444 static int __ctsvc_contact_clone(contacts_record_h record, contacts_record_h *out_record)
4446 ctsvc_contact_s *out_data = NULL;
4447 ctsvc_contact_s *src_data = NULL;
4449 src_data = (ctsvc_contact_s*)record;
4450 out_data = calloc(1, sizeof(ctsvc_contact_s));
4451 RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() Fail");
4453 out_data->id = src_data->id;
4454 out_data->person_id = src_data->person_id;
4455 out_data->addressbook_id = src_data->addressbook_id;
4456 out_data->changed_time = src_data->changed_time;
4457 out_data->changed_ver = src_data->changed_ver;
4458 out_data->link_mode = src_data->link_mode;
4459 out_data->display_source_type = src_data->display_source_type;
4460 out_data->display_name_language = src_data->display_name_language;
4461 out_data->reverse_display_name_language = src_data->reverse_display_name_language;
4462 out_data->has_phonenumber = src_data->has_phonenumber;
4463 out_data->has_email = src_data->has_email;
4464 out_data->is_favorite = src_data->is_favorite;
4466 out_data->display_name = SAFE_STRDUP(src_data->display_name);
4467 out_data->reverse_display_name = SAFE_STRDUP(src_data->reverse_display_name);
4468 out_data->uid = SAFE_STRDUP(src_data->uid);
4469 out_data->ringtone_path = SAFE_STRDUP(src_data->ringtone_path);
4470 out_data->vibration = SAFE_STRDUP(src_data->vibration);
4471 out_data->message_alert = SAFE_STRDUP(src_data->message_alert);
4472 out_data->image_thumbnail_path = SAFE_STRDUP(src_data->image_thumbnail_path);
4473 out_data->sort_name = SAFE_STRDUP(src_data->sort_name);
4474 out_data->reverse_sort_name = SAFE_STRDUP(src_data->reverse_sort_name);
4475 out_data->sortkey = SAFE_STRDUP(src_data->sortkey);
4476 out_data->reverse_sortkey = SAFE_STRDUP(src_data->reverse_sortkey);
4478 ctsvc_list_clone((contacts_list_h)src_data->name, (contacts_list_h*)&out_data->name);
4479 out_data->name->l_type = CTSVC_RECORD_NAME;
4481 ctsvc_list_clone((contacts_list_h)src_data->company, (contacts_list_h*)&out_data->company);
4482 out_data->company->l_type = CTSVC_RECORD_COMPANY;
4484 ctsvc_list_clone((contacts_list_h)src_data->note, (contacts_list_h*)&out_data->note);
4485 out_data->note->l_type = CTSVC_RECORD_NOTE;
4487 ctsvc_list_clone((contacts_list_h)src_data->numbers, (contacts_list_h*)&out_data->numbers);
4488 out_data->numbers->l_type = CTSVC_RECORD_NUMBER;
4490 ctsvc_list_clone((contacts_list_h)src_data->emails, (contacts_list_h*)&out_data->emails);
4491 out_data->emails->l_type = CTSVC_RECORD_EMAIL;
4493 ctsvc_list_clone((contacts_list_h)src_data->grouprelations, (contacts_list_h*)&out_data->grouprelations);
4494 out_data->grouprelations->l_type = CTSVC_RECORD_GROUP_RELATION;
4496 ctsvc_list_clone((contacts_list_h)src_data->events, (contacts_list_h*)&out_data->events);
4497 out_data->events->l_type = CTSVC_RECORD_EVENT;
4499 ctsvc_list_clone((contacts_list_h)src_data->messengers, (contacts_list_h*)&out_data->messengers);
4500 out_data->messengers->l_type = CTSVC_RECORD_MESSENGER;
4502 ctsvc_list_clone((contacts_list_h)src_data->postal_addrs, (contacts_list_h*)&out_data->postal_addrs);
4503 out_data->postal_addrs->l_type = CTSVC_RECORD_ADDRESS;
4505 ctsvc_list_clone((contacts_list_h)src_data->urls, (contacts_list_h*)&out_data->urls);
4506 out_data->urls->l_type = CTSVC_RECORD_URL;
4508 ctsvc_list_clone((contacts_list_h)src_data->nicknames, (contacts_list_h*)&out_data->nicknames);
4509 out_data->nicknames->l_type = CTSVC_RECORD_NICKNAME;
4511 ctsvc_list_clone((contacts_list_h)src_data->profiles, (contacts_list_h*)&out_data->profiles);
4512 out_data->profiles->l_type = CTSVC_RECORD_PROFILE;
4514 ctsvc_list_clone((contacts_list_h)src_data->relationships, (contacts_list_h*)&out_data->relationships);
4515 out_data->relationships->l_type = CTSVC_RECORD_RELATIONSHIP;
4517 ctsvc_list_clone((contacts_list_h)src_data->images, (contacts_list_h*)&out_data->images);
4518 out_data->images->l_type = CTSVC_RECORD_IMAGE;
4520 ctsvc_list_clone((contacts_list_h)src_data->extensions, (contacts_list_h*)&out_data->extensions);
4521 out_data->extensions->l_type = CTSVC_RECORD_EXTENSION;
4523 ctsvc_list_clone((contacts_list_h)src_data->sips, (contacts_list_h*)&out_data->sips);
4524 out_data->sips->l_type = CTSVC_RECORD_SIP;
4526 int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
4527 if (CONTACTS_ERROR_NONE != ret) {
4528 /* LCOV_EXCL_START */
4529 ERR("ctsvc_record_copy_base() Fail");
4530 __ctsvc_contact_destroy((contacts_record_h)out_data, true);
4532 /* LCOV_EXCL_STOP */
4535 *out_record = (contacts_record_h)out_data;
4537 return CONTACTS_ERROR_NONE;
4541 static int __ctsvc_activity_clone(contacts_record_h record, contacts_record_h *out_record)
4543 ctsvc_activity_s *out_data = NULL;
4544 ctsvc_activity_s *src_data = NULL;
4546 src_data = (ctsvc_activity_s*)record;
4547 out_data = calloc(1, sizeof(ctsvc_activity_s));
4548 RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() Fail");
4550 out_data->id = src_data->id;
4551 out_data->contact_id = src_data->contact_id;
4552 out_data->timestamp = src_data->timestamp;
4553 out_data->source_name = SAFE_STRDUP(src_data->source_name);
4554 out_data->status = SAFE_STRDUP(src_data->status);
4555 out_data->service_operation = SAFE_STRDUP(src_data->service_operation);
4556 out_data->uri = SAFE_STRDUP(src_data->uri);
4558 ctsvc_list_clone((contacts_list_h)src_data->photos, (contacts_list_h*)&out_data->photos);
4559 out_data->photos->l_type = CTSVC_RECORD_ACTIVITY_PHOTO;
4561 int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
4562 if (CONTACTS_ERROR_NONE != ret) {
4563 /* LCOV_EXCL_START */
4564 ERR("ctsvc_record_copy_base() Fail");
4565 __ctsvc_activity_destroy((contacts_record_h)out_data, true);
4567 /* LCOV_EXCL_STOP */
4570 *out_record = (contacts_record_h)out_data;
4571 return CONTACTS_ERROR_NONE;
4574 static int __ctsvc_activity_photo_clone(contacts_record_h record, contacts_record_h *out_record)
4576 ctsvc_activity_photo_s *out_data = NULL;
4577 ctsvc_activity_photo_s *src_data = NULL;
4579 src_data = (ctsvc_activity_photo_s*)record;
4580 out_data = calloc(1, sizeof(ctsvc_activity_photo_s));
4581 RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() Fail");
4583 out_data->id = src_data->id;
4584 out_data->activity_id = src_data->activity_id;
4585 out_data->photo_url = SAFE_STRDUP(src_data->photo_url);
4586 out_data->sort_index = src_data->sort_index;
4588 int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
4589 if (CONTACTS_ERROR_NONE != ret) {
4590 /* LCOV_EXCL_START */
4591 ERR("ctsvc_record_copy_base() Fail");
4592 __ctsvc_activity_photo_destroy((contacts_record_h)out_data, true);
4594 /* LCOV_EXCL_STOP */
4597 *out_record = (contacts_record_h)out_data;
4598 return CONTACTS_ERROR_NONE;
4601 static int __ctsvc_address_clone(contacts_record_h record, contacts_record_h *out_record)
4603 ctsvc_address_s *out_data = NULL;
4604 ctsvc_address_s *src_data = NULL;
4606 src_data = (ctsvc_address_s*)record;
4607 out_data = calloc(1, sizeof(ctsvc_address_s));
4608 RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() Fail");
4610 out_data->id = src_data->id;
4611 out_data->contact_id = src_data->contact_id;
4612 out_data->type = src_data->type;
4613 out_data->is_default = src_data->is_default;
4614 out_data->label = SAFE_STRDUP(src_data->label);
4615 out_data->pobox = SAFE_STRDUP(src_data->pobox);
4616 out_data->postalcode = SAFE_STRDUP(src_data->postalcode);
4617 out_data->region = SAFE_STRDUP(src_data->region);
4618 out_data->locality = SAFE_STRDUP(src_data->locality);
4619 out_data->street = SAFE_STRDUP(src_data->street);
4620 out_data->extended = SAFE_STRDUP(src_data->extended);
4621 out_data->country = SAFE_STRDUP(src_data->country);
4623 int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
4624 if (CONTACTS_ERROR_NONE != ret) {
4625 /* LCOV_EXCL_START */
4626 ERR("ctsvc_record_copy_base() Fail");
4627 __ctsvc_address_destroy((contacts_record_h)out_data, true);
4629 /* LCOV_EXCL_STOP */
4632 *out_record = (contacts_record_h)out_data;
4633 return CONTACTS_ERROR_NONE;
4636 static int __ctsvc_company_clone(contacts_record_h record, contacts_record_h *out_record)
4638 ctsvc_company_s *out_data = NULL;
4639 ctsvc_company_s *src_data = NULL;
4641 src_data = (ctsvc_company_s*)record;
4642 out_data = calloc(1, sizeof(ctsvc_company_s));
4643 RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() Fail");
4645 out_data->id = src_data->id;
4646 out_data->contact_id = src_data->contact_id;
4647 out_data->is_default = src_data->is_default;
4648 out_data->type = src_data->type;
4649 out_data->is_vcard = src_data->is_vcard;
4650 out_data->label = SAFE_STRDUP(src_data->label);
4651 out_data->name = SAFE_STRDUP(src_data->name);
4652 out_data->department = SAFE_STRDUP(src_data->department);
4653 out_data->job_title = SAFE_STRDUP(src_data->job_title);
4654 out_data->role = SAFE_STRDUP(src_data->role);
4655 out_data->assistant_name = SAFE_STRDUP(src_data->assistant_name);
4656 if (src_data->logo && src_data->is_vcard)
4657 __ctsvc_temp_image_hash_table_insert(src_data->logo);
4658 out_data->logo = SAFE_STRDUP(src_data->logo);
4659 out_data->location = SAFE_STRDUP(src_data->location);
4660 out_data->description = SAFE_STRDUP(src_data->description);
4661 out_data->phonetic_name = SAFE_STRDUP(src_data->phonetic_name);
4663 int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
4664 if (CONTACTS_ERROR_NONE != ret) {
4665 /* LCOV_EXCL_START */
4666 ERR("ctsvc_record_copy_base() Fail");
4667 __ctsvc_company_destroy((contacts_record_h)out_data, true);
4669 /* LCOV_EXCL_STOP */
4672 *out_record = (contacts_record_h)out_data;
4673 return CONTACTS_ERROR_NONE;
4676 static int __ctsvc_email_clone(contacts_record_h record, contacts_record_h *out_record)
4678 ctsvc_email_s *out_data = NULL;
4679 ctsvc_email_s *src_data = NULL;
4681 src_data = (ctsvc_email_s*)record;
4682 out_data = calloc(1, sizeof(ctsvc_email_s));
4683 RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() Fail");
4685 out_data->id = src_data->id;
4686 out_data->is_default = src_data->is_default;
4687 out_data->contact_id = src_data->contact_id;
4688 out_data->type = src_data->type;
4689 out_data->label = SAFE_STRDUP(src_data->label);
4690 out_data->email_addr = SAFE_STRDUP(src_data->email_addr);
4692 int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
4693 if (CONTACTS_ERROR_NONE != ret) {
4694 /* LCOV_EXCL_START */
4695 ERR("ctsvc_record_copy_base() Fail");
4696 __ctsvc_email_destroy((contacts_record_h)out_data, true);
4698 /* LCOV_EXCL_STOP */
4701 *out_record = (contacts_record_h)out_data;
4702 return CONTACTS_ERROR_NONE;
4705 static int __ctsvc_event_clone(contacts_record_h record, contacts_record_h *out_record)
4707 ctsvc_event_s *out_data = NULL;
4708 ctsvc_event_s *src_data = NULL;
4710 src_data = (ctsvc_event_s*)record;
4711 out_data = calloc(1, sizeof(ctsvc_event_s));
4712 RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() Fail");
4714 out_data->id = src_data->id;
4715 out_data->contact_id = src_data->contact_id;
4716 out_data->type = src_data->type;
4717 out_data->label = SAFE_STRDUP(src_data->label);
4718 out_data->date = src_data->date;
4719 out_data->calendar_type = src_data->calendar_type;
4720 out_data->is_leap_month = src_data->is_leap_month;
4722 int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
4723 if (CONTACTS_ERROR_NONE != ret) {
4724 /* LCOV_EXCL_START */
4725 ERR("ctsvc_record_copy_base() Fail");
4726 __ctsvc_event_destroy((contacts_record_h)out_data, true);
4728 /* LCOV_EXCL_STOP */
4731 *out_record = (contacts_record_h)out_data;
4732 return CONTACTS_ERROR_NONE;
4735 static int __ctsvc_extension_clone(contacts_record_h record, contacts_record_h *out_record)
4737 ctsvc_extension_s *out_data = NULL;
4738 ctsvc_extension_s *src_data = NULL;
4740 src_data = (ctsvc_extension_s*)record;
4741 out_data = calloc(1, sizeof(ctsvc_extension_s));
4742 RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() Fail");
4744 out_data->id = src_data->id;
4745 out_data->contact_id = src_data->contact_id;
4746 /* out_data->is_default = src_data->is_default; */
4747 out_data->data1 = src_data->data1;
4748 out_data->data2 = SAFE_STRDUP(src_data->data2);
4749 out_data->data3 = SAFE_STRDUP(src_data->data3);
4750 out_data->data4 = SAFE_STRDUP(src_data->data4);
4751 out_data->data5 = SAFE_STRDUP(src_data->data5);
4752 out_data->data6 = SAFE_STRDUP(src_data->data6);
4753 out_data->data7 = SAFE_STRDUP(src_data->data7);
4754 out_data->data8 = SAFE_STRDUP(src_data->data8);
4755 out_data->data9 = SAFE_STRDUP(src_data->data9);
4756 out_data->data10 = SAFE_STRDUP(src_data->data10);
4757 out_data->data11 = SAFE_STRDUP(src_data->data11);
4758 out_data->data12 = SAFE_STRDUP(src_data->data12);
4760 int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
4761 if (CONTACTS_ERROR_NONE != ret) {
4762 /* LCOV_EXCL_START */
4763 ERR("ctsvc_record_copy_base() Fail");
4764 __ctsvc_extension_destroy((contacts_record_h)out_data, true);
4766 /* LCOV_EXCL_STOP */
4769 *out_record = (contacts_record_h)out_data;
4770 return CONTACTS_ERROR_NONE;
4773 static int __ctsvc_group_relation_clone(contacts_record_h record, contacts_record_h *out_record)
4775 ctsvc_group_relation_s *out_data = NULL;
4776 ctsvc_group_relation_s *src_data = NULL;
4778 src_data = (ctsvc_group_relation_s*)record;
4779 out_data = calloc(1, sizeof(ctsvc_group_relation_s));
4780 RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() Fail");
4782 out_data->id = src_data->id;
4783 out_data->group_id = src_data->group_id;
4784 out_data->contact_id = src_data->contact_id;
4785 out_data->group_name = SAFE_STRDUP(src_data->group_name);
4787 int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
4788 if (CONTACTS_ERROR_NONE != ret) {
4789 /* LCOV_EXCL_START */
4790 ERR("ctsvc_record_copy_base() Fail");
4791 __ctsvc_group_relation_destroy((contacts_record_h)out_data, true);
4793 /* LCOV_EXCL_STOP */
4796 *out_record = (contacts_record_h)out_data;
4797 return CONTACTS_ERROR_NONE;
4800 static int __ctsvc_messenger_clone(contacts_record_h record, contacts_record_h *out_record)
4802 ctsvc_messenger_s *out_data = NULL;
4803 ctsvc_messenger_s *src_data = NULL;
4805 src_data = (ctsvc_messenger_s*)record;
4806 out_data = calloc(1, sizeof(ctsvc_messenger_s));
4807 RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() Fail");
4809 out_data->id = src_data->id;
4810 out_data->contact_id = src_data->contact_id;
4811 out_data->type = src_data->type;
4812 out_data->label = SAFE_STRDUP(src_data->label);
4813 out_data->im_id = SAFE_STRDUP(src_data->im_id);
4815 int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
4816 if (CONTACTS_ERROR_NONE != ret) {
4817 /* LCOV_EXCL_START */
4818 ERR("ctsvc_record_copy_base() Fail");
4819 __ctsvc_messenger_destroy((contacts_record_h)out_data, true);
4821 /* LCOV_EXCL_STOP */
4824 *out_record = (contacts_record_h)out_data;
4825 return CONTACTS_ERROR_NONE;
4828 static int __ctsvc_name_clone(contacts_record_h record, contacts_record_h *out_record)
4830 ctsvc_name_s *out_data = NULL;
4831 ctsvc_name_s *src_data = NULL;
4833 src_data = (ctsvc_name_s*)record;
4835 out_data = calloc(1, sizeof(ctsvc_name_s));
4836 RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() Fail");
4838 out_data->is_default = src_data->is_default;
4839 out_data->id = src_data->id;
4840 out_data->contact_id = src_data->contact_id;
4841 out_data->language_type = src_data->language_type;
4842 out_data->first = SAFE_STRDUP(src_data->first);
4843 out_data->last = SAFE_STRDUP(src_data->last);
4844 out_data->addition = SAFE_STRDUP(src_data->addition);
4845 out_data->prefix = SAFE_STRDUP(src_data->prefix);
4846 out_data->suffix = SAFE_STRDUP(src_data->suffix);
4847 out_data->phonetic_first = SAFE_STRDUP(src_data->phonetic_first);
4848 out_data->phonetic_middle = SAFE_STRDUP(src_data->phonetic_middle);
4849 out_data->phonetic_last = SAFE_STRDUP(src_data->phonetic_last);
4850 out_data->lookup = SAFE_STRDUP(src_data->lookup);
4851 out_data->reverse_lookup = SAFE_STRDUP(src_data->reverse_lookup);
4853 int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
4854 if (CONTACTS_ERROR_NONE != ret) {
4855 /* LCOV_EXCL_START */
4856 ERR("ctsvc_record_copy_base() Fail");
4857 __ctsvc_name_destroy((contacts_record_h)out_data, true);
4859 /* LCOV_EXCL_STOP */
4862 *out_record = (contacts_record_h)out_data;
4863 return CONTACTS_ERROR_NONE;
4866 static int __ctsvc_nickname_clone(contacts_record_h record, contacts_record_h *out_record)
4868 ctsvc_nickname_s *out_data = NULL;
4869 ctsvc_nickname_s *src_data = NULL;
4871 src_data = (ctsvc_nickname_s*)record;
4872 out_data = calloc(1, sizeof(ctsvc_nickname_s));
4873 RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() Fail");
4875 out_data->id = src_data->id;
4876 out_data->contact_id = src_data->contact_id;
4877 out_data->type = src_data->type;
4878 out_data->label = SAFE_STRDUP(src_data->label);
4879 out_data->nickname = SAFE_STRDUP(src_data->nickname);
4881 int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
4882 if (CONTACTS_ERROR_NONE != ret) {
4883 /* LCOV_EXCL_START */
4884 ERR("ctsvc_record_copy_base() Fail");
4885 __ctsvc_nickname_destroy((contacts_record_h)out_data, true);
4887 /* LCOV_EXCL_STOP */
4890 *out_record = (contacts_record_h)out_data;
4891 return CONTACTS_ERROR_NONE;
4894 static int __ctsvc_note_clone(contacts_record_h record, contacts_record_h *out_record)
4896 ctsvc_note_s *out_data = NULL;
4897 ctsvc_note_s *src_data = NULL;
4899 src_data = (ctsvc_note_s*)record;
4900 out_data = calloc(1, sizeof(ctsvc_note_s));
4901 RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() Fail");
4903 out_data->id = src_data->id;
4904 out_data->contact_id = src_data->contact_id;
4905 out_data->note = SAFE_STRDUP(src_data->note);
4907 int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
4908 if (CONTACTS_ERROR_NONE != ret) {
4909 /* LCOV_EXCL_START */
4910 ERR("ctsvc_record_copy_base() Fail");
4911 __ctsvc_note_destroy((contacts_record_h)out_data, true);
4913 /* LCOV_EXCL_STOP */
4916 *out_record = (contacts_record_h)out_data;
4917 return CONTACTS_ERROR_NONE;
4920 static int __ctsvc_number_clone(contacts_record_h record, contacts_record_h *out_record)
4922 ctsvc_number_s *out_data = NULL;
4923 ctsvc_number_s *src_data = NULL;
4925 src_data = (ctsvc_number_s*)record;
4926 out_data = calloc(1, sizeof(ctsvc_number_s));
4927 RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() Fail");
4929 out_data->is_default = src_data->is_default;
4930 out_data->id = src_data->id;
4931 out_data->contact_id = src_data->contact_id;
4932 out_data->type = src_data->type;
4933 out_data->label = SAFE_STRDUP(src_data->label);
4934 out_data->number = SAFE_STRDUP(src_data->number);
4935 out_data->lookup = SAFE_STRDUP(src_data->lookup);
4937 int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
4938 if (CONTACTS_ERROR_NONE != ret) {
4939 /* LCOV_EXCL_START */
4940 ERR("ctsvc_record_copy_base() Fail");
4941 __ctsvc_number_destroy((contacts_record_h)out_data, true);
4943 /* LCOV_EXCL_STOP */
4946 *out_record = (contacts_record_h)out_data;
4947 return CONTACTS_ERROR_NONE;
4950 static int __ctsvc_profile_clone(contacts_record_h record, contacts_record_h *out_record)
4952 ctsvc_profile_s *out_data = NULL;
4953 ctsvc_profile_s *src_data = NULL;
4955 src_data = (ctsvc_profile_s*)record;
4956 out_data = calloc(1, sizeof(ctsvc_profile_s));
4957 RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() Fail");
4959 out_data->id = src_data->id;
4960 out_data->contact_id = src_data->contact_id;
4961 out_data->order = src_data->order;
4962 out_data->uid = SAFE_STRDUP(src_data->uid);
4963 out_data->text = SAFE_STRDUP(src_data->text);
4964 out_data->service_operation = SAFE_STRDUP(src_data->service_operation);
4965 out_data->mime = SAFE_STRDUP(src_data->mime);
4966 out_data->app_id = SAFE_STRDUP(src_data->app_id);
4967 out_data->uri = SAFE_STRDUP(src_data->uri);
4968 out_data->category = SAFE_STRDUP(src_data->category);
4969 out_data->extra_data = SAFE_STRDUP(src_data->extra_data);
4971 int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
4972 if (CONTACTS_ERROR_NONE != ret) {
4973 /* LCOV_EXCL_START */
4974 ERR("ctsvc_record_copy_base() Fail");
4975 __ctsvc_profile_destroy((contacts_record_h)out_data, true);
4977 /* LCOV_EXCL_STOP */
4980 *out_record = (contacts_record_h)out_data;
4982 return CONTACTS_ERROR_NONE;
4985 static int __ctsvc_relationship_clone(contacts_record_h record, contacts_record_h *out_record)
4987 ctsvc_relationship_s *out_data = NULL;
4988 ctsvc_relationship_s *src_data = NULL;
4990 src_data = (ctsvc_relationship_s*)record;
4991 out_data = calloc(1, sizeof(ctsvc_relationship_s));
4992 RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() Fail");
4994 out_data->id = src_data->id;
4995 out_data->contact_id = src_data->contact_id;
4996 out_data->type = src_data->type;
4997 out_data->label = SAFE_STRDUP(src_data->label);
4998 out_data->name = SAFE_STRDUP(src_data->name);
5000 int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
5001 if (CONTACTS_ERROR_NONE != ret) {
5002 /* LCOV_EXCL_START */
5003 ERR("ctsvc_record_copy_base() Fail");
5004 __ctsvc_relationship_destroy((contacts_record_h)out_data, true);
5006 /* LCOV_EXCL_STOP */
5009 *out_record = (contacts_record_h)out_data;
5010 return CONTACTS_ERROR_NONE;
5013 static int __ctsvc_image_clone(contacts_record_h record, contacts_record_h *out_record)
5015 ctsvc_image_s *out_data = NULL;
5016 ctsvc_image_s *src_data = NULL;
5018 src_data = (ctsvc_image_s*)record;
5019 out_data = calloc(1, sizeof(ctsvc_image_s));
5020 RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() Fail");
5022 out_data->is_default = src_data->is_default;
5023 out_data->id = src_data->id;
5024 out_data->contact_id = src_data->contact_id;
5025 out_data->type = src_data->type;
5026 out_data->is_vcard = src_data->is_vcard;
5027 out_data->label = SAFE_STRDUP(src_data->label);
5028 if (src_data->path && src_data->is_vcard)
5029 __ctsvc_temp_image_hash_table_insert(src_data->path);
5030 out_data->path = SAFE_STRDUP(src_data->path);
5032 int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
5033 if (CONTACTS_ERROR_NONE != ret) {
5034 /* LCOV_EXCL_START */
5035 ERR("ctsvc_record_copy_base() Fail");
5036 __ctsvc_image_destroy((contacts_record_h)out_data, true);
5038 /* LCOV_EXCL_STOP */
5041 *out_record = (contacts_record_h)out_data;
5042 return CONTACTS_ERROR_NONE;
5045 static int __ctsvc_simple_contact_clone(contacts_record_h record, contacts_record_h *out_record)
5047 ctsvc_simple_contact_s *out_data = NULL;
5048 ctsvc_simple_contact_s *src_data = NULL;
5050 src_data = (ctsvc_simple_contact_s*)record;
5051 out_data = calloc(1, sizeof(ctsvc_simple_contact_s));
5052 RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() Fail");
5054 out_data->contact_id = src_data->contact_id;
5055 out_data->person_id = src_data->person_id;
5056 out_data->addressbook_id = src_data->addressbook_id;
5057 out_data->changed_time = src_data->changed_time;
5058 out_data->display_source_type = src_data->display_source_type;
5059 out_data->has_phonenumber = src_data->has_phonenumber;
5060 out_data->has_email = src_data->has_email;
5061 out_data->is_favorite = src_data->is_favorite;
5063 out_data->display_name = SAFE_STRDUP(src_data->display_name);
5064 out_data->uid = SAFE_STRDUP(src_data->uid);
5065 out_data->ringtone_path = SAFE_STRDUP(src_data->ringtone_path);
5066 out_data->vibration = SAFE_STRDUP(src_data->vibration);
5067 out_data->message_alert = SAFE_STRDUP(src_data->message_alert);
5068 out_data->image_thumbnail_path = SAFE_STRDUP(src_data->image_thumbnail_path);
5070 int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
5071 if (CONTACTS_ERROR_NONE != ret) {
5072 /* LCOV_EXCL_START */
5073 ERR("ctsvc_record_copy_base() Fail");
5074 __ctsvc_simple_contact_destroy((contacts_record_h)out_data, true);
5076 /* LCOV_EXCL_STOP */
5079 *out_record = (contacts_record_h)out_data;
5080 return CONTACTS_ERROR_NONE;
5083 static int __ctsvc_url_clone(contacts_record_h record, contacts_record_h *out_record)
5085 ctsvc_url_s *out_data = NULL;
5086 ctsvc_url_s *src_data = NULL;
5088 src_data = (ctsvc_url_s*)record;
5089 out_data = calloc(1, sizeof(ctsvc_url_s));
5090 RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() Fail");
5092 out_data->id = src_data->id;
5093 out_data->contact_id = src_data->contact_id;
5094 out_data->type = src_data->type;
5095 out_data->label = SAFE_STRDUP(src_data->label);
5096 out_data->url = SAFE_STRDUP(src_data->url);
5098 int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
5099 if (CONTACTS_ERROR_NONE != ret) {
5100 /* LCOV_EXCL_START */
5101 ERR("ctsvc_record_copy_base() Fail");
5102 __ctsvc_url_destroy((contacts_record_h)out_data, true);
5104 /* LCOV_EXCL_STOP */
5107 *out_record = (contacts_record_h)out_data;
5108 return CONTACTS_ERROR_NONE;
5111 static int __ctsvc_sip_clone(contacts_record_h record, contacts_record_h *out_record)
5113 ctsvc_sip_s *out_data = NULL;
5114 ctsvc_sip_s *src_data = NULL;
5116 src_data = (ctsvc_sip_s*)record;
5117 out_data = calloc(1, sizeof(ctsvc_sip_s));
5118 RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY,
5119 "Out of memeory : calloc(ctsvc_sip_s) Fail(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
5121 out_data->id = src_data->id;
5122 out_data->contact_id = src_data->contact_id;
5123 out_data->address = SAFE_STRDUP(src_data->address);
5124 out_data->type = src_data->type;
5125 out_data->label = SAFE_STRDUP(src_data->label);
5127 int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
5128 if (CONTACTS_ERROR_NONE != ret) {
5129 /* LCOV_EXCL_START */
5130 ERR("ctsvc_record_copy_base() Fail");
5131 __ctsvc_sip_destroy((contacts_record_h)out_data, true);
5133 /* LCOV_EXCL_STOP */
5136 *out_record = (contacts_record_h)out_data;
5137 return CONTACTS_ERROR_NONE;