2 // Tizen Web Device API
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
19 * @file ContactConverter.cpp
20 * @author Kisub Song (kisubs.song@samsung.com)
25 #include "ContactConverter.h"
28 #include <dpl/log/log.h>
29 #include <CommonsJavaScript/Validator.h>
30 #include <CommonsJavaScript/ScopedJSStringRef.h>
31 #include <CommonsJavaScript/JSUtils.h>
32 #include <Commons/RegexUtils.h>
33 #include "ContactFactory.h"
34 #include "AddressBookController.h"
35 #include "JSAddressBook.h"
36 #include "JSAddressBookArray.h"
37 #include "JSContact.h"
38 #include "JSContactArray.h"
40 #include "JSPersonArray.h"
41 #include "JSContactGroup.h"
42 #include "JSContactGroupArray.h"
43 #include "JSContactRef.h"
44 #include "JSContactName.h"
45 #include "JSContactAnniversary.h"
46 #include "JSContactAnniversaryArray.h"
47 #include "JSContactAddress.h"
48 #include "JSContactAddressArray.h"
49 #include "JSContactAddressTypeArray.h"
50 #include "JSContactManager.h"
51 #include "JSContactPhoneNumber.h"
52 #include "JSContactPhoneNumberArray.h"
53 #include "JSContactPhoneNumberTypeArray.h"
54 #include "JSContactEmailAddress.h"
55 #include "JSContactEmailAddressArray.h"
56 #include "JSContactEmailAddressTypeArray.h"
57 #include "JSContactOrganization.h"
58 #include "JSContactOrganizationArray.h"
59 #include "JSContactWebSite.h"
60 #include "JSContactWebSiteArray.h"
61 #include "JSStringArray.h"
63 #define CONTACT_ATTRIBUTE_ACCOUNT_ID "accountId"
64 #define CONTACT_ATTRIBUTE_ADDITIONAL_INFORMATION "additionalInformation"
65 #define CONTACT_ATTRIBUTE_ADDRESSES "addresses"
66 #define CONTACT_ATTRIBUTE_ANNIVERSARIES "anniversaries"
67 //#define CONTACT_ATTRIBUTE_ATTRIBUTES_OF_INTEREST "attributesOfInterest"
68 #define CONTACT_ATTRIBUTE_BIRTHDAY "birthday"
69 #define CONTACT_ATTRIBUTE_CITY "city"
70 #define CONTACT_ATTRIBUTE_CONTACT_ID "contactId"
71 #define CONTACT_ATTRIBUTE_CONTACT_URI "contactURI"
72 #define CONTACT_ATTRIBUTE_COUNTRY "country"
73 #define CONTACT_ATTRIBUTE_COUNTY "county"
74 #define CONTACT_ATTRIBUTE_DATE "date"
75 #define CONTACT_ATTRIBUTE_DEPARTMENT "department"
76 #define CONTACT_ATTRIBUTE_DISPLAY_NAME "displayName"
77 #define CONTACT_ATTRIBUTE_EMAIL "email"
78 #define CONTACT_ATTRIBUTE_EMAILS "emails"
79 #define CONTACT_ATTRIBUTE_FIRST_NAME "firstName"
80 #define CONTACT_ATTRIBUTE_GROUP_IDS "groupIds"
81 #define CONTACT_ATTRIBUTE_ID "id"
82 #define CONTACT_ATTRIBUTE_IS_DEFAULT "isDefault"
83 #define CONTACT_ATTRIBUTE_IS_FAVORITE "isFavorite"
84 #define CONTACT_ATTRIBUTE_LABEL "label"
85 #define CONTACT_ATTRIBUTE_LAST_NAME "lastName"
86 #define CONTACT_ATTRIBUTE_LAST_UPDATED "lastUpdated"
87 #define CONTACT_ATTRIBUTE_LOGO_URI "logoURI"
88 #define CONTACT_ATTRIBUTE_MIDDLE_NAME "middleName"
89 #define CONTACT_ATTRIBUTE_NAME "name"
90 #define CONTACT_ATTRIBUTE_NICKNAMES "nicknames"
91 #define CONTACT_ATTRIBUTE_NOTES "notes"
92 #define CONTACT_ATTRIBUTE_NUMBER "number"
93 #define CONTACT_ATTRIBUTE_OFFICE "office"
94 #define CONTACT_ATTRIBUTE_ORGANIZATIONS "organizations"
95 #define CONTACT_ATTRIBUTE_PHONE_NUMBERS "phoneNumbers"
96 #define CONTACT_ATTRIBUTE_PHONETIC_FIRST_NAME "phoneticFirstName"
97 #define CONTACT_ATTRIBUTE_PHONETIC_LAST_NAME "phoneticLastName"
98 #define CONTACT_ATTRIBUTE_PHOTO_URI "photoURI"
99 #define CONTACT_ATTRIBUTE_POSITION "position"
100 #define CONTACT_ATTRIBUTE_POSTAL_CODE "postalCode"
101 #define CONTACT_ATTRIBUTE_PREFIX "prefix"
102 #define CONTACT_ATTRIBUTE_READ_ONLY "readOnly"
103 #define CONTACT_ATTRIBUTE_REGION "region"
104 #define CONTACT_ATTRIBUTE_RINGTONE_URI "ringtoneURI"
105 #define CONTACT_ATTRIBUTE_ROLE "role"
106 #define CONTACT_ATTRIBUTE_SUFFIX "suffix"
107 #define CONTACT_ATTRIBUTE_STREET_ADDRESS "streetAddress"
108 #define CONTACT_ATTRIBUTE_TITLE "title"
109 #define CONTACT_ATTRIBUTE_TYPE "type"
110 #define CONTACT_ATTRIBUTE_TYPES "types"
111 #define CONTACT_ATTRIBUTE_URL "url"
112 #define CONTACT_ATTRIBUTE_URLS "urls"
114 #define STR_CONTACT_EMPTY_STRING ""
116 #define STR_CONTACT_EMAIL_TYPE_WORK "WORK"
117 #define STR_CONTACT_EMAIL_TYPE_PREF "PREF"
118 #define STR_CONTACT_EMAIL_TYPE_HOME "HOME"
120 #define STR_CONTACT_PHONE_NUMBER_TYPE_WORK "WORK"
121 #define STR_CONTACT_PHONE_NUMBER_TYPE_PREF "PREF"
122 #define STR_CONTACT_PHONE_NUMBER_TYPE_HOME "HOME"
123 #define STR_CONTACT_PHONE_NUMBER_TYPE_VOICE "VOICE"
124 #define STR_CONTACT_PHONE_NUMBER_TYPE_FAX "FAX"
125 #define STR_CONTACT_PHONE_NUMBER_TYPE_MSG "MSG"
126 #define STR_CONTACT_PHONE_NUMBER_TYPE_CELL "CELL"
127 #define STR_CONTACT_PHONE_NUMBER_TYPE_PAGER "PAGER"
128 #define STR_CONTACT_PHONE_NUMBER_TYPE_BBS "BBS"
129 #define STR_CONTACT_PHONE_NUMBER_TYPE_MODEM "MODEM"
130 #define STR_CONTACT_PHONE_NUMBER_TYPE_CAR "CAR"
131 #define STR_CONTACT_PHONE_NUMBER_TYPE_ISDN "ISDN"
132 #define STR_CONTACT_PHONE_NUMBER_TYPE_VIDEO "VIDEO"
133 #define STR_CONTACT_PHONE_NUMBER_TYPE_PCS "PCS"
135 #define STR_CONTACT_ADDRESS_TYPE_WORK "WORK"
136 #define STR_CONTACT_ADDRESS_TYPE_PREF "PREF"
137 #define STR_CONTACT_ADDRESS_TYPE_HOME "HOME"
139 #define STR_WEBSITE_TYPE_HOMEPAGE "HOMEPAGE"
140 #define STR_WEBSITE_TYPE_BLOG "BLOG"
142 namespace DeviceAPI {
145 using namespace WrtDeviceApis::Commons;
146 using namespace WrtDeviceApis::CommonsJavaScript;
148 std::vector<std::string> ContactConverter::m_allowedContactInit;
149 std::vector<std::string> ContactConverter::m_allowedContactNameInit;
150 std::vector<std::string> ContactConverter::m_allowedContactOrganizationInit;
151 std::vector<std::string> ContactConverter::m_allowedContactAddressInit;
153 ContactConverter::ContactConverter(JSContextRef context) : Converter(context)
155 static bool init = initializeAllowedProperties();
159 ContactConverter::~ContactConverter()
163 JSValueRef ContactConverter::toJSValueRef(const AddressBookPtr &arg)
166 AddressBookController *priv = new AddressBookController(m_context, arg);
167 return JSObjectMake(m_context, JSAddressBook::getClassRef(), priv);
170 AddressBookPtr ContactConverter::toAddressBook(const JSValueRef &jsValue)
172 if(!JSAddressBook::isObjectOfClass(m_context, jsValue))
173 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Wrong attribute");
175 return JSAddressBook::getAddressBook(m_context, jsValue);
178 JSValueRef ContactConverter::toJSValueRef(const AddressBookArrayPtr &arg)
180 int size = arg->size();
182 JSObjectRef resultObject = JSCreateArrayObject(m_context, 0, NULL);
184 ThrowMsg(ConversionException, "Can not create array object.");
186 for(int i = 0; i < size; i++)
188 JSValueRef jsvalue = toJSValueRef(arg->at(i));
189 if (!JSSetArrayElement(m_context, resultObject, i, jsvalue))
190 ThrowMsg(ConversionException, "Can not fill address book array.");
193 return static_cast<JSValueRef>(resultObject);
196 AddressBookArrayPtr ContactConverter::toAddressBookArray(const JSValueRef &jsValue)
198 if(JSAddressBookArray::isObjectOfClass(m_context, jsValue))
199 return JSAddressBookArray::getAddressBookArray(m_context, jsValue);
201 if(!JSIsArrayValue(m_context, jsValue))
202 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "AddressBookArray is not array.");
204 AddressBookArrayPtr result(new AddressBookArray());
206 JSObjectRef jsObject = toJSObjectRef(jsValue);
207 for (std::size_t i = 0; i < JSGetArrayLength(m_context, jsObject); ++i) {
208 JSValueRef element = JSGetArrayElement(m_context, jsObject, i);
209 result->push_back(toAddressBook(element));
214 JSValueRef ContactConverter::toJSValueRef(const ContactPtr &arg)
216 return WrtDeviceApis::CommonsJavaScript::JSUtils::makeObject(m_context, JSContact::getClassRef(), arg);
219 ContactPtr ContactConverter::toContact(const JSValueRef &jsValue)
221 if(!JSContact::isObjectOfClass(m_context, jsValue))
223 LogError("Not a Contact object");
224 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Wrong attribute");
227 ContactPtr tempContact = JSContact::getContact(m_context, jsValue);
229 const ScopedJSStringRef nameStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_NAME));
230 const ScopedJSStringRef addressesStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_ADDRESSES));
231 const ScopedJSStringRef groupIdsStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_GROUP_IDS));
232 const ScopedJSStringRef notesStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_NOTES));
233 const ScopedJSStringRef phoneNumbersStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_PHONE_NUMBERS));
234 const ScopedJSStringRef emailsStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_EMAILS));
236 JSObjectRef jsObject = toJSObjectRef(jsValue);
237 JSValueRef nameData = JSObjectGetProperty(m_context, jsObject, nameStr.get(), NULL);
238 JSValueRef addressesData = JSObjectGetProperty(m_context, jsObject, addressesStr.get(), NULL);
239 JSValueRef phoneNumbersData = JSObjectGetProperty(m_context, jsObject, phoneNumbersStr.get(), NULL);
240 JSValueRef emailsData = JSObjectGetProperty(m_context, jsObject, emailsStr.get(), NULL);
241 JSValueRef groupIdsData = JSObjectGetProperty(m_context, jsObject, groupIdsStr.get(), NULL);
242 JSValueRef notesData = JSObjectGetProperty(m_context, jsObject, notesStr.get(), NULL);
245 ContactAddressArrayPtr addresses;
246 ContactPhoneNumberArrayPtr phoneNumbers;
247 ContactEmailAddressArrayPtr emails;
248 StringArrayPtr groupIds;
249 StringArrayPtr notes;
251 Validator validator(m_context);
253 if (!validator.isNullOrUndefined(nameData)) {
254 name = toContactName(nameData);
255 tempContact->setName(name);
258 if (!validator.isNullOrUndefined(addressesData)) {
259 addresses = toContactAddressArray(addressesData);
260 tempContact->setAddresses(addresses);
263 if (!validator.isNullOrUndefined(phoneNumbersData)) {
264 phoneNumbers = toContactPhoneNumberArray(phoneNumbersData);
265 tempContact->setPhoneNumbers(phoneNumbers);
268 if (!validator.isNullOrUndefined(emailsData)) {
269 emails = toContactEmailAddressArray(emailsData);
270 tempContact->setEmails(emails);
273 if (!validator.isNullOrUndefined(groupIdsData)) {
274 groupIds = toStringArray(groupIdsData);
275 tempContact->setGroupIds(groupIds);
278 if (!validator.isNullOrUndefined(notesData)) {
279 notes = toStringArray(notesData);
280 tempContact->setNotes(notes);
285 // return JSContact::getContact(m_context, jsValue);
288 ContactPtr ContactConverter::toContactFromInit(const JSValueRef &jsValue)
290 // from ContactInit to Contact
291 Validator validator(m_context);
292 if (validator.isNullOrUndefined(jsValue)) {
293 LogError("ContactInit object is null");
294 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Wrong attribute");
297 if (!JSValueIsObject(m_context, jsValue) || JSIsArrayValue(m_context, jsValue)) {
298 LogError("ContactInit object is not object");
299 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Wrong attribute");
302 // if (!validator.checkArrayKeys(m_allowedContactInit, jsValue)) {
303 // LogError("invalid properties in ContactInit object");
304 // ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Wrong attribute");
307 const ScopedJSStringRef nameStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_NAME));
308 const ScopedJSStringRef addressesStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_ADDRESSES));
309 const ScopedJSStringRef photoURIStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_PHOTO_URI));
310 const ScopedJSStringRef phoneNumbersStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_PHONE_NUMBERS));
311 const ScopedJSStringRef emailsStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_EMAILS));
312 const ScopedJSStringRef birthdayStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_BIRTHDAY));
313 const ScopedJSStringRef anniversariesStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_ANNIVERSARIES));
314 const ScopedJSStringRef organizationsStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_ORGANIZATIONS));
315 const ScopedJSStringRef notesStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_NOTES));
316 const ScopedJSStringRef urlsStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_URLS));
317 const ScopedJSStringRef isFavoriteStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_IS_FAVORITE));
318 const ScopedJSStringRef ringtoneURIStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_RINGTONE_URI));
319 const ScopedJSStringRef groupIdsStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_GROUP_IDS));
321 JSObjectRef jsObject = toJSObjectRef(jsValue);
323 JSValueRef nameData = JSObjectGetProperty(m_context, jsObject, nameStr.get(), NULL);
324 JSValueRef addressesData = JSObjectGetProperty(m_context, jsObject, addressesStr.get(), NULL);
325 JSValueRef photoURIData = JSObjectGetProperty(m_context, jsObject, photoURIStr.get(), NULL);
326 JSValueRef phoneNumbersData = JSObjectGetProperty(m_context, jsObject, phoneNumbersStr.get(), NULL);
327 JSValueRef emailsData = JSObjectGetProperty(m_context, jsObject, emailsStr.get(), NULL);
328 JSValueRef birthdayData = JSObjectGetProperty(m_context, jsObject, birthdayStr.get(), NULL);
329 JSValueRef anniversariesData = JSObjectGetProperty(m_context, jsObject, anniversariesStr.get(), NULL);
330 JSValueRef organizationsData = JSObjectGetProperty(m_context, jsObject, organizationsStr.get(), NULL);
331 JSValueRef notesData = JSObjectGetProperty(m_context, jsObject, notesStr.get(), NULL);
332 JSValueRef urlsData = JSObjectGetProperty(m_context, jsObject, urlsStr.get(), NULL);
333 JSValueRef ringtoneURIData = JSObjectGetProperty(m_context, jsObject, ringtoneURIStr.get(), NULL);
334 JSValueRef groupIdsData = JSObjectGetProperty(m_context, jsObject, groupIdsStr.get(), NULL);
337 ContactAddressArrayPtr addresses;
338 std::string photoURI;
339 ContactPhoneNumberArrayPtr phoneNumbers;
340 ContactEmailAddressArrayPtr emails;
342 ContactAnniversaryArrayPtr anniversaries;
343 ContactOrganizationArrayPtr organizations;
344 StringArrayPtr notes;
345 ContactWebSiteArrayPtr urls;
346 std::string ringtoneURI;
347 StringArrayPtr groupIds;
349 ContactPtr result = ContactFactory::getInstance().createContact();
351 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Cannot create Contact object");
354 if (!validator.isNullOrUndefined(nameData)) {
355 name = toContactName(nameData);
356 result->setName(name);
359 if (!validator.isNullOrUndefined(addressesData)) {
360 addresses = toContactAddressArray(addressesData);
361 result->setAddresses(addresses);
364 if (!validator.isNullOrUndefined(photoURIData)) {
365 if(!JSValueIsString(m_context, photoURIData))
366 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "photoURI is not string");
367 photoURI = toString(photoURIData);
368 result->setPhotoURI(photoURI);
371 if (!validator.isNullOrUndefined(phoneNumbersData)) {
372 phoneNumbers = toContactPhoneNumberArray(phoneNumbersData);
373 result->setPhoneNumbers(phoneNumbers);
376 if (!validator.isNullOrUndefined(emailsData)) {
377 emails = toContactEmailAddressArray(emailsData);
378 result->setEmails(emails);
381 if (!validator.isNullOrUndefined(birthdayData)) {
382 if(!validator.isDate(birthdayData))
383 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "birthday is not Date");
384 birthday = toDateTm(birthdayData);
385 result->setBirthday(birthday);
388 if (!validator.isNullOrUndefined(anniversariesData)) {
389 anniversaries = toContactAnniversaryArray(anniversariesData);
390 result->setAnniversaries(anniversaries);
393 if (!validator.isNullOrUndefined(organizationsData)) {
394 organizations = toContactOrganizationArray(organizationsData);
395 result->setOrganizations(organizations);
398 if (!validator.isNullOrUndefined(notesData)) {
399 notes = toStringArray(notesData);
400 result->setNotes(notes);
403 if (!validator.isNullOrUndefined(urlsData)) {
404 urls = toContactWebSiteArray(urlsData);
405 result->setUrls(urls);
408 if (!validator.isNullOrUndefined(ringtoneURIData)) {
409 if(!JSValueIsString(m_context, ringtoneURIData))
410 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "ringtoneURI is not string");
411 ringtoneURI = toString(ringtoneURIData);
412 result->setRingtoneURI(ringtoneURI);
415 if (!validator.isNullOrUndefined(groupIdsData)) {
416 groupIds = toStringArray(groupIdsData);
417 result->setGroupIds(groupIds);
423 JSValueRef ContactConverter::toJSValueRef(const ContactArrayPtr &arg)
425 int size = arg->size();
427 JSObjectRef resultObject = JSCreateArrayObject(m_context, 0, NULL);
429 ThrowMsg(ConversionException, "Can not create array object.");
431 for(int i = 0; i < size; i++)
433 JSValueRef jsvalue = toJSValueRef(arg->at(i));
434 if (!JSSetArrayElement(m_context, resultObject, i, jsvalue))
435 ThrowMsg(ConversionException, "Can not fill contact array.");
438 return static_cast<JSValueRef>(resultObject);
441 ContactArrayPtr ContactConverter::toContactArray(const JSValueRef &jsValue)
443 // // toJSValueRef(ContactArrayPtr) creates user object.
444 // if(JSContactArray::isObjectOfClass(m_context, jsValue))
445 // return JSContactArray::getContactArray(m_context, jsValue);
447 if(!JSIsArrayValue(m_context, jsValue))
448 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "ContactArray is not array.");
450 ContactArrayPtr result = ContactArrayPtr(new ContactArray());
452 JSObjectRef jsObject = toJSObjectRef(jsValue);
453 for (std::size_t i = 0; i < JSGetArrayLength(m_context, jsObject); ++i) {
454 JSValueRef element = JSGetArrayElement(m_context, jsObject, i);
455 result->push_back(toContact(element));
460 JSValueRef ContactConverter::toJSValueRef(const PersonPtr &arg)
462 return WrtDeviceApis::CommonsJavaScript::JSUtils::makeObject(m_context, JSPerson::getClassRef(), arg);
465 PersonPtr ContactConverter::toPerson(const JSValueRef &jsValue)
467 if(!JSPerson::isObjectOfClass(m_context, jsValue))
469 LogError("Not a Person object");
470 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Wrong attribute");
473 return JSPerson::getPerson(m_context, jsValue);
476 JSValueRef ContactConverter::toJSValueRef(const PersonArrayPtr &arg)
478 int size = arg->size();
480 JSObjectRef resultObject = JSCreateArrayObject(m_context, 0, NULL);
482 ThrowMsg(ConversionException, "Can not create array object.");
484 for(int i = 0; i < size; i++)
486 JSValueRef jsvalue = toJSValueRef(arg->at(i));
487 if (!JSSetArrayElement(m_context, resultObject, i, jsvalue))
488 ThrowMsg(ConversionException, "Can not add object to array.");
491 return static_cast<JSValueRef>(resultObject);
494 PersonArrayPtr ContactConverter::toPersonArray(const JSValueRef &jsValue)
496 if(JSPersonArray::isObjectOfClass(m_context, jsValue))
497 return JSPersonArray::getPersonArray(m_context, jsValue);
499 if(!JSIsArrayValue(m_context, jsValue))
500 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "PersonArray is not array.");
502 PersonArrayPtr result(new PersonArray());
504 JSObjectRef jsObject = toJSObjectRef(jsValue);
505 for (std::size_t i = 0; i < JSGetArrayLength(m_context, jsObject); ++i) {
506 JSValueRef element = JSGetArrayElement(m_context, jsObject, i);
507 result->push_back(toPerson(element));
512 JSValueRef ContactConverter::toJSValueRef(const ContactGroupPtr &arg)
514 return WrtDeviceApis::CommonsJavaScript::JSUtils::makeObject(m_context, JSContactGroup::getClassRef(), arg);
517 ContactGroupPtr ContactConverter::toContactGroup(const JSValueRef &jsValue)
519 if(!JSContactGroup::isObjectOfClass(m_context, jsValue))
521 LogError("Not a ContactGroup object");
522 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Wrong attribute");
525 return JSContactGroup::getContactGroup(m_context, jsValue);
528 JSValueRef ContactConverter::toJSValueRef(const ContactGroupArrayPtr &arg)
530 int size = arg->size();
532 JSObjectRef resultObject = JSCreateArrayObject(m_context, 0, NULL);
534 ThrowMsg(ConversionException, "Can not create array object.");
536 for(int i = 0; i < size; i++)
538 JSValueRef jsvalue = toJSValueRef(arg->at(i));
539 if (!JSSetArrayElement(m_context, resultObject, i, jsvalue))
540 ThrowMsg(ConversionException, "Can not add object to array.");
543 return static_cast<JSValueRef>(resultObject);
546 ContactGroupArrayPtr ContactConverter::toContactGroupArray(const JSValueRef &jsValue)
548 if(JSContactGroupArray::isObjectOfClass(m_context, jsValue))
549 return JSContactGroupArray::getContactGroupArray(m_context, jsValue);
551 if(!JSIsArrayValue(m_context, jsValue))
552 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "ContactGroupArray is not array.");
554 ContactGroupArrayPtr result(new ContactGroupArray());
556 JSObjectRef jsObject = toJSObjectRef(jsValue);
557 for (std::size_t i = 0; i < JSGetArrayLength(m_context, jsObject); ++i) {
558 JSValueRef element = JSGetArrayElement(m_context, jsObject, i);
559 result->push_back(toContactGroup(element));
564 JSValueRef ContactConverter::toJSValueRef(const ContactRefPtr &arg)
566 return WrtDeviceApis::CommonsJavaScript::JSUtils::makeObject(m_context, JSContactRef::getClassRef(), arg);
569 ContactRefPtr ContactConverter::toContactRef(const JSValueRef &jsValue)
571 if(!JSContactRef::isObjectOfClass(m_context, jsValue))
573 LogError("Not a ContactRef object");
574 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Wrong attribute");
577 return JSContactRef::getContactRef(m_context, jsValue);
580 JSValueRef ContactConverter::toJSValueRef(const ContactNamePtr &arg)
582 return WrtDeviceApis::CommonsJavaScript::JSUtils::makeObject(m_context, JSContactName::getClassRef(), arg);
585 ContactNamePtr ContactConverter::toContactName(const JSValueRef &jsValue)
587 if(!JSContactName::isObjectOfClass(m_context, jsValue))
589 LogError("Not a ContactName object");
590 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Wrong attribute");
593 return JSContactName::getContactName(m_context, jsValue);
596 ContactNamePtr ContactConverter::toContactNameFromInit(const JSValueRef &jsValue)
598 // from ContactNameInit to ContactName
599 Validator validator(m_context);
600 if (validator.isNullOrUndefined(jsValue)) {
601 LogError("ContactNameInit object is null");
602 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Wrong attribute");
605 if (!JSValueIsObject(m_context, jsValue) || JSIsArrayValue(m_context, jsValue)) {
606 LogError("ContactNameInit object is not object");
607 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Wrong attribute");
610 // if (!validator.checkArrayKeys(m_allowedContactNameInit, jsValue)) {
611 // LogError("invalid properties in ContactNameInit object");
612 // ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Wrong attribute");
615 const ScopedJSStringRef prefixStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_PREFIX));
616 const ScopedJSStringRef suffixStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_SUFFIX));
617 const ScopedJSStringRef firstNameStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_FIRST_NAME));
618 const ScopedJSStringRef middleNameStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_MIDDLE_NAME));
619 const ScopedJSStringRef lastNameStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_LAST_NAME));
620 const ScopedJSStringRef nicknamesStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_NICKNAMES));
621 const ScopedJSStringRef phoneticFirstNameStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_PHONETIC_FIRST_NAME));
622 const ScopedJSStringRef phoneticLastNameStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_PHONETIC_LAST_NAME));
624 JSObjectRef jsObject = toJSObjectRef(jsValue);
626 JSValueRef prefixData = JSObjectGetProperty(m_context, jsObject, prefixStr.get(), NULL);
627 JSValueRef suffixData = JSObjectGetProperty(m_context, jsObject, suffixStr.get(), NULL);
628 JSValueRef firstNameData = JSObjectGetProperty(m_context, jsObject, firstNameStr.get(), NULL);
629 JSValueRef middleNameData = JSObjectGetProperty(m_context, jsObject, middleNameStr.get(), NULL);
630 JSValueRef lastNameData = JSObjectGetProperty(m_context, jsObject, lastNameStr.get(), NULL);
631 JSValueRef nicknamesData = JSObjectGetProperty(m_context, jsObject, nicknamesStr.get(), NULL);
632 JSValueRef phoneticFirstNameData = JSObjectGetProperty(m_context, jsObject, phoneticFirstNameStr.get(), NULL);
633 JSValueRef phoneticLastNameData = JSObjectGetProperty(m_context, jsObject, phoneticLastNameStr.get(), NULL);
637 std::string firstName;
638 std::string middleName;
639 std::string lastName;
640 StringArrayPtr nicknames;
641 std::string phoneticFirstName;
642 std::string phoneticLastName;
644 ContactNamePtr result = ContactNamePtr(new ContactName());
646 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Cannot create ContactName object");
649 if (!validator.isNullOrUndefined(prefixData)) {
650 if(!JSValueIsString(m_context, prefixData))
651 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "prefix is not string");
652 prefix = toString(prefixData);
653 result->setPrefix(prefix);
656 if (!validator.isNullOrUndefined(suffixData)) {
657 if(!JSValueIsString(m_context, suffixData))
658 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "suffix is not string");
659 suffix = toString(suffixData);
660 result->setSuffix(suffix);
663 if (!validator.isNullOrUndefined(firstNameData)) {
664 if(!JSValueIsString(m_context, firstNameData))
665 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "firstName is not string");
666 firstName = toString(firstNameData);
667 result->setFirstName(firstName);
670 if (!validator.isNullOrUndefined(middleNameData)) {
671 if(!JSValueIsString(m_context, middleNameData))
672 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "middleName is not string");
673 middleName = toString(middleNameData);
674 result->setMiddleName(middleName);
677 if (!validator.isNullOrUndefined(lastNameData)) {
678 if(!JSValueIsString(m_context, lastNameData))
679 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "lastName is not string");
680 lastName = toString(lastNameData);
681 result->setLastName(lastName);
684 if (!validator.isNullOrUndefined(nicknamesData)) {
685 nicknames = toStringArray(nicknamesData);
686 result->setNicknames(nicknames);
689 if (!validator.isNullOrUndefined(phoneticFirstNameData)) {
690 if(!JSValueIsString(m_context, phoneticFirstNameData))
691 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "phoneticFirstName is not string");
692 phoneticFirstName = toString(phoneticFirstNameData);
693 result->setPhoneticFirstName(phoneticFirstName);
696 if (!validator.isNullOrUndefined(phoneticLastNameData)) {
697 if(!JSValueIsString(m_context, phoneticLastNameData))
698 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "phoneticLastName is not string");
699 phoneticLastName = toString(phoneticLastNameData);
700 result->setPhoneticLastName(phoneticLastName);
706 JSValueRef ContactConverter::toJSValueRef(const ContactOrganizationPtr &arg)
708 return WrtDeviceApis::CommonsJavaScript::JSUtils::makeObject(m_context, JSContactOrganization::getClassRef(), arg);
711 ContactOrganizationPtr ContactConverter::toContactOrganization(const JSValueRef &jsValue)
713 if(!JSContactOrganization::isObjectOfClass(m_context, jsValue))
715 LogError("Not a ContactOrganization object");
716 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Wrong attribute");
719 return JSContactOrganization::getContactOrganization(m_context, jsValue);
722 ContactOrganizationPtr ContactConverter::toContactOrganizationFromInit(const JSValueRef &jsValue)
724 // from ContactOrganizationInit to ContactOrganization
725 Validator validator(m_context);
726 if (validator.isNullOrUndefined(jsValue)) {
727 LogError("ContactOrganizationInit object is null");
728 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Wrong attribute");
731 if (!JSValueIsObject(m_context, jsValue) || JSIsArrayValue(m_context, jsValue)) {
732 LogError("ContactOrganizationInit object is not object");
733 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Wrong attribute");
736 // if (!validator.checkArrayKeys(m_allowedContactOrganizationInit, jsValue)) {
737 // LogError("invalid properties in ContactOrganizationInit object");
738 // ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Wrong attribute");
741 // NOTE: Currently not support office and logoURI fields
742 const ScopedJSStringRef nameStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_NAME));
743 const ScopedJSStringRef departmentStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_DEPARTMENT));
744 const ScopedJSStringRef titleStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_TITLE));
745 const ScopedJSStringRef roleStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_ROLE));
746 const ScopedJSStringRef logoURIStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_LOGO_URI));
748 JSObjectRef jsObject = toJSObjectRef(jsValue);
750 JSValueRef nameData = JSObjectGetProperty(m_context, jsObject, nameStr.get(), NULL);
751 JSValueRef departmentData = JSObjectGetProperty(m_context, jsObject, departmentStr.get(), NULL);
752 JSValueRef titleData = JSObjectGetProperty(m_context, jsObject, titleStr.get(), NULL);
753 JSValueRef roleData = JSObjectGetProperty(m_context, jsObject, roleStr.get(), NULL);
754 JSValueRef logoURIData = JSObjectGetProperty(m_context, jsObject, logoURIStr.get(), NULL);
757 std::string department;
762 ContactOrganizationPtr result(new ContactOrganization());
764 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Cannot create ContactOrganization object");
767 if (!validator.isNullOrUndefined(nameData)) {
768 if(!JSValueIsString(m_context, nameData))
769 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "name is not string");
770 name = toString(nameData);
771 result->setName(name);
774 if (!validator.isNullOrUndefined(departmentData)) {
775 if(!JSValueIsString(m_context, departmentData))
776 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "department is not string");
777 department = toString(departmentData);
778 result->setDepartment(department);
781 if (!validator.isNullOrUndefined(titleData)) {
782 if(!JSValueIsString(m_context, titleData))
783 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "title is not string");
784 title = toString(titleData);
785 result->setTitle(title);
788 if (!validator.isNullOrUndefined(roleData)) {
789 if(!JSValueIsString(m_context, roleData))
790 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "role is not string");
791 role = toString(roleData);
792 result->setRole(role);
795 if (!validator.isNullOrUndefined(logoURIData)) {
796 if(!JSValueIsString(m_context, logoURIData))
797 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "logoURI is not string");
798 logoURI = toString(logoURIData);
799 result->setLogoURI(logoURI);
805 JSValueRef ContactConverter::toJSValueRef(const ContactOrganizationArrayPtr &arg)
807 int size = arg->size();
809 JSObjectRef resultObject = JSCreateArrayObject(m_context, 0, NULL);
811 ThrowMsg(ConversionException, "Can not create array object.");
813 for(int i = 0; i < size; i++)
815 JSValueRef jsvalue = toJSValueRef(arg->at(i));
816 if (!JSSetArrayElement(m_context, resultObject, i, jsvalue))
817 ThrowMsg(ConversionException, "Can not add object to array.");
820 return static_cast<JSValueRef>(resultObject);
823 ContactOrganizationArrayPtr ContactConverter::toContactOrganizationArray(const JSValueRef &jsValue)
825 if(JSContactOrganizationArray::isObjectOfClass(m_context, jsValue))
826 return JSContactOrganizationArray::getContactOrganizationArray(m_context, jsValue);
828 ContactOrganizationArrayPtr result(new ContactOrganizationArray());
830 if(!JSIsArrayValue(m_context, jsValue))
831 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "ContactOrganizationArray is not array.");
833 JSObjectRef jsObject = toJSObjectRef(jsValue);
834 for (std::size_t i = 0; i < JSGetArrayLength(m_context, jsObject); ++i) {
835 JSValueRef element = JSGetArrayElement(m_context, jsObject, i);
836 result->push_back(toContactOrganization(element));
841 JSValueRef ContactConverter::toJSValueRef(const ContactWebSitePtr &arg)
843 return WrtDeviceApis::CommonsJavaScript::JSUtils::makeObject(m_context, JSContactWebSite::getClassRef(), arg);
846 ContactWebSitePtr ContactConverter::toContactWebSite(const JSValueRef &jsValue)
848 if(!JSContactWebSite::isObjectOfClass(m_context, jsValue))
850 LogError("Not a ContactWebSite object");
851 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Wrong attribute");
854 return JSContactWebSite::getContactWebSite(m_context, jsValue);
857 JSValueRef ContactConverter::toJSValueRef(const ContactWebSiteArrayPtr &arg)
859 int size = arg->size();
861 JSObjectRef resultObject = JSCreateArrayObject(m_context, 0, NULL);
863 ThrowMsg(ConversionException, "Can not create array object.");
865 for(int i = 0; i < size; i++)
867 JSValueRef jsvalue = toJSValueRef(arg->at(i));
868 if (!JSSetArrayElement(m_context, resultObject, i, jsvalue))
869 ThrowMsg(ConversionException, "Can not add object to array.");
872 return static_cast<JSValueRef>(resultObject);
875 ContactWebSiteArrayPtr ContactConverter::toContactWebSiteArray(const JSValueRef &jsValue)
877 if(JSContactWebSiteArray::isObjectOfClass(m_context, jsValue))
878 return JSContactWebSiteArray::getContactWebSiteArray(m_context, jsValue);
880 if(!JSIsArrayValue(m_context, jsValue))
881 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "ContactWebSiteArray is not array.");
883 ContactWebSiteArrayPtr result(new ContactWebSiteArray());
885 JSObjectRef jsObject = toJSObjectRef(jsValue);
886 for (std::size_t i = 0; i < JSGetArrayLength(m_context, jsObject); ++i) {
887 JSValueRef element = JSGetArrayElement(m_context, jsObject, i);
888 result->push_back(toContactWebSite(element));
893 JSValueRef ContactConverter::toJSValueRef(const ContactAnniversaryPtr &arg)
895 return WrtDeviceApis::CommonsJavaScript::JSUtils::makeObject(m_context, JSContactAnniversary::getClassRef(), arg);
898 ContactAnniversaryPtr ContactConverter::toContactAnniversary(const JSValueRef &jsValue)
900 if(!JSContactAnniversary::isObjectOfClass(m_context, jsValue))
902 LogError("Not a ContactAnniversary object");
903 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Wrong attribute");
906 return JSContactAnniversary::getContactAnniversary(m_context, jsValue);
909 JSValueRef ContactConverter::toJSValueRef(const ContactAnniversaryArrayPtr &arg)
911 int size = arg->size();
913 JSObjectRef resultObject = JSCreateArrayObject(m_context, 0, NULL);
915 ThrowMsg(ConversionException, "Can not create array object.");
917 for(int i = 0; i < size; i++)
919 JSValueRef jsvalue = toJSValueRef(arg->at(i));
920 if (!JSSetArrayElement(m_context, resultObject, i, jsvalue))
921 ThrowMsg(ConversionException, "Can not add object to array.");
924 return static_cast<JSValueRef>(resultObject);
927 ContactAnniversaryArrayPtr ContactConverter::toContactAnniversaryArray(const JSValueRef &jsValue)
929 if(JSContactAnniversaryArray::isObjectOfClass(m_context, jsValue))
930 return JSContactAnniversaryArray::getContactAnniversaryArray(m_context, jsValue);
932 if(!JSIsArrayValue(m_context, jsValue))
933 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "ContactAnniversaryArray is not array.");
935 ContactAnniversaryArrayPtr result(new ContactAnniversaryArray());
937 JSObjectRef jsObject = toJSObjectRef(jsValue);
938 for (std::size_t i = 0; i < JSGetArrayLength(m_context, jsObject); ++i) {
939 JSValueRef element = JSGetArrayElement(m_context, jsObject, i);
940 result->push_back(toContactAnniversary(element));
945 JSValueRef ContactConverter::toJSValueRef(const ContactAddressPtr &arg)
947 return WrtDeviceApis::CommonsJavaScript::JSUtils::makeObject(m_context, JSContactAddress::getClassRef(), arg);
950 ContactAddressPtr ContactConverter::toContactAddress(const JSValueRef &jsValue)
952 if(!JSContactAddress::isObjectOfClass(m_context, jsValue))
954 LogError("Not a ContactAddress object");
955 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Wrong attribute");
958 return JSContactAddress::getContactAddress(m_context, jsValue);
961 ContactAddressPtr ContactConverter::toContactAddressFromInit(const JSValueRef &jsValue)
963 // from ContactAddressInit to ContactAddress
964 Validator validator(m_context);
965 if (validator.isNullOrUndefined(jsValue)) {
966 LogError("ContactAddressInit object is null");
967 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Wrong attribute");
970 if (!JSValueIsObject(m_context, jsValue) || JSIsArrayValue(m_context, jsValue)) {
971 LogError("ContactAddressInit object is not object");
972 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Wrong attribute");
975 // if (!validator.checkArrayKeys(m_allowedContactAddressInit, jsValue)) {
976 // LogError("invalid properties in ContactAddressInit object");
977 // ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Wrong attribute");
980 const ScopedJSStringRef countryStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_COUNTRY));
981 const ScopedJSStringRef regionStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_REGION));
982 const ScopedJSStringRef cityStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_CITY));
983 const ScopedJSStringRef streetAddressStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_STREET_ADDRESS));
984 const ScopedJSStringRef additionalInformationStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_ADDITIONAL_INFORMATION));
985 const ScopedJSStringRef postalCodeStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_POSTAL_CODE));
986 const ScopedJSStringRef isDefaultStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_IS_DEFAULT));
987 const ScopedJSStringRef typesStr(JSStringCreateWithUTF8CString(CONTACT_ATTRIBUTE_TYPES));
989 JSObjectRef jsObject = toJSObjectRef(jsValue);
991 JSValueRef countryData = JSObjectGetProperty(m_context, jsObject, countryStr.get(), NULL);
992 JSValueRef regionData = JSObjectGetProperty(m_context, jsObject, regionStr.get(), NULL);
993 JSValueRef cityData = JSObjectGetProperty(m_context, jsObject, cityStr.get(), NULL);
994 JSValueRef streetAddressData = JSObjectGetProperty(m_context, jsObject, streetAddressStr.get(), NULL);
995 JSValueRef additionalInformationData = JSObjectGetProperty(m_context, jsObject, additionalInformationStr.get(), NULL);
996 JSValueRef postalCodeData = JSObjectGetProperty(m_context, jsObject, postalCodeStr.get(), NULL);
997 JSValueRef isDefaultData = JSObjectGetProperty(m_context, jsObject, isDefaultStr.get(), NULL);
998 JSValueRef typesData = JSObjectGetProperty(m_context, jsObject, typesStr.get(), NULL);
1000 std::string country;
1003 std::string streetAddress;
1004 std::string additionalInformation;
1005 std::string postalCode;
1007 ContactAddressTypeArrayPtr types;
1009 ContactAddressPtr result(new ContactAddress());
1011 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Cannot make ContactAddress");
1014 if (!validator.isNullOrUndefined(countryData)) {
1015 if(!JSValueIsString(m_context, countryData))
1016 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "country is not string");
1017 country = toString(countryData);
1018 result->setCountry(country);
1021 if (!validator.isNullOrUndefined(regionData)) {
1022 if(!JSValueIsString(m_context, regionData))
1023 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "region is not string");
1024 region = toString(regionData);
1025 result->setRegion(region);
1028 if (!validator.isNullOrUndefined(cityData)) {
1029 if(!JSValueIsString(m_context, cityData))
1030 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "city is not string");
1031 city = toString(cityData);
1032 result->setCity(city);
1035 if (!validator.isNullOrUndefined(streetAddressData)) {
1036 if(!JSValueIsString(m_context, streetAddressData))
1037 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "streetAddress is not string");
1038 streetAddress = toString(streetAddressData);
1039 result->setStreetAddress(streetAddress);
1042 if (!validator.isNullOrUndefined(additionalInformationData)) {
1043 if(!JSValueIsString(m_context, additionalInformationData))
1044 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "additionalInformation is not string");
1045 additionalInformation = toString(additionalInformationData);
1046 result->setAdditionalInformation(additionalInformation);
1049 if (!validator.isNullOrUndefined(postalCodeData)) {
1050 if(!JSValueIsString(m_context, postalCodeData))
1051 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "postalCode is not string");
1052 postalCode = toString(postalCodeData);
1053 result->setPostalCode(postalCode);
1056 if (!validator.isNullOrUndefined(isDefaultData)) {
1057 isDefault = toBool(isDefaultData);
1058 result->setIsDefault(isDefault);
1061 if (!validator.isNullOrUndefined(typesData)) {
1062 types = toContactAddressTypeArray(typesData);
1063 result->setTypes(types);
1069 JSValueRef ContactConverter::toJSValueRef(const ContactAddressArrayPtr &arg)
1071 int size = arg->size();
1073 JSObjectRef resultObject = JSCreateArrayObject(m_context, 0, NULL);
1075 ThrowMsg(ConversionException, "Can not create array object.");
1077 for(int i = 0; i < size; i++)
1079 JSValueRef jsvalue = toJSValueRef(arg->at(i));
1080 if (!JSSetArrayElement(m_context, resultObject, i, jsvalue))
1081 ThrowMsg(ConversionException, "Can not add object to array.");
1084 return static_cast<JSValueRef>(resultObject);
1087 ContactAddressArrayPtr ContactConverter::toContactAddressArray(const JSValueRef &jsValue)
1089 if(JSContactAddressArray::isObjectOfClass(m_context, jsValue))
1090 return JSContactAddressArray::getContactAddressArray(m_context, jsValue);
1092 if(!JSIsArrayValue(m_context, jsValue))
1093 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "ContactAddressArray is not array.");
1095 ContactAddressArrayPtr result(new ContactAddressArray());
1097 JSObjectRef jsObject = toJSObjectRef(jsValue);
1098 for (std::size_t i = 0; i < JSGetArrayLength(m_context, jsObject); ++i) {
1099 JSValueRef element = JSGetArrayElement(m_context, jsObject, i);
1100 result->push_back(toContactAddress(element));
1105 JSValueRef ContactConverter::toJSValueRef(const ContactPhoneNumberPtr &arg)
1107 return WrtDeviceApis::CommonsJavaScript::JSUtils::makeObject(m_context, JSContactPhoneNumber::getClassRef(), arg);
1110 ContactPhoneNumberPtr ContactConverter::toContactPhoneNumber(const JSValueRef &jsValue)
1112 if(!JSContactPhoneNumber::isObjectOfClass(m_context, jsValue))
1114 LogError("Not a ContactPhoneNumber object");
1115 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Wrong attribute");
1118 return JSContactPhoneNumber::getContactPhoneNumber(m_context, jsValue);
1121 JSValueRef ContactConverter::toJSValueRef(const ContactPhoneNumberArrayPtr &arg)
1123 int size = arg->size();
1125 JSObjectRef resultObject = JSCreateArrayObject(m_context, 0, NULL);
1127 ThrowMsg(ConversionException, "Can not create array object.");
1129 for(int i = 0; i < size; i++)
1131 JSValueRef jsvalue = toJSValueRef(arg->at(i));
1132 if (!JSSetArrayElement(m_context, resultObject, i, jsvalue))
1133 ThrowMsg(ConversionException, "Can not add object to array.");
1136 return static_cast<JSValueRef>(resultObject);
1139 ContactPhoneNumberArrayPtr ContactConverter::toContactPhoneNumberArray(const JSValueRef &jsValue)
1141 if(JSContactPhoneNumberArray::isObjectOfClass(m_context, jsValue))
1142 return JSContactPhoneNumberArray::getContactPhoneNumberArray(m_context, jsValue);
1144 if(!JSIsArrayValue(m_context, jsValue))
1145 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "ContactPhoneNumberArray is not array.");
1147 ContactPhoneNumberArrayPtr result(new ContactPhoneNumberArray());
1149 JSObjectRef jsObject = toJSObjectRef(jsValue);
1150 for (std::size_t i = 0; i < JSGetArrayLength(m_context, jsObject); ++i) {
1151 JSValueRef element = JSGetArrayElement(m_context, jsObject, i);
1152 result->push_back(toContactPhoneNumber(element));
1157 JSValueRef ContactConverter::toJSValueRef(const ContactEmailAddressPtr &arg)
1159 return WrtDeviceApis::CommonsJavaScript::JSUtils::makeObject(m_context, JSContactEmailAddress::getClassRef(), arg);
1162 ContactEmailAddressPtr ContactConverter::toContactEmailAddress(const JSValueRef &jsValue)
1164 if(!JSContactEmailAddress::isObjectOfClass(m_context, jsValue))
1166 LogError("Not a ContactEmailAddress object");
1167 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Wrong attribute");
1170 return JSContactEmailAddress::getContactEmailAddress(m_context, jsValue);
1173 JSValueRef ContactConverter::toJSValueRef(const ContactEmailAddressArrayPtr &arg)
1175 int size = arg->size();
1177 JSObjectRef resultObject = JSCreateArrayObject(m_context, 0, NULL);
1179 ThrowMsg(ConversionException, "Can not create array object.");
1181 for(int i = 0; i < size; i++)
1183 JSValueRef jsvalue = toJSValueRef(arg->at(i));
1184 if (!JSSetArrayElement(m_context, resultObject, i, jsvalue))
1185 ThrowMsg(ConversionException, "Can not add object to array.");
1188 return static_cast<JSValueRef>(resultObject);
1191 ContactEmailAddressArrayPtr ContactConverter::toContactEmailAddressArray(const JSValueRef &jsValue)
1193 if(JSContactEmailAddressArray::isObjectOfClass(m_context, jsValue))
1194 return JSContactEmailAddressArray::getContactEmailAddressArray(m_context, jsValue);
1196 if(!JSIsArrayValue(m_context, jsValue))
1197 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "ContactEmailAddressArray is not array.");
1199 ContactEmailAddressArrayPtr result(new ContactEmailAddressArray());
1201 JSObjectRef jsObject = toJSObjectRef(jsValue);
1202 for (std::size_t i = 0; i < JSGetArrayLength(m_context, jsObject); ++i) {
1203 JSValueRef element = JSGetArrayElement(m_context, jsObject, i);
1204 result->push_back(toContactEmailAddress(element));
1209 ContactWebSiteType ContactConverter::toContactWebSiteType(const std::string &arg)
1211 std::string argUpper;
1212 std::transform(arg.begin(), arg.end(), std::back_inserter(argUpper), ::toupper);
1214 if (argUpper == STR_WEBSITE_TYPE_HOMEPAGE) {
1215 return WEBSITE_TYPE_HOMEPAGE;
1216 } else if (argUpper == STR_WEBSITE_TYPE_BLOG) {
1217 return WEBSITE_TYPE_BLOG;
1220 //ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Invalid ContactWebSiteType : " << arg);
1221 return WEBSITE_TYPE_NULL;
1224 std::string ContactConverter::toContactWebSiteTypeStr(ContactWebSiteType arg)
1226 if (arg == WEBSITE_TYPE_HOMEPAGE) {
1227 return STR_WEBSITE_TYPE_HOMEPAGE;
1228 } else if (arg == WEBSITE_TYPE_BLOG) {
1229 return STR_WEBSITE_TYPE_BLOG;
1232 //ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Invalid ContactWebSiteType : " << arg);
1233 return STR_CONTACT_EMPTY_STRING;
1236 ContactWebSiteType ContactConverter::toContactWebSiteType(const JSValueRef &value)
1238 if(!JSValueIsString(m_context, value))
1239 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "ContactWebSiteType is not string.");
1241 return toContactWebSiteType(toString(value));
1244 JSValueRef ContactConverter::toJSValueRef(ContactWebSiteType arg)
1246 return toJSValueRef(toContactWebSiteTypeStr(arg));
1249 ContactAddressType ContactConverter::toContactAddressType(const std::string &arg)
1251 std::string argUpper;
1252 std::transform(arg.begin(), arg.end(), std::back_inserter(argUpper), ::toupper);
1254 if (argUpper == STR_CONTACT_ADDRESS_TYPE_WORK) {
1255 return CONTACT_ADDRESS_TYPE_WORK;
1256 } else if (argUpper == STR_CONTACT_ADDRESS_TYPE_PREF) {
1257 return CONTACT_ADDRESS_TYPE_PREF;
1258 } else if (argUpper == STR_CONTACT_ADDRESS_TYPE_HOME) {
1259 return CONTACT_ADDRESS_TYPE_HOME;
1262 //ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Invalid ContactAddressType : " << arg);
1263 return CONTACT_ADDRESS_TYPE_NULL;
1265 std::string ContactConverter::toContactAddressTypeStr(ContactAddressType arg)
1267 if (arg == CONTACT_ADDRESS_TYPE_WORK) {
1268 return STR_CONTACT_ADDRESS_TYPE_WORK;
1269 } else if (arg == CONTACT_ADDRESS_TYPE_PREF) {
1270 return STR_CONTACT_ADDRESS_TYPE_PREF;
1271 } else if (arg == CONTACT_ADDRESS_TYPE_HOME) {
1272 return STR_CONTACT_ADDRESS_TYPE_HOME;
1275 //ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Invalid ContactAddressType : " << arg);
1276 return STR_CONTACT_EMPTY_STRING;
1279 ContactAddressType ContactConverter::toContactAddressType(const JSValueRef &value)
1281 if(!JSValueIsString(m_context, value))
1282 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "ContactAddressType is not string.");
1284 return toContactAddressType(toString(value));
1287 JSValueRef ContactConverter::toJSValueRef(ContactAddressType arg)
1289 return toJSValueRef(toContactAddressTypeStr(arg));
1292 JSValueRef ContactConverter::toJSValueRef(const ContactAddressTypeArrayPtr &arg)
1294 int size = arg->size();
1296 JSObjectRef resultObject = JSCreateArrayObject(m_context, 0, NULL);
1298 ThrowMsg(ConversionException, "Can not create array object.");
1300 for(int i = 0; i < size; i++)
1302 JSValueRef jsvalue = toJSValueRef(arg->at(i));
1303 if (!JSSetArrayElement(m_context, resultObject, i, jsvalue))
1304 ThrowMsg(ConversionException, "Can not add object to array.");
1307 return static_cast<JSValueRef>(resultObject);
1310 ContactAddressTypeArrayPtr ContactConverter::toContactAddressTypeArray(const JSValueRef &jsValue)
1312 if(JSContactAddressTypeArray::isObjectOfClass(m_context, jsValue))
1313 return JSContactAddressTypeArray::getContactAddressTypeArray(m_context, jsValue);
1315 if(!JSIsArrayValue(m_context, jsValue))
1316 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "ContactAddressTypeArray is not array.");
1318 ContactAddressTypeArrayPtr result(new ContactAddressTypeArray());
1320 JSObjectRef jsObject = toJSObjectRef(jsValue);
1321 for (std::size_t i = 0; i < JSGetArrayLength(m_context, jsObject); ++i) {
1322 JSValueRef element = JSGetArrayElement(m_context, jsObject, i);
1323 result->push_back(toContactAddressType(element));
1328 ContactPhoneNumberType ContactConverter::toContactPhoneNumberType(const std::string &arg)
1330 std::string argUpper;
1331 std::transform(arg.begin(), arg.end(), std::back_inserter(argUpper), ::toupper);
1333 if (argUpper == STR_CONTACT_PHONE_NUMBER_TYPE_WORK) {
1334 return CONTACT_PHONE_NUMBER_TYPE_WORK;
1335 } else if (argUpper == STR_CONTACT_PHONE_NUMBER_TYPE_PREF) {
1336 return CONTACT_PHONE_NUMBER_TYPE_PREF;
1337 } else if (argUpper == STR_CONTACT_PHONE_NUMBER_TYPE_HOME) {
1338 return CONTACT_PHONE_NUMBER_TYPE_HOME;
1339 } else if (argUpper == STR_CONTACT_PHONE_NUMBER_TYPE_VOICE) {
1340 return CONTACT_PHONE_NUMBER_TYPE_VOICE;
1341 } else if (argUpper == STR_CONTACT_PHONE_NUMBER_TYPE_FAX) {
1342 return CONTACT_PHONE_NUMBER_TYPE_FAX;
1343 } else if (argUpper == STR_CONTACT_PHONE_NUMBER_TYPE_MSG) {
1344 return CONTACT_PHONE_NUMBER_TYPE_MSG;
1345 } else if (argUpper == STR_CONTACT_PHONE_NUMBER_TYPE_CELL) {
1346 return CONTACT_PHONE_NUMBER_TYPE_CELL;
1347 } else if (argUpper == STR_CONTACT_PHONE_NUMBER_TYPE_PAGER) {
1348 return CONTACT_PHONE_NUMBER_TYPE_PAGER;
1349 } else if (argUpper == STR_CONTACT_PHONE_NUMBER_TYPE_BBS) {
1350 return CONTACT_PHONE_NUMBER_TYPE_BBS;
1351 } else if (argUpper == STR_CONTACT_PHONE_NUMBER_TYPE_MODEM) {
1352 return CONTACT_PHONE_NUMBER_TYPE_MODEM;
1353 } else if (argUpper == STR_CONTACT_PHONE_NUMBER_TYPE_CAR) {
1354 return CONTACT_PHONE_NUMBER_TYPE_CAR;
1355 } else if (argUpper == STR_CONTACT_PHONE_NUMBER_TYPE_ISDN) {
1356 return CONTACT_PHONE_NUMBER_TYPE_ISDN;
1357 } else if (argUpper == STR_CONTACT_PHONE_NUMBER_TYPE_VIDEO) {
1358 return CONTACT_PHONE_NUMBER_TYPE_VIDEO;
1359 } else if (argUpper == STR_CONTACT_PHONE_NUMBER_TYPE_PCS) {
1360 return CONTACT_PHONE_NUMBER_TYPE_PCS;
1363 //ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Invalid ContactPhoneNumverType : " << arg);
1364 return CONTACT_PHONE_NUMBER_TYPE_NULL;
1367 std::string ContactConverter::toContactPhoneNumberTypeStr(ContactPhoneNumberType arg)
1369 if (arg == CONTACT_PHONE_NUMBER_TYPE_WORK) {
1370 return STR_CONTACT_PHONE_NUMBER_TYPE_WORK;
1371 } else if (arg == CONTACT_PHONE_NUMBER_TYPE_PREF) {
1372 return STR_CONTACT_PHONE_NUMBER_TYPE_PREF;
1373 } else if (arg == CONTACT_PHONE_NUMBER_TYPE_HOME) {
1374 return STR_CONTACT_PHONE_NUMBER_TYPE_HOME;
1375 } else if (arg == CONTACT_PHONE_NUMBER_TYPE_VOICE) {
1376 return STR_CONTACT_PHONE_NUMBER_TYPE_VOICE;
1377 } else if (arg == CONTACT_PHONE_NUMBER_TYPE_FAX) {
1378 return STR_CONTACT_PHONE_NUMBER_TYPE_FAX;
1379 } else if (arg == CONTACT_PHONE_NUMBER_TYPE_MSG) {
1380 return STR_CONTACT_PHONE_NUMBER_TYPE_MSG;
1381 } else if (arg == CONTACT_PHONE_NUMBER_TYPE_CELL) {
1382 return STR_CONTACT_PHONE_NUMBER_TYPE_CELL;
1383 } else if (arg == CONTACT_PHONE_NUMBER_TYPE_PAGER) {
1384 return STR_CONTACT_PHONE_NUMBER_TYPE_PAGER;
1385 } else if (arg == CONTACT_PHONE_NUMBER_TYPE_BBS) {
1386 return STR_CONTACT_PHONE_NUMBER_TYPE_BBS;
1387 } else if (arg == CONTACT_PHONE_NUMBER_TYPE_MODEM) {
1388 return STR_CONTACT_PHONE_NUMBER_TYPE_MODEM;
1389 } else if (arg == CONTACT_PHONE_NUMBER_TYPE_CAR) {
1390 return STR_CONTACT_PHONE_NUMBER_TYPE_CAR;
1391 } else if (arg == CONTACT_PHONE_NUMBER_TYPE_ISDN) {
1392 return STR_CONTACT_PHONE_NUMBER_TYPE_ISDN;
1393 } else if (arg == CONTACT_PHONE_NUMBER_TYPE_VIDEO) {
1394 return STR_CONTACT_PHONE_NUMBER_TYPE_VIDEO;
1395 } else if (arg == CONTACT_PHONE_NUMBER_TYPE_PCS) {
1396 return STR_CONTACT_PHONE_NUMBER_TYPE_PCS;
1399 //ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Invalid ContactPhoneNumberType : " << arg);
1400 return STR_CONTACT_EMPTY_STRING;
1403 ContactPhoneNumberType ContactConverter::toContactPhoneNumberType(const JSValueRef &value)
1405 if(!JSValueIsString(m_context, value))
1406 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "ContactPhoneNumberType is not string.");
1408 return toContactPhoneNumberType(toString(value));
1411 JSValueRef ContactConverter::toJSValueRef(ContactPhoneNumberType arg)
1413 return toJSValueRef(toContactPhoneNumberTypeStr(arg));
1416 JSValueRef ContactConverter::toJSValueRef(const ContactPhoneNumberTypeArrayPtr &arg)
1418 int size = arg->size();
1420 JSObjectRef resultObject = JSCreateArrayObject(m_context, 0, NULL);
1422 ThrowMsg(ConversionException, "Can not create array object.");
1424 for(int i = 0; i < size; i++)
1426 JSValueRef jsvalue = toJSValueRef(arg->at(i));
1427 if (!JSSetArrayElement(m_context, resultObject, i, jsvalue))
1428 ThrowMsg(ConversionException, "Can not add object to array.");
1431 return static_cast<JSValueRef>(resultObject);
1434 ContactPhoneNumberTypeArrayPtr ContactConverter::toContactPhoneNumberTypeArray(const JSValueRef &jsValue)
1436 if(JSContactPhoneNumberTypeArray::isObjectOfClass(m_context, jsValue))
1437 return JSContactPhoneNumberTypeArray::getContactPhoneNumberTypeArray(m_context, jsValue);
1439 if(!JSIsArrayValue(m_context, jsValue))
1440 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "ContactEmailAddressTypeArray is not array.");
1442 ContactPhoneNumberTypeArrayPtr result(new ContactPhoneNumberTypeArray());
1444 JSObjectRef jsObject = toJSObjectRef(jsValue);
1445 for (std::size_t i = 0; i < JSGetArrayLength(m_context, jsObject); ++i) {
1446 JSValueRef element = JSGetArrayElement(m_context, jsObject, i);
1448 result->push_back(toContactPhoneNumberType(element));
1449 } Catch (Exception) {
1456 ContactEmailAddressType ContactConverter::toContactEmailAddressType(const std::string &arg)
1458 std::string argUpper;
1459 std::transform(arg.begin(), arg.end(), std::back_inserter(argUpper), ::toupper);
1461 if (argUpper == STR_CONTACT_EMAIL_TYPE_WORK) {
1462 return CONTACT_EMAIL_TYPE_WORK;
1463 } else if (argUpper == STR_CONTACT_EMAIL_TYPE_PREF) {
1464 return CONTACT_EMAIL_TYPE_PREF;
1465 } else if (argUpper == STR_CONTACT_EMAIL_TYPE_HOME) {
1466 return CONTACT_EMAIL_TYPE_HOME;
1469 //ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Invalid ContactEmailAddressType : " << arg);
1470 return CONTACT_EMAIL_TYPE_NULL;
1473 std::string ContactConverter::toContactEmailAddressTypeStr(ContactEmailAddressType arg)
1475 if (arg == CONTACT_EMAIL_TYPE_WORK) {
1476 return STR_CONTACT_EMAIL_TYPE_WORK;
1477 } else if (arg == CONTACT_EMAIL_TYPE_PREF) {
1478 return STR_CONTACT_EMAIL_TYPE_PREF;
1479 } else if (arg == CONTACT_EMAIL_TYPE_HOME) {
1480 return STR_CONTACT_EMAIL_TYPE_HOME;
1483 //ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Invalid ContactEmailAddressType : " << arg);
1484 return STR_CONTACT_EMPTY_STRING;
1487 ContactEmailAddressType ContactConverter::toContactEmailAddressType(const JSValueRef &value)
1489 if(!JSValueIsString(m_context, value))
1490 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "ContactEmailAddressType is not string.");
1492 return toContactEmailAddressType(toString(value));
1495 JSValueRef ContactConverter::toJSValueRef(ContactEmailAddressType arg)
1497 return toJSValueRef(toContactEmailAddressTypeStr(arg));
1500 JSValueRef ContactConverter::toJSValueRef(const ContactEmailAddressTypeArrayPtr &arg)
1502 int size = arg->size();
1504 JSObjectRef resultObject = JSCreateArrayObject(m_context, 0, NULL);
1506 ThrowMsg(ConversionException, "Can not create array object.");
1508 for(int i = 0; i < size; i++)
1510 JSValueRef jsvalue = toJSValueRef(arg->at(i));
1511 if (!JSSetArrayElement(m_context, resultObject, i, jsvalue))
1512 ThrowMsg(ConversionException, "Can not add object to array.");
1515 return static_cast<JSValueRef>(resultObject);
1518 ContactEmailAddressTypeArrayPtr ContactConverter::toContactEmailAddressTypeArray(const JSValueRef &jsValue)
1520 if(JSContactEmailAddressTypeArray::isObjectOfClass(m_context, jsValue))
1521 return JSContactEmailAddressTypeArray::getContactEmailAddressTypeArray(m_context, jsValue);
1523 if(!JSIsArrayValue(m_context, jsValue))
1524 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "ContactEmailAddressTypeArray is not array.");
1526 ContactEmailAddressTypeArrayPtr result(new ContactEmailAddressTypeArray());
1528 JSObjectRef jsObject = toJSObjectRef(jsValue);
1529 for (std::size_t i = 0; i < JSGetArrayLength(m_context, jsObject); ++i) {
1530 JSValueRef element = JSGetArrayElement(m_context, jsObject, i);
1532 result->push_back(toContactEmailAddressType(element));
1533 } Catch (Exception) {
1540 StringArrayPtr ContactConverter::toStringArray(const JSValueRef &jsValue)
1542 if(JSStringArray::isObjectOfClass(m_context, jsValue))
1543 return JSStringArray::getStringArray(m_context, jsValue);
1545 if(!JSIsArrayValue(m_context, jsValue))
1546 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "StringArray is not array.");
1548 StringArrayPtr result = StringArrayPtr(new StringArray());
1549 JSObjectRef jsObject = toJSObjectRef(jsValue);
1550 for (std::size_t i = 0; i < JSGetArrayLength(m_context, jsObject); ++i) {
1551 JSValueRef element = JSGetArrayElement(m_context, jsObject, i);
1552 result->push_back(toString(element));
1557 JSValueRef ContactConverter::toJSValueRef(const StringArrayPtr &arg)
1559 int size = arg->size();
1561 JSObjectRef resultObject = JSCreateArrayObject(m_context, 0, NULL);
1563 ThrowMsg(ConversionException, "Can not create array object.");
1565 for(int i = 0; i < size; i++)
1567 JSValueRef jsvalue = toJSValueRef(arg->at(i));
1568 if (!JSSetArrayElement(m_context, resultObject, i, jsvalue))
1569 ThrowMsg(ConversionException, "Can not add object to array.");
1572 return static_cast<JSValueRef>(resultObject);
1575 //std::string ContactConverter::toAttributesOfInterest(const JSValueRef &value)
1577 // // need validator
1578 // return toString(value);
1581 //JSValueRef ContactConverter::toJSValueRefAttributesOfInterestArray(const AttributesOfInterestArrayPtr &arg)
1583 // return WrtDeviceApis::CommonsJavaScript::JSUtils::makeObject(m_context, JSAttributesOfInterestArray::getClassRef(), arg);
1586 //AttributesOfInterestArrayPtr ContactConverter::toAttributesOfInterestArray(const JSValueRef &jsValue)
1588 // if(JSAttributesOfInterestArray::isObjectOfClass(m_context, jsValue))
1589 // return JSAttributesOfInterestArray::getAttributesOfInterestArray(m_context, jsValue);
1591 // if(!JSIsArrayValue(m_context, jsValue))
1592 // ThrowMsg(WrtDeviceApis::Commons::ConversionException, "AttributesOfInterestArray is not array.");
1594 // AttributesOfInterestArrayPtr result(new AttributesOfInterestArray());
1596 // JSObjectRef jsObject = toJSObjectRef(jsValue);
1597 // for (std::size_t i = 0; i < JSGetArrayLength(m_context, jsObject); ++i) {
1598 // JSValueRef element = JSGetArrayElement(m_context, jsObject, i);
1599 // result->push_back(toAttributesOfInterest(element));
1604 bool ContactConverter::initializeAllowedProperties()
1606 m_allowedContactInit.push_back(CONTACT_ATTRIBUTE_NAME);
1607 m_allowedContactInit.push_back(CONTACT_ATTRIBUTE_ACCOUNT_ID);
1608 m_allowedContactInit.push_back(CONTACT_ATTRIBUTE_ADDRESSES);
1609 m_allowedContactInit.push_back(CONTACT_ATTRIBUTE_PHOTO_URI );
1610 m_allowedContactInit.push_back(CONTACT_ATTRIBUTE_PHONE_NUMBERS);
1611 m_allowedContactInit.push_back(CONTACT_ATTRIBUTE_EMAILS);
1612 m_allowedContactInit.push_back(CONTACT_ATTRIBUTE_BIRTHDAY);
1613 m_allowedContactInit.push_back(CONTACT_ATTRIBUTE_ANNIVERSARIES);
1614 m_allowedContactInit.push_back(CONTACT_ATTRIBUTE_ORGANIZATIONS);
1615 m_allowedContactInit.push_back(CONTACT_ATTRIBUTE_NOTES);
1616 m_allowedContactInit.push_back(CONTACT_ATTRIBUTE_URLS);
1617 m_allowedContactInit.push_back(CONTACT_ATTRIBUTE_RINGTONE_URI);
1618 m_allowedContactInit.push_back(CONTACT_ATTRIBUTE_GROUP_IDS);
1620 m_allowedContactNameInit.push_back(CONTACT_ATTRIBUTE_PREFIX);
1621 m_allowedContactNameInit.push_back(CONTACT_ATTRIBUTE_FIRST_NAME);
1622 m_allowedContactNameInit.push_back(CONTACT_ATTRIBUTE_MIDDLE_NAME);
1623 m_allowedContactNameInit.push_back(CONTACT_ATTRIBUTE_LAST_NAME);
1624 m_allowedContactNameInit.push_back(CONTACT_ATTRIBUTE_NICKNAMES);
1625 m_allowedContactNameInit.push_back(CONTACT_ATTRIBUTE_PHONETIC_FIRST_NAME);
1626 m_allowedContactNameInit.push_back(CONTACT_ATTRIBUTE_PHONETIC_LAST_NAME);
1627 m_allowedContactNameInit.push_back(CONTACT_ATTRIBUTE_DISPLAY_NAME);
1629 m_allowedContactOrganizationInit.push_back(CONTACT_ATTRIBUTE_NAME);
1630 m_allowedContactOrganizationInit.push_back(CONTACT_ATTRIBUTE_DEPARTMENT);
1631 m_allowedContactOrganizationInit.push_back(CONTACT_ATTRIBUTE_OFFICE);
1632 m_allowedContactOrganizationInit.push_back(CONTACT_ATTRIBUTE_TITLE);
1633 m_allowedContactOrganizationInit.push_back(CONTACT_ATTRIBUTE_ROLE);
1634 m_allowedContactOrganizationInit.push_back(CONTACT_ATTRIBUTE_LOGO_URI);
1636 m_allowedContactAddressInit.push_back(CONTACT_ATTRIBUTE_COUNTRY);
1637 m_allowedContactAddressInit.push_back(CONTACT_ATTRIBUTE_REGION);
1638 m_allowedContactAddressInit.push_back(CONTACT_ATTRIBUTE_CITY);
1639 m_allowedContactAddressInit.push_back(CONTACT_ATTRIBUTE_STREET_ADDRESS);
1640 m_allowedContactAddressInit.push_back(CONTACT_ATTRIBUTE_ADDITIONAL_INFORMATION);
1641 m_allowedContactAddressInit.push_back(CONTACT_ATTRIBUTE_POSTAL_CODE);
1642 m_allowedContactAddressInit.push_back(CONTACT_ATTRIBUTE_TYPES);