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
16 #ifdef FEATURE_GEOCODE_SUPPORT
17 #include "geo_convert_request.h"
18
19 namespace OHOS {
20 namespace Location {
GeoConvertRequest()21 GeoConvertRequest::GeoConvertRequest()
22 {
23 locale_ = "";
24 latitude_ = 0.0;
25 longitude_ = 0.0;
26 maxItems_ = 0;
27 description_ = "";
28 maxLatitude_ = 0.0;
29 maxLongitude_ = 0.0;
30 minLatitude_ = 0.0;
31 minLongitude_ = 0.0;
32 bundleName_ = "";
33 callback_ = nullptr;
34 transId_ = "";
35 country_ = "";
36 requestType_ = GeoCodeType::REQUEST_GEOCODE;
37 }
38
~GeoConvertRequest()39 GeoConvertRequest::~GeoConvertRequest() {}
40
GetLocale()41 std::string GeoConvertRequest::GetLocale()
42 {
43 return locale_;
44 }
45
SetLocale(std::string locale)46 void GeoConvertRequest::SetLocale(std::string locale)
47 {
48 locale_ = locale;
49 }
50
GetLatitude()51 double GeoConvertRequest::GetLatitude()
52 {
53 return latitude_;
54 }
55
SetLatitude(double latitude)56 void GeoConvertRequest::SetLatitude(double latitude)
57 {
58 latitude_ = latitude;
59 }
60
GetLongitude()61 double GeoConvertRequest::GetLongitude()
62 {
63 return longitude_;
64 }
65
SetLongitude(double longitude)66 void GeoConvertRequest::SetLongitude(double longitude)
67 {
68 longitude_ = longitude;
69 }
70
GetMaxItems()71 int32_t GeoConvertRequest::GetMaxItems()
72 {
73 return maxItems_;
74 }
75
SetMaxItems(int32_t maxItems)76 void GeoConvertRequest::SetMaxItems(int32_t maxItems)
77 {
78 maxItems_ = maxItems;
79 }
80
GetDescription()81 std::string GeoConvertRequest::GetDescription()
82 {
83 return description_;
84 }
85
SetDescription(std::string description)86 void GeoConvertRequest::SetDescription(std::string description)
87 {
88 description_ = description;
89 }
90
GetMaxLatitude()91 double GeoConvertRequest::GetMaxLatitude()
92 {
93 return maxLatitude_;
94 }
95
SetMaxLatitude(double maxLatitude)96 void GeoConvertRequest::SetMaxLatitude(double maxLatitude)
97 {
98 maxLatitude_ = maxLatitude;
99 }
100
GetMaxLongitude()101 double GeoConvertRequest::GetMaxLongitude()
102 {
103 return maxLongitude_;
104 }
105
SetMaxLongitude(double maxLongitude)106 void GeoConvertRequest::SetMaxLongitude(double maxLongitude)
107 {
108 maxLongitude_ = maxLongitude;
109 }
110
GetMinLatitude()111 double GeoConvertRequest::GetMinLatitude()
112 {
113 return minLatitude_;
114 }
115
SetMinLatitude(double minLatitude)116 void GeoConvertRequest::SetMinLatitude(double minLatitude)
117 {
118 minLatitude_ = minLatitude;
119 }
120
GetMinLongitude()121 double GeoConvertRequest::GetMinLongitude()
122 {
123 return minLongitude_;
124 }
125
SetMinLongitude(double minLongitude)126 void GeoConvertRequest::SetMinLongitude(double minLongitude)
127 {
128 minLongitude_ = minLongitude;
129 }
130
GetBundleName()131 std::string GeoConvertRequest::GetBundleName()
132 {
133 return bundleName_;
134 }
135
SetBundleName(std::string bundleName)136 void GeoConvertRequest::SetBundleName(std::string bundleName)
137 {
138 bundleName_ = bundleName;
139 }
140
GetCallback()141 sptr<IRemoteObject> GeoConvertRequest::GetCallback()
142 {
143 return callback_;
144 }
145
SetCallback(sptr<IRemoteObject> callback)146 void GeoConvertRequest::SetCallback(sptr<IRemoteObject> callback)
147 {
148 callback_ = callback;
149 }
150
GetTransId()151 std::string GeoConvertRequest::GetTransId()
152 {
153 return transId_;
154 }
155
SetTransId(std::string transId)156 void GeoConvertRequest::SetTransId(std::string transId)
157 {
158 transId_ = transId;
159 }
160
GetCountry()161 std::string GeoConvertRequest::GetCountry()
162 {
163 return country_;
164 }
165
SetCountry(std::string country)166 void GeoConvertRequest::SetCountry(std::string country)
167 {
168 country_ = country;
169 }
170
GetRequestType()171 GeoCodeType GeoConvertRequest::GetRequestType()
172 {
173 return requestType_;
174 }
175
SetRequestType(GeoCodeType requestType)176 void GeoConvertRequest::SetRequestType(GeoCodeType requestType)
177 {
178 requestType_ = requestType;
179 }
180
Marshalling(MessageParcel & parcel) const181 bool GeoConvertRequest::Marshalling(MessageParcel& parcel) const
182 {
183 if (requestType_ == GeoCodeType::REQUEST_REVERSE_GEOCODE) {
184 parcel.WriteString16(Str8ToStr16(locale_)); // locale
185 parcel.WriteDouble(latitude_); // latitude
186 parcel.WriteDouble(longitude_); // longitude
187 parcel.WriteInt32(maxItems_); // maxItems
188 } else {
189 parcel.WriteString16(Str8ToStr16(locale_)); // locale
190 parcel.WriteString16(Str8ToStr16(description_)); // description
191 parcel.WriteInt32(maxItems_); // maxItems
192 parcel.WriteDouble(minLatitude_); // minLatitude
193 parcel.WriteDouble(minLongitude_); // minLongitude
194 parcel.WriteDouble(maxLatitude_); // maxLatitude
195 parcel.WriteDouble(maxLongitude_); // maxLongitude
196 }
197 parcel.WriteString16(Str8ToStr16(bundleName_)); // bundleName
198 parcel.WriteRemoteObject(callback_);
199 parcel.WriteString16(Str8ToStr16(transId_)); // transId
200 parcel.WriteString16(Str8ToStr16(country_)); // country
201 return true;
202 }
203
Unmarshalling(MessageParcel & parcel,GeoCodeType requestType)204 std::unique_ptr<GeoConvertRequest> GeoConvertRequest::Unmarshalling(MessageParcel& parcel, GeoCodeType requestType)
205 {
206 std::unique_ptr<GeoConvertRequest> geoConvertRequest = std::make_unique<GeoConvertRequest>();
207 geoConvertRequest->SetRequestType(requestType);
208 geoConvertRequest->ReadFromParcel(parcel);
209 return geoConvertRequest;
210 }
211
ReadFromParcel(MessageParcel & parcel)212 void GeoConvertRequest::ReadFromParcel(MessageParcel& parcel)
213 {
214 if (requestType_ == GeoCodeType::REQUEST_REVERSE_GEOCODE) {
215 locale_ = Str16ToStr8(parcel.ReadString16()); // locale
216 latitude_ = parcel.ReadDouble(); // latitude
217 longitude_ = parcel.ReadDouble(); // longitude
218 maxItems_ = parcel.ReadInt32(); // maxItems
219 } else {
220 locale_ = Str16ToStr8(parcel.ReadString16()); // locale
221 description_ = Str16ToStr8(parcel.ReadString16()); // description
222 maxItems_ = parcel.ReadInt32(); // maxItems
223 minLatitude_ = parcel.ReadDouble(); // minLatitude
224 minLongitude_ = parcel.ReadDouble(); // minLongitude
225 maxLatitude_ = parcel.ReadDouble(); // maxLatitude
226 maxLongitude_ = parcel.ReadDouble(); // maxLongitude
227 }
228 bundleName_ = Str16ToStr8(parcel.ReadString16()); // bundleName
229 callback_ = parcel.ReadRemoteObject();
230 transId_ = Str16ToStr8(parcel.ReadString16()); // transId
231 country_ = Str16ToStr8(parcel.ReadString16()); // country
232 }
233
OrderParcel(MessageParcel & in,MessageParcel & out,GeoCodeType requestType,std::string bundleName)234 void GeoConvertRequest::OrderParcel(
235 MessageParcel& in, MessageParcel& out, GeoCodeType requestType, std::string bundleName)
236 {
237 if (requestType == GeoCodeType::REQUEST_REVERSE_GEOCODE) {
238 out.WriteString16(in.ReadString16()); // locale
239 out.WriteDouble(in.ReadDouble()); // latitude
240 out.WriteDouble(in.ReadDouble()); // longitude
241 out.WriteInt32(in.ReadInt32()); // maxItems
242 } else {
243 out.WriteString16(in.ReadString16()); // locale
244 out.WriteString16(in.ReadString16()); // description
245 out.WriteInt32(in.ReadInt32()); // maxItems
246 out.WriteDouble(in.ReadDouble()); // minLatitude
247 out.WriteDouble(in.ReadDouble()); // minLongitude
248 out.WriteDouble(in.ReadDouble()); // maxLatitude
249 out.WriteDouble(in.ReadDouble()); // maxLongitude
250 }
251 auto transId = in.ReadString16();
252 auto country = in.ReadString16();
253 auto callback = in.ReadRemoteObject();
254 out.WriteString16(Str8ToStr16(bundleName)); // bundleName
255 out.WriteRemoteObject(callback); // callback
256 out.WriteString16(transId); // transId
257 out.WriteString16(country); // country
258 }
259 } // namespace Location
260 } // namespace OHOS
261 #endif
262