• 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 
29 } // namespace
30 
31 std::shared_ptr<DataShare::DataShareHelper> VCardRdbHelper::dataShareHelper_ = nullptr;
32 
VCardRdbHelper()33 VCardRdbHelper::VCardRdbHelper() {}
34 
GetInstance()35 VCardRdbHelper &VCardRdbHelper::GetInstance()
36 {
37     static VCardRdbHelper instance;
38     return instance;
39 }
40 
QueryRawContactMaxId()41 int32_t VCardRdbHelper::QueryRawContactMaxId()
42 {
43     std::vector<std::string> columns;
44     DataShare::DataSharePredicates predicates;
45     predicates.GreaterThanOrEqualTo(RawContact::ID, "1");
46     auto resultSet = QueryRawContact(columns, predicates);
47     if (resultSet == nullptr) {
48         TELEPHONY_LOGE("resultSet is nullptr");
49         return DB_FAILD;
50     }
51     int rowCount = 0;
52     resultSet->GetRowCount(rowCount);
53     TELEPHONY_LOGI("rowCount= %{public}d", rowCount);
54     return static_cast<int32_t>(rowCount);
55 }
56 
BatchInsertRawContact(const std::vector<DataShare::DataShareValuesBucket> & rawContactValues)57 int32_t VCardRdbHelper::BatchInsertRawContact(const std::vector<DataShare::DataShareValuesBucket> &rawContactValues)
58 {
59     if (dataShareHelper_ == nullptr) {
60         TELEPHONY_LOGE("dataShareHelper_ is nullptr");
61         return DB_FAILD;
62     }
63     Uri uriRawContactBatch(uriRawContact.ToString() + "?isFromBatch=true");
64     int code = dataShareHelper_->BatchInsert(uriRawContactBatch, rawContactValues);
65     TELEPHONY_LOGI("insert code %{public}d", code);
66     return code;
67 }
68 
BatchInsertContactData(const std::vector<DataShare::DataShareValuesBucket> & contactsDataValues)69 int32_t VCardRdbHelper::BatchInsertContactData(const std::vector<DataShare::DataShareValuesBucket> &contactsDataValues)
70 {
71     if (dataShareHelper_ == nullptr) {
72         TELEPHONY_LOGE("dataShareHelper_ is nullptr");
73         return DB_FAILD;
74     }
75     Uri uriContactDataBatch(uriContactData.ToString() + "?isFromBatch=true");
76     int code = dataShareHelper_->BatchInsert(uriContactDataBatch, contactsDataValues);
77     TELEPHONY_LOGI("insert code %{public}d", code);
78     return code;
79 }
80 
InsertRawContact(const DataShare::DataShareValuesBucket & rawContactValues)81 int32_t VCardRdbHelper::InsertRawContact(const DataShare::DataShareValuesBucket &rawContactValues)
82 {
83     if (dataShareHelper_ == nullptr) {
84         TELEPHONY_LOGE("dataShareHelper_ is nullptr");
85         return DB_FAILD;
86     }
87     int rawContactId = dataShareHelper_->Insert(uriRawContact, rawContactValues);
88     TELEPHONY_LOGI("RawContactInsert insert rawContactId %{public}d", rawContactId);
89     return rawContactId;
90 }
91 
InsertContactData(const std::vector<DataShare::DataShareValuesBucket> & contactsDataValues)92 int32_t VCardRdbHelper::InsertContactData(const std::vector<DataShare::DataShareValuesBucket> &contactsDataValues)
93 {
94     if (dataShareHelper_ == nullptr) {
95         TELEPHONY_LOGE("dataShareHelper_ is nullptr");
96         return DB_FAILD;
97     }
98     int code = dataShareHelper_->BatchInsert(uriContactData, contactsDataValues);
99     TELEPHONY_LOGI(" ContactsControl::ContactDataInsert insert code %{public}d", code);
100     return code;
101 }
102 
QueryAccount(std::vector<std::string> & columns,const DataShare::DataSharePredicates & predicates)103 std::shared_ptr<DataShare::DataShareResultSet> VCardRdbHelper::QueryAccount(
104     std::vector<std::string> &columns, const DataShare::DataSharePredicates &predicates)
105 {
106     if (dataShareHelper_ == nullptr) {
107         TELEPHONY_LOGE("dataShareHelper_ is nullptr");
108         return nullptr;
109     }
110     std::shared_ptr<DataShare::DataShareResultSet> resultSet = dataShareHelper_->Query(uriAccount, predicates, columns);
111     return resultSet;
112 }
113 
QueryContact(std::vector<std::string> & columns,const DataShare::DataSharePredicates & predicates)114 std::shared_ptr<DataShare::DataShareResultSet> VCardRdbHelper::QueryContact(
115     std::vector<std::string> &columns, const DataShare::DataSharePredicates &predicates)
116 {
117     if (dataShareHelper_ == nullptr) {
118         TELEPHONY_LOGE("dataShareHelper_ is nullptr");
119         return nullptr;
120     }
121     std::shared_ptr<DataShare::DataShareResultSet> resultSet = dataShareHelper_->Query(uriContact, predicates, columns);
122     return resultSet;
123 }
124 
QueryRawContact(std::vector<std::string> & columns,const DataShare::DataSharePredicates & predicates)125 std::shared_ptr<DataShare::DataShareResultSet> VCardRdbHelper::QueryRawContact(
126     std::vector<std::string> &columns, const DataShare::DataSharePredicates &predicates)
127 {
128     if (dataShareHelper_ == nullptr) {
129         TELEPHONY_LOGE("dataShareHelper_ is nullptr");
130         return nullptr;
131     }
132     std::shared_ptr<DataShare::DataShareResultSet> resultSet =
133         dataShareHelper_->Query(uriRawContact, predicates, columns);
134     return resultSet;
135 }
136 
QueryContactData(std::vector<std::string> & columns,const DataShare::DataSharePredicates & predicates)137 std::shared_ptr<DataShare::DataShareResultSet> VCardRdbHelper::QueryContactData(
138     std::vector<std::string> &columns, const DataShare::DataSharePredicates &predicates)
139 {
140     if (dataShareHelper_ == nullptr) {
141         TELEPHONY_LOGE("dataShareHelper_ is nullptr");
142         return nullptr;
143     }
144     std::shared_ptr<DataShare::DataShareResultSet> resultSet =
145         dataShareHelper_->Query(uriContactData, predicates, columns);
146     return resultSet;
147 }
148 
SetDataHelper(std::shared_ptr<DataShare::DataShareHelper> dataShareHelper)149 void VCardRdbHelper::SetDataHelper(std::shared_ptr<DataShare::DataShareHelper> dataShareHelper)
150 {
151     dataShareHelper_ = dataShareHelper;
152 }
153 
Release()154 void VCardRdbHelper::Release()
155 {
156     if (dataShareHelper_ != nullptr) {
157         dataShareHelper_->Release();
158         dataShareHelper_ = nullptr;
159     }
160 }
161 
162 } // namespace Telephony
163 } // namespace OHOS
164