/* * Copyright (C) 2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef OHOS_VCARD_CONSRACT_H #define OHOS_VCARD_CONSRACT_H #include #include #include #include #include "vcard_anniversary_data.h" #include "vcard_birthday_data.h" #include "vcard_constant.h" #include "vcard_contact_data.h" #include "vcard_email_data.h" #include "vcard_event_data.h" #include "vcard_im_data.h" #include "vcard_name_data.h" #include "vcard_nickname_data.h" #include "vcard_note_data.h" #include "vcard_organization_data.h" #include "vcard_phone_data.h" #include "vcard_photo_data.h" #include "vcard_postal_data.h" #include "vcard_raw_data.h" #include "vcard_rdb_helper.h" #include "vcard_relation_data.h" #include "vcard_sip_data.h" #include "vcard_website_data.h" namespace OHOS { namespace Telephony { class VCardContact { public: VCardContact() { vCardType_ = VERSION_21; nameData_ = std::make_shared(); birthday_ = std::make_shared(); anniversary_ = std::make_shared(); }; ~VCardContact() {} void AddRawData(std::shared_ptr rawData, int32_t &errorCode); int32_t BuildContactData(int32_t rawId, std::vector &contactDataValues); int32_t BuildContact(std::shared_ptr resultSet); void Init(); std::shared_ptr GetNameData(); std::vector> GetNames(); std::vector> GetRelations(); std::vector> GetIms(); std::vector> GetSips(); std::vector> GetPhones(); std::vector> GetOrganizations(); std::vector> GetWebsites(); std::vector> GetPhotos(); std::vector> GetEmails(); std::vector> GetNicknames(); std::vector> GetPostalDatas(); std::vector> GetEventDatas(); std::vector> GetNotes(); std::shared_ptr GetBirthdays(); private: void BuildValuesBucket(int32_t rawId, std::vector &contactDataValues, std::shared_ptr contactData); template void BuildValuesBuckets(int32_t rawId, std::vector &contactDataValues, std::vector> &contactDatas); template void BuildData( std::shared_ptr resultSet, std::vector> &contactDatas); int32_t BuildOneData(std::shared_ptr resultSet); int32_t BuildOtherData(int32_t typeId, std::shared_ptr resultSet); void AddDatas(std::string name, std::string rawValue, std::string byte, std::vector values, std::string propValue, std::vector groups, std::map> parasMap); void HandleName(std::vector values, std::map> parasMap); void HandleSortAsName(std::map> parasMap); void HandleNickName(std::string nickName); void HandlePhoneticNameFromSound(std::vector elems); void AddPostal(int32_t type, std::vector propValueList, std::string label, bool isPrimary); void AddEmail(int32_t type, std::string data, std::string label, std::string displayname, bool isPrimary); void HandleOrgValue(int32_t type, std::vector orgList, std::map> paramMap, bool isPrimary); std::string BuildSinglePhoneticNameFromSortAsParam(std::map> paramMap); void AddNewOrganization(std::string organizationName, std::string departmentName, std::string company, std::string titleName, std::string phoneticName, int32_t type, bool isPrimary); void HandleTitleValue(std::string title); void AddPhotoBytes(std::string formatName, std::string photoBytes, bool isPrimary); void HandleSipCase(std::string propValue, std::vector typeCollection); void AddPhone(int32_t type, std::string data, std::string label, bool isPrimary); void AddSip(std::string sipData, int32_t type, std::string label, bool isPrimary); void AddNote(const std::string note); void AddIms(std::string name, std::string rawValue, std::string propValue, std::vector values, std::map> parasMap); void AddNameData(std::string name, std::string rawValue, std::vector values, std::map> parasMap, std::string propValue); void AddCustom( std::string rawValue, std::map> parasMap, std::string propValue); void SetSip(std::string rawValue, std::map> parasMap, std::string propValue); void AddSipData( std::string rawValue, std::map> parasMap, std::string propValue); void AddPhonesData(std::string rawValue, std::string propValue, std::vector values, std::map> parasMap); void AddOrganizationsData(std::string rawValue, std::string propValue, std::vector values, std::map> parasMap); void AddEmailsData(std::string rawValue, std::string propValue, std::vector values, std::map> parasMap); void AddPostalDatas(std::string rawValue, std::string propValue, std::vector values, std::map> parasMap); void AddSoundDatas(std::string rawValue, std::string propValue, std::vector values, std::map> parasMap); void AddPhotoDatas(std::string byte, std::string rawValue, std::string propValue, std::vector values, std::map> parasMap); void AddSkypePstnNumDatas(std::string propValue, std::map> parasMap); void AddWebSiteDatas(std::string rawValue, std::string propValue, std::vector values, std::map> parasMap); void AddBirthdayDatas(std::string rawValue); void AddAnniversaryDatas(std::string propValue); void AddImppDatas(std::string propValue, std::map> parasMap); void HandlePhoneCase(std::string phoneNumber, std::string rawValue, std::string propValue, std::vector values, std::map> parasMap); void AddOtherDatas(std::string name, std::string rawValue, std::string byte, std::vector values, std::string propValue, std::vector groups, std::map> parasMap); std::vector GetValueListFromParasMap( std::string rawValue, std::string propValue, std::map> parasMap); void CheckNameExist(); std::string ConvertHarmonyEvents(std::string type, std::string value); private: const int32_t SORT_NAME_MAX_VALUE_SIZE = 3; const int32_t N_MAX_VALUE_SIZE = 5; const int32_t N_SUFFIX_VALUE_INDEX = 4; const int32_t N_PREFIX_VALUE_INDEX = 3; const int32_t N_MIDDLE_VALUE_INDEX = 2; const int32_t N_GIVEN_VALUE_INDEX = 1; const int32_t N_FAMILY_VALUE_INDEX = 0; const int32_t PHONETIC_FAMILY_VALUE_INDEX = 0; const int32_t PHONETIC_GIVEN_VALUE_INDEX = 1; const int32_t PHONETIC_MIDDLE_VALUE_INDEX = 2; const int32_t PHONE_NAME_SOUND_MAX_VALUE_SIZE = 3; std::string vCardType_; std::shared_ptr nameData_; std::shared_ptr birthday_; std::shared_ptr anniversary_; std::vector> names_; std::vector> phones_; std::vector> relations_; std::vector> emails_; std::vector> postals_; std::vector> organizations_; std::vector> ims_; std::vector> photos_; std::vector> websites_; std::vector> sips_; std::vector> nicknames_; std::vector> notes_; std::vector> events_; }; } // namespace Telephony } // namespace OHOS #endif // OHOS_OHOS_VCARD_CONSRACT_H