1 /*
2 * Copyright (c) 2022 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 #define MLOG_TAG "Extension"
16
17 #include "media_datashare_stub_impl.h"
18
19 #include "media_log.h"
20
21 namespace OHOS {
22 namespace DataShare {
GetOwner()23 std::shared_ptr<MediaDataShareExtAbility> MediaDataShareStubImpl::GetOwner()
24 {
25 return extension_;
26 }
27
GetFileTypes(const Uri & uri,const std::string & mimeTypeFilter)28 std::vector<std::string> MediaDataShareStubImpl::GetFileTypes(const Uri &uri, const std::string &mimeTypeFilter)
29 {
30 MEDIA_DEBUG_LOG("begin.");
31 std::vector<std::string> ret;
32 auto client = sptr<MediaDataShareStubImpl>(this);
33 auto extension = client->GetOwner();
34 if (extension == nullptr) {
35 MEDIA_ERR_LOG("%{public}s end failed.", __func__);
36 return ret;
37 }
38 ret = extension->GetFileTypes(uri, mimeTypeFilter);
39 MEDIA_DEBUG_LOG("end successfully.");
40 return ret;
41 }
42
OpenFile(const Uri & uri,const std::string & mode)43 int MediaDataShareStubImpl::OpenFile(const Uri &uri, const std::string &mode)
44 {
45 int ret = -1;
46 auto client = sptr<MediaDataShareStubImpl>(this);
47 auto extension = client->GetOwner();
48 if (extension == nullptr) {
49 MEDIA_ERR_LOG("%{public}s end failed.", __func__);
50 return ret;
51 }
52 ret = extension->OpenFile(uri, mode);
53 return ret;
54 }
55
OpenRawFile(const Uri & uri,const std::string & mode)56 int MediaDataShareStubImpl::OpenRawFile(const Uri &uri, const std::string &mode)
57 {
58 MEDIA_DEBUG_LOG("begin.");
59 int ret = -1;
60 auto client = sptr<MediaDataShareStubImpl>(this);
61 auto extension = client->GetOwner();
62 if (extension == nullptr) {
63 MEDIA_ERR_LOG("%{public}s end failed.", __func__);
64 return ret;
65 }
66 ret = extension->OpenRawFile(uri, mode);
67 MEDIA_DEBUG_LOG("end successfully. ret: %{public}d", ret);
68 return ret;
69 }
70
Insert(const Uri & uri,const DataShareValuesBucket & value)71 int MediaDataShareStubImpl::Insert(const Uri &uri, const DataShareValuesBucket &value)
72 {
73 int ret = 0;
74 auto client = sptr<MediaDataShareStubImpl>(this);
75 auto extension = client->GetOwner();
76 if (extension == nullptr) {
77 MEDIA_ERR_LOG("%{public}s end failed.", __func__);
78 return ret;
79 }
80 ret = extension->Insert(uri, value);
81 return ret;
82 }
83
InsertExt(const Uri & uri,const DataShareValuesBucket & value,std::string & result)84 int MediaDataShareStubImpl::InsertExt(const Uri &uri, const DataShareValuesBucket &value, std::string &result)
85 {
86 int ret = 0;
87 auto client = sptr<MediaDataShareStubImpl>(this);
88 auto extension = client->GetOwner();
89 if (extension == nullptr) {
90 MEDIA_ERR_LOG("%{public}s end failed.", __func__);
91 return ret;
92 }
93 ret = extension->InsertExt(uri, value, result);
94 return ret;
95 }
96
Update(const Uri & uri,const DataSharePredicates & predicates,const DataShareValuesBucket & value)97 int MediaDataShareStubImpl::Update(const Uri &uri, const DataSharePredicates &predicates,
98 const DataShareValuesBucket &value)
99 {
100 int ret = 0;
101 auto client = sptr<MediaDataShareStubImpl>(this);
102 auto extension = client->GetOwner();
103 if (extension == nullptr) {
104 MEDIA_ERR_LOG("%{public}s end failed.", __func__);
105 return ret;
106 }
107 ret = extension->Update(uri, predicates, value);
108 return ret;
109 }
110
Delete(const Uri & uri,const DataSharePredicates & predicates)111 int MediaDataShareStubImpl::Delete(const Uri &uri, const DataSharePredicates &predicates)
112 {
113 int ret = 0;
114 auto client = sptr<MediaDataShareStubImpl>(this);
115 auto extension = client->GetOwner();
116 if (extension == nullptr) {
117 MEDIA_ERR_LOG("%{public}s end failed.", __func__);
118 return ret;
119 }
120 ret = extension->Delete(uri, predicates);
121 return ret;
122 }
123
Query(const Uri & uri,const DataSharePredicates & predicates,std::vector<std::string> & columns,DatashareBusinessError & businessError)124 std::shared_ptr<DataShareResultSet> MediaDataShareStubImpl::Query(const Uri &uri,
125 const DataSharePredicates &predicates, std::vector<std::string> &columns, DatashareBusinessError &businessError)
126 {
127 auto client = sptr<MediaDataShareStubImpl>(this);
128 auto extension = client->GetOwner();
129 if (extension == nullptr) {
130 MEDIA_ERR_LOG("%{public}s end failed.", __func__);
131 return nullptr;
132 }
133 return extension->Query(uri, predicates, columns, businessError);
134 }
135
GetType(const Uri & uri)136 std::string MediaDataShareStubImpl::GetType(const Uri &uri)
137 {
138 MEDIA_DEBUG_LOG("begin.");
139 std::string ret = "";
140 auto client = sptr<MediaDataShareStubImpl>(this);
141 auto extension = client->GetOwner();
142 if (extension == nullptr) {
143 MEDIA_ERR_LOG("%{public}s end failed.", __func__);
144 return ret;
145 }
146 ret = extension->GetType(uri);
147 MEDIA_DEBUG_LOG("end successfully.");
148 return ret;
149 }
150
BatchInsert(const Uri & uri,const std::vector<DataShareValuesBucket> & values)151 int MediaDataShareStubImpl::BatchInsert(const Uri &uri, const std::vector<DataShareValuesBucket> &values)
152 {
153 MEDIA_DEBUG_LOG("begin.");
154 int ret = 0;
155 auto client = sptr<MediaDataShareStubImpl>(this);
156 auto extension = client->GetOwner();
157 if (extension == nullptr) {
158 MEDIA_ERR_LOG("%{public}s end failed.", __func__);
159 return ret;
160 }
161 ret = extension->BatchInsert(uri, values);
162 MEDIA_DEBUG_LOG("end successfully.");
163 return ret;
164 }
165
RegisterObserver(const Uri & uri,const sptr<AAFwk::IDataAbilityObserver> & dataObserver)166 bool MediaDataShareStubImpl::RegisterObserver(const Uri &uri, const sptr<AAFwk::IDataAbilityObserver> &dataObserver)
167 {
168 MEDIA_DEBUG_LOG("begin.");
169 bool ret = false;
170 auto client = sptr<MediaDataShareStubImpl>(this);
171 auto extension = client->GetOwner();
172 if (extension == nullptr) {
173 MEDIA_ERR_LOG("%{public}s end failed.", __func__);
174 return ret;
175 }
176 ret = extension->RegisterObserver(uri, dataObserver);
177 MEDIA_DEBUG_LOG("end successfully. ret: %{public}d", ret);
178 return ret;
179 }
180
UnregisterObserver(const Uri & uri,const sptr<AAFwk::IDataAbilityObserver> & dataObserver)181 bool MediaDataShareStubImpl::UnregisterObserver(const Uri &uri, const sptr<AAFwk::IDataAbilityObserver> &dataObserver)
182 {
183 MEDIA_DEBUG_LOG("begin.");
184 bool ret = false;
185 auto client = sptr<MediaDataShareStubImpl>(this);
186 auto extension = client->GetOwner();
187 if (extension == nullptr) {
188 MEDIA_ERR_LOG("%{public}s end failed.", __func__);
189 return ret;
190 }
191 ret = extension->UnregisterObserver(uri, dataObserver);
192 MEDIA_DEBUG_LOG("end successfully. ret: %{public}d", ret);
193 return ret;
194 }
195
NotifyChange(const Uri & uri)196 bool MediaDataShareStubImpl::NotifyChange(const Uri &uri)
197 {
198 MEDIA_DEBUG_LOG("begin.");
199 bool ret = false;
200 auto client = sptr<MediaDataShareStubImpl>(this);
201 auto extension = client->GetOwner();
202 if (extension == nullptr) {
203 MEDIA_ERR_LOG("%{public}s end failed.", __func__);
204 return ret;
205 }
206 ret = extension->NotifyChange(uri);
207 MEDIA_DEBUG_LOG("end successfully. ret: %{public}d", ret);
208 return ret;
209 }
210
NormalizeUri(const Uri & uri)211 Uri MediaDataShareStubImpl::NormalizeUri(const Uri &uri)
212 {
213 MEDIA_DEBUG_LOG("begin.");
214 Uri urivalue("");
215 auto client = sptr<MediaDataShareStubImpl>(this);
216 auto extension = client->GetOwner();
217 if (extension == nullptr) {
218 MEDIA_ERR_LOG("%{public}s end failed.", __func__);
219 return urivalue;
220 }
221 urivalue = extension->NormalizeUri(uri);
222 MEDIA_DEBUG_LOG("end successfully.");
223 return urivalue;
224 }
225
DenormalizeUri(const Uri & uri)226 Uri MediaDataShareStubImpl::DenormalizeUri(const Uri &uri)
227 {
228 MEDIA_DEBUG_LOG("begin.");
229 Uri urivalue("");
230 auto client = sptr<MediaDataShareStubImpl>(this);
231 auto extension = client->GetOwner();
232 if (extension == nullptr) {
233 MEDIA_ERR_LOG("%{public}s end failed.", __func__);
234 return urivalue;
235 }
236 urivalue = extension->DenormalizeUri(uri);
237 MEDIA_DEBUG_LOG("end successfully.");
238 return urivalue;
239 }
240 } // namespace DataShare
241 } // namespace OHOS
242