merge wrt-plugins-tizen_0.2.0-3
[platform/framework/web/wrt-plugins-tizen.git] / src / platform / API / Contact / IContact.cpp
1 /*
2  * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the License);
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an AS IS BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 /**
18  * @file        Contact.cpp
19  * @author      Kisub Song (kisubs.song@samsung.com)
20  * @version     0.1
21  * @brief
22  * ## - Change name to IContact
23  */
24
25 #include "ContactFactory.h"
26 #include "IContact.h"
27
28 namespace TizenApis {
29 namespace Api {
30 namespace Contact {
31
32 IContact::IContact() :
33                 m_isFavorite(false),
34                 m_idIsSet(false),
35                 m_lastUpdatedIsSet(false),
36                 m_nameIsSet(false),
37                 m_accountIsSet(false),
38                 m_photoURIIsSet(false),
39                 m_birthdayIsSet(false),
40                 m_organizationIsSet(false),
41                 m_ringtoneURIIsSet(false)
42 {
43         m_name = ContactNamePtr(new ContactName());
44         m_account = ContactAccountPtr(new ContactAccount());
45         m_addresses = ContactAddressArrayPtr(new ContactAddressArray());
46         m_phoneNumbers = ContactPhoneNumberArrayPtr(new ContactPhoneNumberArray());
47         m_emails = ContactEmailAddressArrayPtr(new ContactEmailAddressArray());
48         m_birthday = {0, };
49         m_anniversaries = ContactAnniversaryArrayPtr(new ContactAnniversaryArray());
50         m_organization = ContactOrganizationPtr(new ContactOrganization());
51         m_notes = StringArrayPtr(new StringArray());
52         m_urls = ContactWebSiteArrayPtr(new ContactWebSiteArray());
53         m_categories = StringArrayPtr(new StringArray());
54 }
55
56 IContact::IContact(const std::string &vObjectStr, const std::string &format) :
57                 m_isFavorite(false),
58                 m_idIsSet(false),
59                 m_lastUpdatedIsSet(false),
60                 m_nameIsSet(false),
61                 m_accountIsSet(false),
62                 m_photoURIIsSet(false),
63                 m_birthdayIsSet(false),
64                 m_organizationIsSet(false),
65                 m_ringtoneURIIsSet(false)
66 {
67         m_name = ContactNamePtr(new ContactName());
68         m_account = ContactAccountPtr(new ContactAccount());
69         m_addresses = ContactAddressArrayPtr(new ContactAddressArray());
70         m_phoneNumbers = ContactPhoneNumberArrayPtr(new ContactPhoneNumberArray());
71         m_emails = ContactEmailAddressArrayPtr(new ContactEmailAddressArray());
72         m_birthday = {0, };
73         m_anniversaries = ContactAnniversaryArrayPtr(new ContactAnniversaryArray());
74         m_organization = ContactOrganizationPtr(new ContactOrganization());
75         m_notes = StringArrayPtr(new StringArray());
76         m_urls = ContactWebSiteArrayPtr(new ContactWebSiteArray());
77         m_categories = StringArrayPtr(new StringArray());
78 }
79
80 IContact::~IContact()
81 {
82 }
83
84 std::string IContact::getId() const
85 {
86         return m_id;
87 }
88
89 void IContact::setId(const std::string value)
90 {
91         m_id = value;
92         m_idIsSet = true;
93 }
94
95 bool IContact::getIdIsSet() const
96 {
97         return m_idIsSet;
98 }
99
100 void IContact::setId(const int value)
101 {
102         std::stringstream oss;
103         oss << value;
104         m_id = oss.str();
105         m_idIsSet = true;
106 }
107
108 std::tm IContact::getLastUpdated() const
109 {
110         return m_lastUpdated;
111 }
112
113 void IContact::setLastUpdated(const std::tm &value)
114 {
115         m_lastUpdated = value;
116         m_lastUpdatedIsSet = true;
117 }
118
119 bool IContact::getLastUpdatedIsSet() const
120 {
121         return m_lastUpdatedIsSet;
122 }
123
124 ContactNamePtr IContact::getName() const
125 {
126         return m_name;
127 }
128
129 void IContact::setName(const ContactNamePtr &value)
130 {
131         m_name = value;
132         m_nameIsSet = true;
133 }
134
135 bool IContact::getNameIsSet() const
136 {
137         return m_nameIsSet;
138 }
139
140 ContactAccountPtr IContact::getAccount() const
141 {
142         return m_account;
143 }
144
145 void IContact::setAccount(const ContactAccountPtr &value)
146 {
147         m_account = value;
148         m_accountIsSet = true;
149 }
150
151 bool IContact::getAccountIsSet() const
152 {
153         return m_accountIsSet;
154 }
155
156 ContactAddressArrayPtr IContact::getAddresses() const
157 {
158         return m_addresses;
159 }
160
161 void IContact::setAddresses(const ContactAddressArrayPtr &value)
162 {
163         m_addresses = value;
164 }
165
166 void IContact::addAddress(const ContactAddressPtr &value)
167 {
168         m_addresses->push_back(value);
169 }
170
171 int IContact::getAddressesNum() const
172 {
173         return m_addresses->size();
174 }
175
176 std::string IContact::getPhotoURI() const
177 {
178         return m_photoURI;
179 }
180
181 void IContact::setPhotoURI(const std::string &value)
182 {
183         m_photoURI = value;
184         m_photoURIIsSet = true;
185 }
186
187 bool IContact::getPhotoURIIsSet() const
188 {
189         return m_photoURIIsSet;
190 }
191
192 ContactPhoneNumberArrayPtr IContact::getPhoneNumbers() const
193 {
194         return m_phoneNumbers;
195 }
196
197 void IContact::setPhoneNumbers(const ContactPhoneNumberArrayPtr &value)
198 {
199         m_phoneNumbers = value;
200 }
201
202 void IContact::addPhoneNumber(const ContactPhoneNumberPtr &value)
203 {
204         m_phoneNumbers->push_back(value);
205 }
206
207 int IContact::getPhoneNumbersNum() const
208 {
209         return m_phoneNumbers->size();
210 }
211
212 ContactEmailAddressArrayPtr IContact::getEmails() const
213 {
214         return m_emails;
215 }
216
217 void IContact::addEmail(const ContactEmailAddressPtr& value)
218 {
219         m_emails->push_back(value);
220 }
221
222 void IContact::setEmails(const ContactEmailAddressArrayPtr &value)
223 {
224         m_emails = value;
225 }
226
227 int IContact::getEmailsNum() const
228 {
229         return m_emails->size();
230 }
231
232 std::tm IContact::getBirthday() const
233 {
234         return m_birthday;
235 }
236
237 void IContact::setBirthday(const std::tm &value)
238 {
239         m_birthday = value;
240         m_birthdayIsSet = true;
241 }
242
243 bool IContact::getBirthdayIsSet() const
244 {
245         return m_birthdayIsSet;
246 }
247
248 ContactAnniversaryArrayPtr IContact::getAnniversaries() const
249 {
250         return m_anniversaries;
251 }
252
253 void IContact::setAnniversaries(const ContactAnniversaryArrayPtr &value)
254 {
255         m_anniversaries = value;
256 }
257
258 void IContact::addAnniversary(const ContactAnniversaryPtr &value)
259 {
260         m_anniversaries->push_back(value);
261 }
262
263 int IContact::getAnniversariesNum() const
264 {
265         return m_anniversaries->size();
266 }
267
268 ContactOrganizationPtr IContact::getOrganization() const
269 {
270         return m_organization;
271 }
272
273 void IContact::setOrganization(const ContactOrganizationPtr &value)
274 {
275         m_organization = value;
276         m_organizationIsSet = true;
277 }
278
279 bool IContact::getOrganizationIsSet() const
280 {
281         return m_organizationIsSet;
282 }
283
284 StringArrayPtr IContact::getNotes() const
285 {
286         return m_notes;
287 }
288
289 void IContact::setNotes(const StringArrayPtr &value)
290 {
291         m_notes = value;
292 }
293
294 void IContact::addNote(const std::string &value)
295 {
296         m_notes->push_back(value);
297 }
298
299 int IContact::getNotesNum() const
300 {
301         return m_notes->size();
302 }
303
304 ContactWebSiteArrayPtr IContact::getUrls() const
305 {
306         return m_urls;
307 }
308
309 void IContact::setUrls(const ContactWebSiteArrayPtr &value)
310 {
311         m_urls = value;
312 }
313
314 void IContact::addUrl(const ContactWebSitePtr &value)
315 {
316         m_urls->push_back(value);
317 }
318
319 int IContact::getUrlsNum() const
320 {
321         return m_urls->size();
322 }
323
324 bool IContact::getIsFavorite() const
325 {
326         return m_isFavorite;
327 }
328
329 void IContact::setIsFavorite(const bool &value)
330 {
331         m_isFavorite = value;
332 }
333
334 std::string IContact::getRingtoneURI() const
335 {
336         return m_ringtoneURI;
337 }
338
339 bool IContact::getRingtoneURIIsSet() const
340 {
341         return m_ringtoneURIIsSet;
342 }
343
344 void IContact::setRingtoneURI(const std::string &value)
345 {
346         m_ringtoneURI = value;
347         m_ringtoneURIIsSet = true;
348 }
349
350 StringArrayPtr IContact::getCategories() const
351 {
352         return m_categories;
353 }
354
355 void IContact::setCategories(const StringArrayPtr &value)
356 {
357         m_categories = value;
358 }
359
360 void IContact::addCategory(const std::string &value)
361 {
362         m_categories->push_back(value);
363 }
364
365 int IContact::getCategoriesNum() const
366 {
367         return m_categories->size();
368 }
369
370 void IContact::copy(const ContactPtr &contact)
371 {
372         m_id = contact->m_id;
373         m_lastUpdated = contact->m_lastUpdated;
374
375         m_name = contact->m_name->clone();
376         m_account = contact->m_account->clone();
377         m_addresses = ContactAddressArrayPtr(new ContactAddressArray());
378         ContactAddressArray::iterator contactAddressIter;
379         for(contactAddressIter = contact->m_addresses->begin(); contactAddressIter != contact->m_addresses->end(); contactAddressIter++)
380                 m_addresses->push_back((*contactAddressIter)->clone());
381
382         m_photoURI = contact->m_photoURI;
383         m_phoneNumbers = ContactPhoneNumberArrayPtr(new ContactPhoneNumberArray());
384         ContactPhoneNumberArray::iterator contactPhoneNumberIter;
385         for(contactPhoneNumberIter = contact->m_phoneNumbers->begin(); contactPhoneNumberIter != contact->m_phoneNumbers->end(); contactPhoneNumberIter++)
386                 m_phoneNumbers->push_back((*contactPhoneNumberIter)->clone());
387
388         m_emails = ContactEmailAddressArrayPtr(new ContactEmailAddressArray());
389         ContactEmailAddressArray::iterator contactEmailAddressIter;
390         for(contactEmailAddressIter = contact->m_emails->begin(); contactEmailAddressIter != contact->m_emails->end(); contactEmailAddressIter++)
391                 m_emails->push_back((*contactEmailAddressIter)->clone());
392
393         m_birthday = contact->m_birthday;
394         m_anniversaries = ContactAnniversaryArrayPtr(new ContactAnniversaryArray());
395         ContactAnniversaryArray::iterator contactAnniversaryIter;
396         for(contactAnniversaryIter = contact->m_anniversaries->begin(); contactAnniversaryIter != contact->m_anniversaries->end(); contactAnniversaryIter++)
397                 m_anniversaries->push_back((*contactAnniversaryIter)->clone());
398
399         m_organization = contact->m_organization->clone();
400         m_notes = StringArrayPtr(new StringArray());
401         StringArray::iterator noteIter;
402         for(noteIter = contact->m_notes->begin(); noteIter != contact->m_notes->end(); noteIter++)
403         {
404                 std::string note = *noteIter;
405                 m_notes->push_back(note);
406         }
407
408         m_urls = ContactWebSiteArrayPtr(new ContactWebSiteArray());
409         ContactWebSiteArray::iterator contactWebSiteIter;
410         for(contactWebSiteIter = contact->m_urls->begin(); contactWebSiteIter != contact->m_urls->end(); contactWebSiteIter++)
411                 m_urls->push_back((*contactWebSiteIter)->clone());
412
413         m_isFavorite = contact->m_isFavorite;
414         m_ringtoneURI = contact->m_ringtoneURI;
415         m_categories = StringArrayPtr(new StringArray());
416         StringArray::iterator categoryIter;
417         for(categoryIter = contact->m_categories->begin(); categoryIter != contact->m_categories->end(); categoryIter++)
418         {
419                 std::string category = *categoryIter;
420                 m_categories->push_back(category);
421         }
422
423         m_idIsSet = contact->m_idIsSet;
424         m_lastUpdatedIsSet = contact->m_lastUpdatedIsSet;
425         m_nameIsSet = contact->m_nameIsSet;
426         m_accountIsSet = contact->m_accountIsSet;
427         m_photoURIIsSet = contact->m_photoURIIsSet;
428         m_birthdayIsSet = contact->m_birthdayIsSet;
429         m_organizationIsSet = contact->m_organizationIsSet;
430         m_ringtoneURIIsSet = contact->m_ringtoneURIIsSet;
431 }
432
433 void IContact::clear()
434 {
435         m_id = "";
436         m_lastUpdated = {0, };
437         m_name = ContactNamePtr(new ContactName());
438         m_account = ContactAccountPtr(new ContactAccount());
439         m_addresses = ContactAddressArrayPtr(new ContactAddressArray());
440         m_photoURI = "";
441         m_phoneNumbers = ContactPhoneNumberArrayPtr(new ContactPhoneNumberArray());
442         m_emails = ContactEmailAddressArrayPtr(new ContactEmailAddressArray());
443         m_birthday = {0, };
444         m_anniversaries = ContactAnniversaryArrayPtr(new ContactAnniversaryArray());
445         m_organization = ContactOrganizationPtr(new ContactOrganization());
446         m_notes = StringArrayPtr(new StringArray());
447         m_urls = ContactWebSiteArrayPtr(new ContactWebSiteArray());
448         m_isFavorite = false;
449         m_ringtoneURI = "";
450         m_categories = StringArrayPtr(new StringArray());
451
452         m_idIsSet = false;
453         m_lastUpdatedIsSet = false;
454         m_nameIsSet = false;
455         m_accountIsSet = false;
456         m_photoURIIsSet = false;
457         m_birthdayIsSet = false;
458         m_organizationIsSet = false;
459         m_ringtoneURIIsSet = false;
460 }
461
462 ContactPtr IContact::clone() const
463 {
464         ContactPtr result = ContactFactory::getInstance().createContact();
465
466         result->m_id = "";
467         result->m_lastUpdated = {0, };
468
469         result->m_name = m_name->clone();
470         result->m_account = m_account->clone();
471         result->m_addresses = ContactAddressArrayPtr(new ContactAddressArray());
472         ContactAddressArray::iterator contactAddressIter;
473         for(contactAddressIter = m_addresses->begin(); contactAddressIter != m_addresses->end(); contactAddressIter++)
474                 result->m_addresses->push_back((*contactAddressIter)->clone());
475
476         result->m_photoURI = m_photoURI;
477         result->m_phoneNumbers = ContactPhoneNumberArrayPtr(new ContactPhoneNumberArray());
478         ContactPhoneNumberArray::iterator contactPhoneNumberIter;
479         for(contactPhoneNumberIter = m_phoneNumbers->begin(); contactPhoneNumberIter != m_phoneNumbers->end(); contactPhoneNumberIter++)
480                 result->m_phoneNumbers->push_back((*contactPhoneNumberIter)->clone());
481
482         result->m_emails = ContactEmailAddressArrayPtr(new ContactEmailAddressArray());
483         ContactEmailAddressArray::iterator contactEmailAddressIter;
484         for(contactEmailAddressIter = m_emails->begin(); contactEmailAddressIter != m_emails->end(); contactEmailAddressIter++)
485                 result->m_emails->push_back((*contactEmailAddressIter)->clone());
486
487         result->m_birthday = m_birthday;
488         result->m_anniversaries = ContactAnniversaryArrayPtr(new ContactAnniversaryArray());
489         ContactAnniversaryArray::iterator contactAnniversaryIter;
490         for(contactAnniversaryIter = m_anniversaries->begin(); contactAnniversaryIter != m_anniversaries->end(); contactAnniversaryIter++)
491                 result->m_anniversaries->push_back((*contactAnniversaryIter)->clone());
492
493         result->m_organization = m_organization->clone();
494         result->m_notes = StringArrayPtr(new StringArray());
495         StringArray::iterator noteIter;
496         for(noteIter = m_notes->begin(); noteIter != m_notes->end(); noteIter++)
497         {
498                 std::string note = *noteIter;
499                 result->m_notes->push_back(note);
500         }
501
502         result->m_urls = ContactWebSiteArrayPtr(new ContactWebSiteArray());
503         ContactWebSiteArray::iterator contactWebSiteIter;
504         for(contactWebSiteIter = m_urls->begin(); contactWebSiteIter != m_urls->end(); contactWebSiteIter++)
505                 result->m_urls->push_back((*contactWebSiteIter)->clone());
506
507         result->m_isFavorite = m_isFavorite;
508         result->m_ringtoneURI = m_ringtoneURI;
509         result->m_categories = StringArrayPtr(new StringArray());
510         StringArray::iterator categoryIter;
511         for(categoryIter = m_categories->begin(); categoryIter != m_categories->end(); categoryIter++)
512         {
513                 std::string category = *categoryIter;
514                 result->m_categories->push_back(category);
515         }
516
517         result->m_idIsSet = false;
518         result->m_lastUpdatedIsSet = false;
519         result->m_nameIsSet = m_nameIsSet;
520         result->m_accountIsSet = m_accountIsSet;
521         result->m_photoURIIsSet = m_photoURIIsSet;
522         result->m_birthdayIsSet = m_birthdayIsSet;
523         result->m_organizationIsSet = m_organizationIsSet;
524         result->m_ringtoneURIIsSet = m_ringtoneURIIsSet;
525
526         return result;
527 }
528
529 } // Contact
530 } // Api
531 } // TizenApis