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