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
16 #include "general_controller_provider_impl.h"
17
18 #include "datashare_log.h"
19 #include "datashare_string_utils.h"
20
21 namespace OHOS {
22 namespace DataShare {
Insert(const Uri & uri,const DataShareValuesBucket & value)23 int GeneralControllerProviderImpl::Insert(const Uri &uri, const DataShareValuesBucket &value)
24 {
25 auto connection = connection_;
26 if (connection == nullptr) {
27 LOG_ERROR("connection is nullptr");
28 return DATA_SHARE_ERROR;
29 }
30 auto proxy = connection->GetDataShareProxy(uri_, token_);
31 if (proxy == nullptr) {
32 LOG_ERROR("proxy is nullptr");
33 return DATA_SHARE_ERROR;
34 }
35 return proxy->Insert(uri, value);
36 }
37
Update(const Uri & uri,const DataSharePredicates & predicates,const DataShareValuesBucket & value)38 int GeneralControllerProviderImpl::Update(const Uri &uri, const DataSharePredicates &predicates,
39 const DataShareValuesBucket &value)
40 {
41 auto connection = connection_;
42 if (connection == nullptr) {
43 LOG_ERROR("connection is nullptr");
44 return DATA_SHARE_ERROR;
45 }
46 auto proxy = connection->GetDataShareProxy(uri_, token_);
47 if (proxy == nullptr) {
48 LOG_ERROR("proxy is nullptr");
49 return DATA_SHARE_ERROR;
50 }
51 return proxy->Update(uri, predicates, value);
52 }
53
Delete(const Uri & uri,const DataSharePredicates & predicates)54 int GeneralControllerProviderImpl::Delete(const Uri &uri, const DataSharePredicates &predicates)
55 {
56 auto connection = connection_;
57 if (connection == nullptr) {
58 LOG_ERROR("connection is nullptr");
59 return DATA_SHARE_ERROR;
60 }
61 auto proxy = connection->GetDataShareProxy(uri_, token_);
62 if (proxy == nullptr) {
63 LOG_ERROR("proxy is nullptr");
64 return DATA_SHARE_ERROR;
65 }
66 return proxy->Delete(uri, predicates);
67 }
68
InsertEx(const Uri & uri,const DataShareValuesBucket & value)69 std::pair<int32_t, int32_t> GeneralControllerProviderImpl::InsertEx(const Uri &uri,
70 const DataShareValuesBucket &value)
71 {
72 auto connection = connection_;
73 if (connection == nullptr) {
74 LOG_ERROR("connection is nullptr");
75 return std::make_pair(DATA_SHARE_ERROR, 0);
76 }
77 auto proxy = connection->GetDataShareProxy(uri_, token_);
78 if (proxy == nullptr) {
79 LOG_ERROR("proxy is nullptr");
80 return std::make_pair(DATA_SHARE_ERROR, 0);
81 }
82 return proxy->InsertEx(uri, value);
83 }
84
UpdateEx(const Uri & uri,const DataSharePredicates & predicates,const DataShareValuesBucket & value)85 std::pair<int32_t, int32_t> GeneralControllerProviderImpl::UpdateEx(
86 const Uri &uri, const DataSharePredicates &predicates, const DataShareValuesBucket &value)
87 {
88 auto connection = connection_;
89 if (connection == nullptr) {
90 LOG_ERROR("connection is nullptr");
91 return std::make_pair(DATA_SHARE_ERROR, 0);
92 }
93 auto proxy = connection->GetDataShareProxy(uri_, token_);
94 if (proxy == nullptr) {
95 LOG_ERROR("proxy is nullptr");
96 return std::make_pair(DATA_SHARE_ERROR, 0);
97 }
98 return proxy->UpdateEx(uri, predicates, value);
99 }
100
DeleteEx(const Uri & uri,const DataSharePredicates & predicates)101 std::pair<int32_t, int32_t> GeneralControllerProviderImpl::DeleteEx(const Uri &uri,
102 const DataSharePredicates &predicates)
103 {
104 auto connection = connection_;
105 if (connection == nullptr) {
106 LOG_ERROR("connection is nullptr");
107 return std::make_pair(DATA_SHARE_ERROR, 0);
108 }
109 auto proxy = connection->GetDataShareProxy(uri_, token_);
110 if (proxy == nullptr) {
111 LOG_ERROR("proxy is nullptr");
112 return std::make_pair(DATA_SHARE_ERROR, 0);
113 }
114 return proxy->DeleteEx(uri, predicates);
115 }
116
Query(const Uri & uri,const DataSharePredicates & predicates,std::vector<std::string> & columns,DatashareBusinessError & businessError)117 std::shared_ptr<DataShareResultSet> GeneralControllerProviderImpl::Query(const Uri &uri,
118 const DataSharePredicates &predicates, std::vector<std::string> &columns, DatashareBusinessError &businessError)
119 {
120 auto connection = connection_;
121 if (connection == nullptr) {
122 LOG_ERROR("connection is nullptr");
123 return nullptr;
124 }
125 auto proxy = connection->GetDataShareProxy(uri_, token_);
126 if (proxy == nullptr) {
127 LOG_ERROR("proxy is nullptr");
128 return nullptr;
129 }
130 return proxy->Query(uri, predicates, columns, businessError);
131 }
132
RegisterObserver(const Uri & uri,const sptr<AAFwk::IDataAbilityObserver> & dataObserver)133 int GeneralControllerProviderImpl::RegisterObserver(const Uri &uri,
134 const sptr<AAFwk::IDataAbilityObserver> &dataObserver)
135 {
136 auto connection = connection_;
137 if (connection == nullptr) {
138 LOG_ERROR("connection is nullptr");
139 return E_PROVIDER_CONN_NULL;
140 }
141 auto proxy = connection->GetDataShareProxy(uri_, token_);
142 if (proxy == nullptr) {
143 LOG_ERROR("proxy is nullptr");
144 return E_PROVIDER_NOT_CONNECTED;
145 }
146 int ret = proxy->RegisterObserver(uri, dataObserver);
147 LOG_INFO("Register non-silent observer ret: %{public}d, uri: %{public}s", ret,
148 DataShareStringUtils::Anonymous(uri.ToString()).c_str());
149 return ret;
150 }
151
UnregisterObserver(const Uri & uri,const sptr<AAFwk::IDataAbilityObserver> & dataObserver)152 int GeneralControllerProviderImpl::UnregisterObserver(const Uri &uri,
153 const sptr<AAFwk::IDataAbilityObserver> &dataObserver)
154 {
155 auto connection = connection_;
156 if (connection == nullptr) {
157 LOG_ERROR("connection is nullptr");
158 return E_PROVIDER_CONN_NULL;
159 }
160 auto proxy = connection->GetDataShareProxy(uri_, token_);
161 if (proxy == nullptr) {
162 LOG_ERROR("proxy is nullptr");
163 return E_PROVIDER_NOT_CONNECTED;
164 }
165 int ret = proxy->UnregisterObserver(uri, dataObserver);
166 LOG_INFO("Unregister non-silent observer ret: %{public}d, uri: %{public}s", ret,
167 DataShareStringUtils::Anonymous(uri.ToString()).c_str());
168 return ret;
169 }
170
NotifyChange(const Uri & uri)171 void GeneralControllerProviderImpl::NotifyChange(const Uri &uri)
172 {
173 auto connection = connection_;
174 if (connection == nullptr) {
175 LOG_ERROR("connection is nullptr");
176 return;
177 }
178 auto proxy = connection->GetDataShareProxy(uri_, token_);
179 if (proxy == nullptr) {
180 LOG_ERROR("proxy is nullptr");
181 return;
182 }
183 proxy->NotifyChange(uri);
184 }
185
GeneralControllerProviderImpl(std::shared_ptr<DataShareConnection> connection,const Uri & uri,const sptr<IRemoteObject> & token)186 GeneralControllerProviderImpl::GeneralControllerProviderImpl(std::shared_ptr<DataShareConnection> connection,
187 const Uri &uri, const sptr<IRemoteObject> &token) : connection_(connection), token_(token), uri_(uri)
188 {
189 }
190 } // namespace DataShare
191 } // namespace OHOS