• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #include "vcard_rdb_helper.h"
16 
17 #include "telephony_errors.h"
18 #include "telephony_log_wrapper.h"
19 
20 namespace OHOS {
21 namespace Telephony {
22 
23 namespace {
24 OHOS::Uri uriRawContact("datashare:///com.ohos.contactsdataability/contacts/raw_contact");
25 OHOS::Uri uriContactData("datashare:///com.ohos.contactsdataability/contacts/contact_data");
26 OHOS::Uri uriAccount("datashare:///com.ohos.contactsdataability/contacts/account");
27 OHOS::Uri uriContact("datashare:///com.ohos.contactsdataability/contacts/contact");
28 OHOS::Uri uriRawContactMaxId("datashare:///com.ohos.contactsdataability/raw_contact/get_inc_id");
29 
30 } // namespace
31 
32 std::shared_ptr<DataShare::DataShareHelper> VCardRdbHelper::dataShareHelper_ = nullptr;
33 
VCardRdbHelper()34 VCardRdbHelper::VCardRdbHelper() {}
35 
GetInstance()36 VCardRdbHelper &VCardRdbHelper::GetInstance()
37 {
38     static VCardRdbHelper instance;
39     return instance;
40 }
41 
QueryRawContactMaxId()42 int32_t VCardRdbHelper::QueryRawContactMaxId()
43 {
44     if (dataShareHelper_ == nullptr) {
45         TELEPHONY_LOGE("dataShareHelper is nullptr");
46         return DB_FAILD;
47     }
48     Uri uriRawContactMaxIdQuery(uriRawContactMaxId.ToString() + "?isFromBatch=true");
49     std::vector<std::string> columns;
50     DataShare::DataSharePredicates predicates;
51     std::shared_ptr<DataShare::DataShareResultSet> resultSet =
52         dataShareHelper_->Query(uriRawContactMaxIdQuery, predicates, columns);
53     if (resultSet == nullptr) {
54         TELEPHONY_LOGE("resultSet is nullptr");
55         return DB_FAILD;
56     }
57     int rawMaxId = 0;
58     if (resultSet->GoToFirstRow() == TELEPHONY_ERR_SUCCESS) {
59         int curValueIndex;
60         resultSet->GetColumnIndex("seq", curValueIndex);
61         resultSet->GetInt(curValueIndex, rawMaxId);
62     }
63     TELEPHONY_LOGI("batchInsert rawId: %{public}d", rawMaxId);
64     return rawMaxId;
65 }
66 
BatchInsertRawContact(const std::vector<DataShare::DataShareValuesBucket> & rawContactValues)67 int32_t VCardRdbHelper::BatchInsertRawContact(const std::vector<DataShare::DataShareValuesBucket> &rawContactValues)
68 {
69     if (dataShareHelper_ == nullptr) {
70         TELEPHONY_LOGE("dataShareHelper_ is nullptr");
71         return DB_FAILD;
72     }
73     Uri uriRawContactBatch(uriRawContact.ToString() + "?isFromBatch=true");
74     int code = dataShareHelper_->BatchInsert(uriRawContactBatch, rawContactValues);
75     TELEPHONY_LOGI("insert code %{public}d", code);
76     return code;
77 }
78 
BatchInsertContactData(const std::vector<DataShare::DataShareValuesBucket> & contactsDataValues)79 int32_t VCardRdbHelper::BatchInsertContactData(const std::vector<DataShare::DataShareValuesBucket> &contactsDataValues)
80 {
81     if (dataShareHelper_ == nullptr) {
82         TELEPHONY_LOGE("dataShareHelper_ is nullptr");
83         return DB_FAILD;
84     }
85     Uri uriContactDataBatch(uriContactData.ToString() + "?isFromBatch=true&isSyncFromCloud=true");
86     int code = dataShareHelper_->BatchInsert(uriContactDataBatch, contactsDataValues);
87     TELEPHONY_LOGI("insert code %{public}d", code);
88     return code;
89 }
90 
InsertRawContact(const DataShare::DataShareValuesBucket & rawContactValues)91 int32_t VCardRdbHelper::InsertRawContact(const DataShare::DataShareValuesBucket &rawContactValues)
92 {
93     if (dataShareHelper_ == nullptr) {
94         TELEPHONY_LOGE("dataShareHelper_ is nullptr");
95         return DB_FAILD;
96     }
97     int rawContactId = dataShareHelper_->Insert(uriRawContact, rawContactValues);
98     TELEPHONY_LOGI("RawContactInsert insert rawContactId %{public}d", rawContactId);
99     return rawContactId;
100 }
101 
InsertContactData(const std::vector<DataShare::DataShareValuesBucket> & contactsDataValues)102 int32_t VCardRdbHelper::InsertContactData(const std::vector<DataShare::DataShareValuesBucket> &contactsDataValues)
103 {
104     if (dataShareHelper_ == nullptr) {
105         TELEPHONY_LOGE("dataShareHelper_ is nullptr");
106         return DB_FAILD;
107     }
108     int code = dataShareHelper_->BatchInsert(uriContactData, contactsDataValues);
109     TELEPHONY_LOGI(" ContactsControl::ContactDataInsert insert code %{public}d", code);
110     return code;
111 }
112 
QueryAccount(std::vector<std::string> & columns,const DataShare::DataSharePredicates & predicates)113 std::shared_ptr<DataShare::DataShareResultSet> VCardRdbHelper::QueryAccount(
114     std::vector<std::string> &columns, const DataShare::DataSharePredicates &predicates)
115 {
116     if (dataShareHelper_ == nullptr) {
117         TELEPHONY_LOGE("dataShareHelper_ is nullptr");
118         return nullptr;
119     }
120     std::shared_ptr<DataShare::DataShareResultSet> resultSet = dataShareHelper_->Query(uriAccount, predicates, columns);
121     return resultSet;
122 }
123 
QueryContact(std::vector<std::string> & columns,const DataShare::DataSharePredicates & predicates)124 std::shared_ptr<DataShare::DataShareResultSet> VCardRdbHelper::QueryContact(
125     std::vector<std::string> &columns, const DataShare::DataSharePredicates &predicates)
126 {
127     if (dataShareHelper_ == nullptr) {
128         TELEPHONY_LOGE("dataShareHelper_ is nullptr");
129         return nullptr;
130     }
131     std::shared_ptr<DataShare::DataShareResultSet> resultSet = dataShareHelper_->Query(uriContact, predicates, columns);
132     return resultSet;
133 }
134 
QueryRawContact(std::vector<std::string> & columns,const DataShare::DataSharePredicates & predicates)135 std::shared_ptr<DataShare::DataShareResultSet> VCardRdbHelper::QueryRawContact(
136     std::vector<std::string> &columns, const DataShare::DataSharePredicates &predicates)
137 {
138     if (dataShareHelper_ == nullptr) {
139         TELEPHONY_LOGE("dataShareHelper_ is nullptr");
140         return nullptr;
141     }
142     std::shared_ptr<DataShare::DataShareResultSet> resultSet =
143         dataShareHelper_->Query(uriRawContact, predicates, columns);
144     return resultSet;
145 }
146 
QueryContactData(std::vector<std::string> & columns,const DataShare::DataSharePredicates & predicates)147 std::shared_ptr<DataShare::DataShareResultSet> VCardRdbHelper::QueryContactData(
148     std::vector<std::string> &columns, const DataShare::DataSharePredicates &predicates)
149 {
150     if (dataShareHelper_ == nullptr) {
151         TELEPHONY_LOGE("dataShareHelper_ is nullptr");
152         return nullptr;
153     }
154     std::shared_ptr<DataShare::DataShareResultSet> resultSet =
155         dataShareHelper_->Query(uriContactData, predicates, columns);
156     return resultSet;
157 }
158 
SetDataHelper(std::shared_ptr<DataShare::DataShareHelper> dataShareHelper)159 void VCardRdbHelper::SetDataHelper(std::shared_ptr<DataShare::DataShareHelper> dataShareHelper)
160 {
161     dataShareHelper_ = dataShareHelper;
162 }
163 
Release()164 void VCardRdbHelper::Release()
165 {
166     if (dataShareHelper_ != nullptr) {
167         dataShareHelper_->Release();
168         dataShareHelper_ = nullptr;
169     }
170 }
171 
172 } // namespace Telephony
173 } // namespace OHOS
174