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