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 CHECK_AND_RETURN_RET_LOG(extension != nullptr, ret, "%{public}s end failed.", __func__);
35 ret = extension->GetFileTypes(uri, mimeTypeFilter);
36 MEDIA_DEBUG_LOG("end successfully.");
37 return ret;
38 }
39
OpenFile(const Uri & uri,const std::string & mode)40 int MediaDataShareStubImpl::OpenFile(const Uri &uri, const std::string &mode)
41 {
42 int ret = -1;
43 auto client = sptr<MediaDataShareStubImpl>(this);
44 auto extension = client->GetOwner();
45 CHECK_AND_RETURN_RET_LOG(extension != nullptr, ret, "%{public}s end failed.", __func__);
46 ret = extension->OpenFile(uri, mode);
47 return ret;
48 }
49
OpenRawFile(const Uri & uri,const std::string & mode)50 int MediaDataShareStubImpl::OpenRawFile(const Uri &uri, const std::string &mode)
51 {
52 MEDIA_DEBUG_LOG("begin.");
53 int ret = -1;
54 auto client = sptr<MediaDataShareStubImpl>(this);
55 auto extension = client->GetOwner();
56 CHECK_AND_RETURN_RET_LOG(extension != nullptr, ret, "%{public}s end failed.", __func__);
57 ret = extension->OpenRawFile(uri, mode);
58 MEDIA_DEBUG_LOG("end successfully. ret: %{public}d", ret);
59 return ret;
60 }
61
Insert(const Uri & uri,const DataShareValuesBucket & value)62 int MediaDataShareStubImpl::Insert(const Uri &uri, const DataShareValuesBucket &value)
63 {
64 int ret = 0;
65 auto client = sptr<MediaDataShareStubImpl>(this);
66 auto extension = client->GetOwner();
67 CHECK_AND_RETURN_RET_LOG(extension != nullptr, ret, "%{public}s end failed.", __func__);
68 ret = extension->Insert(uri, value);
69 return ret;
70 }
71
InsertExt(const Uri & uri,const DataShareValuesBucket & value,std::string & result)72 int MediaDataShareStubImpl::InsertExt(const Uri &uri, const DataShareValuesBucket &value, std::string &result)
73 {
74 int ret = 0;
75 auto client = sptr<MediaDataShareStubImpl>(this);
76 auto extension = client->GetOwner();
77 CHECK_AND_RETURN_RET_LOG(extension != nullptr, ret, "%{public}s end failed.", __func__);
78 ret = extension->InsertExt(uri, value, result);
79 return ret;
80 }
81
Update(const Uri & uri,const DataSharePredicates & predicates,const DataShareValuesBucket & value)82 int MediaDataShareStubImpl::Update(const Uri &uri, const DataSharePredicates &predicates,
83 const DataShareValuesBucket &value)
84 {
85 int ret = 0;
86 auto client = sptr<MediaDataShareStubImpl>(this);
87 auto extension = client->GetOwner();
88 CHECK_AND_RETURN_RET_LOG(extension != nullptr, ret, "%{public}s end failed.", __func__);
89 ret = extension->Update(uri, predicates, value);
90 return ret;
91 }
92
Delete(const Uri & uri,const DataSharePredicates & predicates)93 int MediaDataShareStubImpl::Delete(const Uri &uri, const DataSharePredicates &predicates)
94 {
95 int ret = 0;
96 auto client = sptr<MediaDataShareStubImpl>(this);
97 auto extension = client->GetOwner();
98 CHECK_AND_RETURN_RET_LOG(extension != nullptr, ret, "%{public}s end failed.", __func__);
99 ret = extension->Delete(uri, predicates);
100 return ret;
101 }
102
Query(const Uri & uri,const DataSharePredicates & predicates,std::vector<std::string> & columns,DatashareBusinessError & businessError)103 std::shared_ptr<DataShareResultSet> MediaDataShareStubImpl::Query(const Uri &uri,
104 const DataSharePredicates &predicates, std::vector<std::string> &columns, DatashareBusinessError &businessError)
105 {
106 auto client = sptr<MediaDataShareStubImpl>(this);
107 auto extension = client->GetOwner();
108 CHECK_AND_RETURN_RET_LOG(extension != nullptr, nullptr, "%{public}s end failed.", __func__);
109 return extension->Query(uri, predicates, columns, businessError);
110 }
111
GetType(const Uri & uri)112 std::string MediaDataShareStubImpl::GetType(const Uri &uri)
113 {
114 MEDIA_DEBUG_LOG("begin.");
115 std::string ret = "";
116 auto client = sptr<MediaDataShareStubImpl>(this);
117 auto extension = client->GetOwner();
118 CHECK_AND_RETURN_RET_LOG(extension != nullptr, ret, "%{public}s end failed.", __func__);
119 ret = extension->GetType(uri);
120 MEDIA_DEBUG_LOG("end successfully.");
121 return ret;
122 }
123
BatchInsert(const Uri & uri,const std::vector<DataShareValuesBucket> & values)124 int MediaDataShareStubImpl::BatchInsert(const Uri &uri, const std::vector<DataShareValuesBucket> &values)
125 {
126 MEDIA_DEBUG_LOG("begin.");
127 int ret = 0;
128 auto client = sptr<MediaDataShareStubImpl>(this);
129 auto extension = client->GetOwner();
130 CHECK_AND_RETURN_RET_LOG(extension != nullptr, ret, "%{public}s end failed.", __func__);
131 ret = extension->BatchInsert(uri, values);
132 MEDIA_DEBUG_LOG("end successfully.");
133 return ret;
134 }
135
RegisterObserver(const Uri & uri,const sptr<AAFwk::IDataAbilityObserver> & dataObserver)136 bool MediaDataShareStubImpl::RegisterObserver(const Uri &uri, const sptr<AAFwk::IDataAbilityObserver> &dataObserver)
137 {
138 MEDIA_DEBUG_LOG("begin.");
139 bool ret = false;
140 auto client = sptr<MediaDataShareStubImpl>(this);
141 auto extension = client->GetOwner();
142 CHECK_AND_RETURN_RET_LOG(extension != nullptr, ret, "%{public}s end failed.", __func__);
143 ret = extension->RegisterObserver(uri, dataObserver);
144 MEDIA_DEBUG_LOG("end successfully. ret: %{public}d", ret);
145 return ret;
146 }
147
UnregisterObserver(const Uri & uri,const sptr<AAFwk::IDataAbilityObserver> & dataObserver)148 bool MediaDataShareStubImpl::UnregisterObserver(const Uri &uri, const sptr<AAFwk::IDataAbilityObserver> &dataObserver)
149 {
150 MEDIA_DEBUG_LOG("begin.");
151 bool ret = false;
152 auto client = sptr<MediaDataShareStubImpl>(this);
153 auto extension = client->GetOwner();
154 CHECK_AND_RETURN_RET_LOG(extension != nullptr, ret, "%{public}s end failed.", __func__);
155 ret = extension->UnregisterObserver(uri, dataObserver);
156 MEDIA_DEBUG_LOG("end successfully. ret: %{public}d", ret);
157 return ret;
158 }
159
NotifyChange(const Uri & uri)160 bool MediaDataShareStubImpl::NotifyChange(const Uri &uri)
161 {
162 MEDIA_DEBUG_LOG("begin.");
163 bool ret = false;
164 auto client = sptr<MediaDataShareStubImpl>(this);
165 auto extension = client->GetOwner();
166 CHECK_AND_RETURN_RET_LOG(extension != nullptr, ret, "%{public}s end failed.", __func__);
167 ret = extension->NotifyChange(uri);
168 MEDIA_DEBUG_LOG("end successfully. ret: %{public}d", ret);
169 return ret;
170 }
171
NormalizeUri(const Uri & uri)172 Uri MediaDataShareStubImpl::NormalizeUri(const Uri &uri)
173 {
174 MEDIA_DEBUG_LOG("begin.");
175 Uri urivalue("");
176 auto client = sptr<MediaDataShareStubImpl>(this);
177 auto extension = client->GetOwner();
178 CHECK_AND_RETURN_RET_LOG(extension != nullptr, urivalue, "%{public}s end failed.", __func__);
179 urivalue = extension->NormalizeUri(uri);
180 MEDIA_DEBUG_LOG("end successfully.");
181 return urivalue;
182 }
183
DenormalizeUri(const Uri & uri)184 Uri MediaDataShareStubImpl::DenormalizeUri(const Uri &uri)
185 {
186 MEDIA_DEBUG_LOG("begin.");
187 Uri urivalue("");
188 auto client = sptr<MediaDataShareStubImpl>(this);
189 auto extension = client->GetOwner();
190 CHECK_AND_RETURN_RET_LOG(extension != nullptr, urivalue, "%{public}s end failed.", __func__);
191 urivalue = extension->DenormalizeUri(uri);
192 MEDIA_DEBUG_LOG("end successfully.");
193 return urivalue;
194 }
195 } // namespace DataShare
196 } // namespace OHOS
197