1 /*
2 * Copyright (c) 2021-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
16 #include <iostream>
17 #include <vector>
18 #include "iservice_registry.h"
19 #include "system_ability_definition.h"
20 #include "datashare_helper.h"
21 #include "datashare_predicates.h"
22 #include "abs_shared_result_set.h"
23 #include "values_bucket.h"
24 #include "uri.h"
25 #include "resource_manager.h"
26 #include "nativetoken_kit.h"
27 #include "accesstoken_kit.h"
28 #include "token_setproc.h"
29 #include "global_params_data.h"
30 #include "sim_data.h"
31 #include "sms_mms_data.h"
32 #include "pdp_profile_data.h"
33 #include "opkey_data.h"
34 #include "data_storage_log_wrapper.h"
35
36 namespace OHOS {
37 namespace Telephony {
38 const int PERMS_NUM = 4;
39 const int NUM_MATCH_SHORT_EIGHT = 8;
40 const int NUM_MATCH_ELEVEN = 11;
41 using CmdProcessFunc = int (*)(std::shared_ptr<DataShare::DataShareHelper> helper);
42 std::map<char, CmdProcessFunc> g_simFuncMap;
43 std::map<char, CmdProcessFunc> g_smsFuncMap;
44 std::map<char, CmdProcessFunc> g_pdpProfileFuncMap;
45 std::map<char, CmdProcessFunc> g_opKeyFuncMap;
46 std::map<char, CmdProcessFunc> g_globalParamsFuncMap;
47 std::shared_ptr<DataShare::DataShareHelper> simDataHelper = nullptr;
48 std::shared_ptr<DataShare::DataShareHelper> smsDataHelper = nullptr;
49 std::shared_ptr<DataShare::DataShareHelper> pdpProfileDataHelper = nullptr;
50 std::shared_ptr<DataShare::DataShareHelper> opKeyDataHelper = nullptr;
51 std::shared_ptr<DataShare::DataShareHelper> globalParamsDataHelper = nullptr;
CreateDataShareHelper(int32_t systemAbilityId,std::string & uri)52 std::shared_ptr<DataShare::DataShareHelper> CreateDataShareHelper(
53 int32_t systemAbilityId, std::string &uri)
54 {
55 DATA_STORAGE_LOGI("DataSimRdbHelper::CreateDataShareHelper ");
56 auto saManager = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
57 if (saManager == nullptr) {
58 DATA_STORAGE_LOGE("DataSimRdbHelper Get system ability mgr failed.");
59 return nullptr;
60 }
61 auto remoteObj = saManager->GetSystemAbility(systemAbilityId);
62 if (remoteObj == nullptr) {
63 DATA_STORAGE_LOGE("DataSimRdbHelper GetSystemAbility Service Failed.");
64 return nullptr;
65 }
66 return DataShare::DataShareHelper::Creator(remoteObj, uri);
67 }
68
ApplyPermission()69 void ApplyPermission()
70 {
71 const char *perms[PERMS_NUM] = {
72 "ohos.permission.READ_MESSAGES",
73 "ohos.permission.ANSWER_CALL",
74 "ohos.permission.SET_TELEPHONY_STATE",
75 "ohos.permission.GET_TELEPHONY_STATE",
76 };
77
78 NativeTokenInfoParams testCallInfoParams = {
79 .dcapsNum = 0,
80 .permsNum = PERMS_NUM,
81 .aclsNum = 0,
82 .dcaps = nullptr,
83 .perms = perms,
84 .acls = nullptr,
85 .processName = "tel_telephony_data_test",
86 .aplStr = "system_basic",
87 };
88 Security::AccessToken::AccessTokenID currentID_ = GetAccessTokenId(&testCallInfoParams);
89 SetSelfTokenID(currentID_);
90 Security::AccessToken::AccessTokenKit::ReloadNativeTokenInfo();
91 }
92
RemovePermission()93 void RemovePermission()
94 {
95 return;
96 }
97
CreateSimHelper()98 std::shared_ptr<DataShare::DataShareHelper> CreateSimHelper()
99 {
100 if (simDataHelper == nullptr) {
101 std::string uri(SIM_URI);
102 if (uri.data() == nullptr) {
103 DATA_STORAGE_LOGE("CreateSimHelper uri is nullptr");
104 return nullptr;
105 }
106 simDataHelper = CreateDataShareHelper(TELEPHONY_CORE_SERVICE_SYS_ABILITY_ID, uri);
107 }
108 return simDataHelper;
109 }
110
CreateSmsHelper()111 std::shared_ptr<DataShare::DataShareHelper> CreateSmsHelper()
112 {
113 if (smsDataHelper == nullptr) {
114 std::string uri(SMS_MMS_URI);
115 if (uri.data() == nullptr) {
116 DATA_STORAGE_LOGE("CreateSmsHelper uri is nullptr");
117 return nullptr;
118 }
119 smsDataHelper = CreateDataShareHelper(TELEPHONY_SMS_MMS_SYS_ABILITY_ID, uri);
120 }
121 return smsDataHelper;
122 }
123
CreatePdpProfileHelper()124 std::shared_ptr<DataShare::DataShareHelper> CreatePdpProfileHelper()
125 {
126 if (pdpProfileDataHelper == nullptr) {
127 std::string uri(PDP_PROFILE_URI);
128 if (uri.data() == nullptr) {
129 DATA_STORAGE_LOGE("CreatePdpProfileHelper uri is nullptr");
130 return nullptr;
131 }
132 pdpProfileDataHelper = CreateDataShareHelper(TELEPHONY_SMS_MMS_SYS_ABILITY_ID, uri);
133 }
134 return pdpProfileDataHelper;
135 }
136
CreateOpKeyHelper()137 std::shared_ptr<DataShare::DataShareHelper> CreateOpKeyHelper()
138 {
139 if (opKeyDataHelper == nullptr) {
140 std::string uri(OPKEY_URI);
141 if (uri.data() == nullptr) {
142 DATA_STORAGE_LOGE("CreateOpKeyHelper uri is nullptr");
143 return nullptr;
144 }
145 opKeyDataHelper = CreateDataShareHelper(TELEPHONY_SMS_MMS_SYS_ABILITY_ID, uri);
146 }
147 return opKeyDataHelper;
148 }
149
CreateGlobalParamsHelper()150 std::shared_ptr<DataShare::DataShareHelper> CreateGlobalParamsHelper()
151 {
152 if (globalParamsDataHelper == nullptr) {
153 std::string uri(GLOBAL_PARAMS_URI);
154 if (uri.data() == nullptr) {
155 DATA_STORAGE_LOGE("CreateGlobalParamsHelper uri is nullptr");
156 return nullptr;
157 }
158 globalParamsDataHelper = CreateDataShareHelper(TELEPHONY_SMS_MMS_SYS_ABILITY_ID, uri);
159 }
160 return globalParamsDataHelper;
161 }
162
SimSetCardByType(std::shared_ptr<DataShare::DataShareHelper> helper)163 int SimSetCardByType(std::shared_ptr<DataShare::DataShareHelper> helper)
164 {
165 Uri uri("datashare:///com.ohos.simability/sim/sim_info/set_card");
166 DataShare::DataShareValuesBucket value;
167 DataShare::DataSharePredicates predicates;
168 value.Put(SimData::SIM_ID, 1);
169 value.Put(SimData::CARD_TYPE, 1);
170 return helper->Update(uri, predicates, value);
171 }
172
OpKeyInsert(std::shared_ptr<DataShare::DataShareHelper> helper)173 int OpKeyInsert(std::shared_ptr<DataShare::DataShareHelper> helper)
174 {
175 std::string opkey = "1435";
176 Uri uri("datashare:///com.ohos.opkeyability/opkey/opkey_info");
177 DataShare::DataShareValuesBucket value;
178 value.Put(OpKeyData::ID, 1);
179 value.Put(OpKeyData::MCCMNC, "46000");
180 value.Put(OpKeyData::GID1, "gid1");
181 value.Put(OpKeyData::OPERATOR_NAME, "Mobile");
182 value.Put(OpKeyData::OPERATOR_KEY, opkey);
183 return helper->Insert(uri, value);
184 }
185
OpKeyUpdate(std::shared_ptr<DataShare::DataShareHelper> helper)186 int OpKeyUpdate(std::shared_ptr<DataShare::DataShareHelper> helper)
187 {
188 Uri uri("datashare:///com.ohos.opkeyability/opkey/opkey_info");
189 DataShare::DataShareValuesBucket values;
190 values.Put(OpKeyData::GID1, "gidd1");
191 DataShare::DataSharePredicates predicates;
192 predicates.EqualTo(OpKeyData::OPERATOR_KEY, "1435");
193 return helper->Update(uri, predicates, values);
194 }
195
OpKeySelect(std::shared_ptr<DataShare::DataShareHelper> helper)196 int OpKeySelect(std::shared_ptr<DataShare::DataShareHelper> helper)
197 {
198 DATA_STORAGE_LOGI("OpKeySelect --- ");
199 Uri uri("datashare:///com.ohos.opkeyability/opkey/opkey_info");
200 std::vector<std::string> columns;
201 DataShare::DataSharePredicates predicates;
202 std::shared_ptr<DataShare::DataShareResultSet> resultSet = helper->Query(uri, predicates, columns);
203 if (resultSet != nullptr) {
204 int count;
205 resultSet->GetRowCount(count);
206 std::cout << "count is " << count;
207 return count;
208 }
209 return -1;
210 }
211
OpKeyDelete(std::shared_ptr<DataShare::DataShareHelper> helper)212 int OpKeyDelete(std::shared_ptr<DataShare::DataShareHelper> helper)
213 {
214 Uri uri("datashare:///com.ohos.opkeyability/opkey/opkey_info");
215 DataShare::DataSharePredicates predicates;
216 predicates.EqualTo(OpKeyData::ID, "1");
217 return helper->Delete(uri, predicates);
218 }
219
SimInsert(std::shared_ptr<DataShare::DataShareHelper> helper)220 int SimInsert(std::shared_ptr<DataShare::DataShareHelper> helper)
221 {
222 Uri uri("datashare:///com.ohos.simability/sim/sim_info");
223 DataShare::DataShareValuesBucket value;
224 value.Put(SimData::SIM_ID, 1);
225 value.Put(SimData::PHONE_NUMBER, "134xxxxxxxx");
226 value.Put(SimData::ICC_ID, "icc_id");
227 value.Put(SimData::CARD_ID, "card_id");
228 return helper->Insert(uri, value);
229 }
230
SimUpdate(std::shared_ptr<DataShare::DataShareHelper> helper)231 int SimUpdate(std::shared_ptr<DataShare::DataShareHelper> helper)
232 {
233 Uri uri("datashare:///com.ohos.simability/sim/sim_info");
234 std::string slot = std::to_string(1);
235 DataShare::DataShareValuesBucket values;
236 values.Put(SimData::SHOW_NAME, "China Mobile");
237 DataShare::DataSharePredicates predicates;
238 predicates.EqualTo(SimData::SIM_ID, slot);
239 return helper->Update(uri, predicates, values);
240 }
241
SimSelect(std::shared_ptr<DataShare::DataShareHelper> helper)242 int SimSelect(std::shared_ptr<DataShare::DataShareHelper> helper)
243 {
244 Uri uri("datashare:///com.ohos.simability/sim/sim_info");
245 std::vector<std::string> columns;
246 DataShare::DataSharePredicates predicates;
247 std::shared_ptr<DataShare::DataShareResultSet> resultSet = helper->Query(uri, predicates, columns);
248 if (resultSet != nullptr) {
249 int count;
250 resultSet->GetRowCount(count);
251 return count;
252 }
253 return -1;
254 }
255
SimDelete(std::shared_ptr<DataShare::DataShareHelper> helper)256 int SimDelete(std::shared_ptr<DataShare::DataShareHelper> helper)
257 {
258 Uri uri("datashare:///com.ohos.simability/sim/sim_info");
259 DataShare::DataSharePredicates predicates;
260 predicates.EqualTo(SimData::SIM_ID, "1");
261 return helper->Delete(uri, predicates);
262 }
263
SmsBatchInsert(std::shared_ptr<DataShare::DataShareHelper> helper)264 int SmsBatchInsert(std::shared_ptr<DataShare::DataShareHelper> helper)
265 {
266 Uri uri("datashare:///com.ohos.smsmmsability/sms_mms/sms_mms_info");
267 std::vector<DataShare::DataShareValuesBucket> values;
268 DataShare::DataShareValuesBucket value;
269 int batchNum = 100;
270 for (int i = 0; i < batchNum; i++) {
271 value.Put(SmsMmsInfo::RECEIVER_NUMBER, "134xxxxxxxx");
272 value.Put(SmsMmsInfo::MSG_CONTENT, "The first test text message content");
273 value.Put(SmsMmsInfo::GROUP_ID, 1);
274 values.push_back(value);
275 value.Clear();
276 }
277 return helper->BatchInsert(uri, values);
278 }
279
SmsInsert(std::shared_ptr<DataShare::DataShareHelper> helper)280 int SmsInsert(std::shared_ptr<DataShare::DataShareHelper> helper)
281 {
282 Uri uri("datashare:///com.ohos.smsmmsability/sms_mms/sms_mms_info");
283 DataShare::DataShareValuesBucket value;
284 value.Put(SmsMmsInfo::RECEIVER_NUMBER, "134xxxxxxxx");
285 value.Put(SmsMmsInfo::MSG_CONTENT, "The first test text message content");
286 value.Put(SmsMmsInfo::GROUP_ID, 1);
287 return helper->Insert(uri, value);
288 }
289
SmsUpdate(std::shared_ptr<DataShare::DataShareHelper> helper)290 int SmsUpdate(std::shared_ptr<DataShare::DataShareHelper> helper)
291 {
292 Uri uri("datashare:///com.ohos.smsmmsability/sms_mms/sms_mms_info");
293 DataShare::DataShareValuesBucket values;
294 values.Put(SmsMmsInfo::MSG_CONTENT, "The second test text message content");
295 DataShare::DataSharePredicates predicates;
296 predicates.EqualTo(SmsMmsInfo::MSG_ID, "1");
297 return helper->Update(uri, predicates, values);
298 }
299
SmsSelect(std::shared_ptr<DataShare::DataShareHelper> helper)300 int SmsSelect(std::shared_ptr<DataShare::DataShareHelper> helper)
301 {
302 Uri uri("datashare:///com.ohos.smsmmsability/sms_mms/sms_mms_info");
303 std::vector<std::string> columns;
304 DataShare::DataSharePredicates predicates;
305 std::shared_ptr<DataShare::DataShareResultSet> resultSet = helper->Query(uri, predicates, columns);
306 if (resultSet != nullptr) {
307 int count;
308 resultSet->GetRowCount(count);
309 std::cout << "count is " << count;
310 return count;
311 }
312 return -1;
313 }
314
SmsDelete(std::shared_ptr<DataShare::DataShareHelper> helper)315 int SmsDelete(std::shared_ptr<DataShare::DataShareHelper> helper)
316 {
317 Uri uri("datashare:///com.ohos.smsmmsability/sms_mms/sms_mms_info");
318 DataShare::DataSharePredicates predicates;
319 predicates.EqualTo(SmsMmsInfo::MSG_ID, "1");
320 return helper->Delete(uri, predicates);
321 }
322
PdpProfileReset(std::shared_ptr<DataShare::DataShareHelper> helper)323 int PdpProfileReset(std::shared_ptr<DataShare::DataShareHelper> helper)
324 {
325 Uri uri("datashare:///com.ohos.pdpprofileability/net/pdp_profile/reset");
326 DataShare::DataShareValuesBucket values;
327 DataShare::DataSharePredicates predicates;
328 return helper->Update(uri, predicates, values);
329 }
330
PdpProfileInsert(std::shared_ptr<DataShare::DataShareHelper> helper)331 int PdpProfileInsert(std::shared_ptr<DataShare::DataShareHelper> helper)
332 {
333 Uri uri("datashare:///com.ohos.pdpprofileability/net/pdp_profile");
334 DataShare::DataShareValuesBucket value;
335 value.Put(PdpProfileData::PROFILE_NAME, "frist_profile_name");
336 value.Put(PdpProfileData::MCC, "460");
337 value.Put(PdpProfileData::MNC, "91");
338 return helper->Insert(uri, value);
339 }
340
PdpProfileUpdate(std::shared_ptr<DataShare::DataShareHelper> helper)341 int PdpProfileUpdate(std::shared_ptr<DataShare::DataShareHelper> helper)
342 {
343 Uri uri("datashare:///com.ohos.pdpprofileability/net/pdp_profile");
344 DataShare::DataShareValuesBucket values;
345 values.Put(PdpProfileData::PROFILE_NAME, "update_profile_name");
346 DataShare::DataSharePredicates predicates;
347 predicates.EqualTo(PdpProfileData::PROFILE_ID, "1");
348 return helper->Update(uri, predicates, values);
349 }
350
PdpProfileDelete(std::shared_ptr<DataShare::DataShareHelper> helper)351 int PdpProfileDelete(std::shared_ptr<DataShare::DataShareHelper> helper)
352 {
353 Uri uri("datashare:///com.ohos.pdpprofileability/net/pdp_profile");
354 DataShare::DataSharePredicates predicates;
355 predicates.EqualTo(PdpProfileData::PROFILE_ID, "1");
356 return helper->Delete(uri, predicates);
357 }
358
PdpProfileSelect(std::shared_ptr<DataShare::DataShareHelper> helper)359 int PdpProfileSelect(std::shared_ptr<DataShare::DataShareHelper> helper)
360 {
361 Uri uri("datashare:///com.ohos.pdpprofileability/net/pdp_profile");
362 std::vector<std::string> columns;
363 DataShare::DataSharePredicates predicates;
364 std::shared_ptr<DataShare::DataShareResultSet> resultSet = helper->Query(uri, predicates, columns);
365 if (resultSet != nullptr) {
366 int count;
367 resultSet->GetRowCount(count);
368 std::cout << "count is " << count;
369 return count;
370 }
371 return -1;
372 }
373
GlobalParamsNumMatchInsert(std::shared_ptr<DataShare::DataShareHelper> helper)374 int GlobalParamsNumMatchInsert(std::shared_ptr<DataShare::DataShareHelper> helper)
375 {
376 std::cout << " GlobalParamsNumMatchInsert " << std::endl;
377 DATA_STORAGE_LOGI("GlobalParamsNumMatchInsert ---");
378 Uri uri("datashare:///com.ohos.globalparamsability/globalparams/num_matchs");
379 DataShare::DataShareValuesBucket value;
380 value.Put(NumMatchData::NAME, "frist_numMatch_name");
381 value.Put(NumMatchData::MCC, "460");
382 value.Put(NumMatchData::MNC, "91");
383 value.Put(NumMatchData::MCCMNC, "46091");
384 value.Put(NumMatchData::NUM_MATCH, NUM_MATCH_ELEVEN);
385 value.Put(NumMatchData::NUM_MATCH_SHORT, NUM_MATCH_SHORT_EIGHT);
386 int ret = helper->Insert(uri, value);
387 std::cout << "Result: " << ret << std::endl;
388 return ret;
389 }
390
GlobalParamsNumMatchUpdate(std::shared_ptr<DataShare::DataShareHelper> helper)391 int GlobalParamsNumMatchUpdate(std::shared_ptr<DataShare::DataShareHelper> helper)
392 {
393 std::cout << " GlobalParamsNumMatchUpdate " << std::endl;
394 DATA_STORAGE_LOGI("GlobalParamsNumMatchUpdate ---");
395 Uri uri("datashare:///com.ohos.globalparamsability/globalparams/num_matchs");
396 DataShare::DataShareValuesBucket values;
397 values.Put(NumMatchData::NAME, "update_name");
398 DataShare::DataSharePredicates predicates;
399 predicates.EqualTo(NumMatchData::MCCMNC, "46091");
400 int ret = helper->Update(uri, predicates, values);
401 std::cout << "Result: " << ret << std::endl;
402 return ret;
403 }
404
GlobalParamsNumMatchDelete(std::shared_ptr<DataShare::DataShareHelper> helper)405 int GlobalParamsNumMatchDelete(std::shared_ptr<DataShare::DataShareHelper> helper)
406 {
407 std::cout << " GlobalParamsNumMatchDelete " << std::endl;
408 DATA_STORAGE_LOGI("GlobalParamsNumMatchDelete ---");
409 Uri uri("datashare:///com.ohos.globalparamsability/globalparams/num_matchs");
410 DataShare::DataSharePredicates predicates;
411 predicates.EqualTo(NumMatchData::MCCMNC, "46091");
412 int ret = helper->Delete(uri, predicates);
413 std::cout << "Result: " << ret << std::endl;
414 return ret;
415 }
416
DumpNumMatchData(std::shared_ptr<DataShare::DataShareResultSet> resultSet)417 static void DumpNumMatchData(std::shared_ptr<DataShare::DataShareResultSet> resultSet)
418 {
419 if (resultSet == nullptr) {
420 std::cout << "resultSet is NULL, count = 0." << std::endl;
421 return;
422 }
423 int count;
424 resultSet->GetRowCount(count);
425 std::cout << "Dump NumMatchTable: count is " << count << std::endl;
426 for (int row = 0; row < count; row++) {
427 int columnIndex;
428 int id;
429 int match_long;
430 int match_short;
431 std::string name;
432 std::string mcc;
433 std::string mnc;
434 std::string numeric;
435 resultSet->GoToRow(row);
436 resultSet->GetColumnIndex(NumMatchData::ID, columnIndex);
437 resultSet->GetInt(columnIndex, id);
438 resultSet->GetColumnIndex(NumMatchData::NUM_MATCH, columnIndex);
439 resultSet->GetInt(columnIndex, match_long);
440 resultSet->GetColumnIndex(NumMatchData::NUM_MATCH_SHORT, columnIndex);
441 resultSet->GetInt(columnIndex, match_short);
442 resultSet->GetColumnIndex(NumMatchData::NAME, columnIndex);
443 resultSet->GetString(columnIndex, name);
444 resultSet->GetColumnIndex(NumMatchData::MCC, columnIndex);
445 resultSet->GetString(columnIndex, mcc);
446 resultSet->GetColumnIndex(NumMatchData::MNC, columnIndex);
447 resultSet->GetString(columnIndex, mnc);
448 resultSet->GetColumnIndex(NumMatchData::MCCMNC, columnIndex);
449 resultSet->GetString(columnIndex, numeric);
450 std::cout << " Row: " << row << ", id: " << id << ", name: " << name << ", mcc: " << mcc
451 << ", mnc: " << mnc << ", numeric: " << numeric << ", num_match: " << match_long
452 << ", num_match_short: " << match_short << std::endl;
453 }
454 }
455
GlobalParamsNumMatchSelect(std::shared_ptr<DataShare::DataShareHelper> helper)456 int GlobalParamsNumMatchSelect(std::shared_ptr<DataShare::DataShareHelper> helper)
457 {
458 std::cout << " GlobalParamsNumMatchSelect " << std::endl;
459 DATA_STORAGE_LOGI("GlobalParamsNumMatchSelect ---");
460 Uri uri("datashare:///com.ohos.globalparamsability/globalparams/num_matchs");
461 std::vector<std::string> columns;
462 DataShare::DataSharePredicates predicates;
463 std::shared_ptr<DataShare::DataShareResultSet> resultSet = helper->Query(uri, predicates, columns);
464 if (resultSet != nullptr) {
465 int count;
466 resultSet->GetRowCount(count);
467 std::cout << "count is " << count;
468 DumpNumMatchData(resultSet);
469 resultSet->Close();
470 std::cout << "Result: " << count << std::endl;
471 return count;
472 }
473 std::cout << "Result: -1" << std::endl;
474 return -1;
475 }
476
477 std::vector<std::string> mccmncArray = {"46021", "46091", "23204", "25013", "99998", "330110",
478 "63402", "310800", "60402", "60203"};
479
GlobalParamsNumMatchSpecifiedQuery(std::shared_ptr<DataShare::DataShareHelper> helper)480 int GlobalParamsNumMatchSpecifiedQuery(std::shared_ptr<DataShare::DataShareHelper> helper)
481 {
482 std::cout << " GlobalParamsNumMatchSpecifiedQuery " << std::endl;
483 DATA_STORAGE_LOGI("GlobalParamsNumMatchSpecifiedQuery ---");
484 Uri uri("datashare:///com.ohos.globalparamsability/globalparams/num_matchs");
485 int vSize = mccmncArray.size();
486 for (int i = 0; i < vSize; i++) {
487 std::cout << " SpecifiedQuery: " << mccmncArray[i] << std::endl;
488 std::vector<std::string> columns;
489 DataShare::DataSharePredicates predicates;
490 predicates.EqualTo(NumMatchData::MCCMNC, mccmncArray[i]);
491 std::shared_ptr<DataShare::DataShareResultSet> resultSet = helper->Query(uri, predicates, columns);
492 if (resultSet != nullptr) {
493 int count;
494 resultSet->GetRowCount(count);
495 std::cout << "count is " << count << std::endl;
496 DumpNumMatchData(resultSet);
497 resultSet->Close();
498 } else {
499 std::cout << "Result: No found!" << std::endl;
500 }
501 }
502 return 0;
503 }
GlobalEccInsert(std::shared_ptr<DataShare::DataShareHelper> helper)504 int GlobalEccInsert(std::shared_ptr<DataShare::DataShareHelper> helper)
505 {
506 Uri uri("datashare:///com.ohos.globalparamsability/globalparams/ecc_data");
507 DataShare::DataShareValuesBucket value;
508 value.Put(EccData::MCC, "460");
509 value.Put(EccData::MNC, "01");
510 value.Put(EccData::NUMERIC, "46001");
511 return helper->Insert(uri, value);
512 }
513
GlobalEccUpdate(std::shared_ptr<DataShare::DataShareHelper> helper)514 int GlobalEccUpdate(std::shared_ptr<DataShare::DataShareHelper> helper)
515 {
516 Uri uri("datashare:///com.ohos.globalparamsability/globalparams/ecc_data");
517 DataShare::DataShareValuesBucket values;
518 values.Put(EccData::NAME, "46001");
519 DataShare::DataSharePredicates predicates;
520 predicates.EqualTo(EccData::ID, "1");
521 return helper->Update(uri, predicates, values);
522 }
523
GlobalEccDelete(std::shared_ptr<DataShare::DataShareHelper> helper)524 int GlobalEccDelete(std::shared_ptr<DataShare::DataShareHelper> helper)
525 {
526 Uri uri("datashare:///com.ohos.globalparamsability/globalparams/ecc_data");
527 DataShare::DataSharePredicates predicates;
528 predicates.EqualTo(EccData::ID, "1");
529 return helper->Delete(uri, predicates);
530 }
531
GlobalEccSelect(std::shared_ptr<DataShare::DataShareHelper> helper)532 int GlobalEccSelect(std::shared_ptr<DataShare::DataShareHelper> helper)
533 {
534 Uri uri("datashare:///com.ohos.globalparamsability/globalparams/ecc_data");
535 std::vector<std::string> columns;
536 DataShare::DataSharePredicates predicates;
537 std::shared_ptr<DataShare::DataShareResultSet> resultSet = helper->Query(uri, predicates, columns);
538 if (resultSet != nullptr) {
539 int count;
540 resultSet->GetRowCount(count);
541 std::cout << "count is " << count;
542 return count;
543 }
544 return -1;
545 }
546
Init()547 void Init()
548 {
549 g_simFuncMap['q'] = SimInsert;
550 g_simFuncMap['w'] = SimUpdate;
551 g_simFuncMap['e'] = SimSelect;
552 g_simFuncMap['r'] = SimDelete;
553 g_simFuncMap['o'] = SimSetCardByType;
554 g_smsFuncMap['t'] = SmsInsert;
555 g_smsFuncMap['y'] = SmsUpdate;
556 g_smsFuncMap['u'] = SmsSelect;
557 g_smsFuncMap['i'] = SmsDelete;
558 g_smsFuncMap['p'] = SmsBatchInsert;
559 g_pdpProfileFuncMap['a'] = PdpProfileInsert;
560 g_pdpProfileFuncMap['s'] = PdpProfileUpdate;
561 g_pdpProfileFuncMap['d'] = PdpProfileDelete;
562 g_pdpProfileFuncMap['f'] = PdpProfileSelect;
563 g_pdpProfileFuncMap['h'] = PdpProfileReset;
564 g_opKeyFuncMap['x'] = OpKeyInsert;
565 g_opKeyFuncMap['c'] = OpKeyUpdate;
566 g_opKeyFuncMap['v'] = OpKeySelect;
567 g_opKeyFuncMap['b'] = OpKeyDelete;
568 g_globalParamsFuncMap['1'] = GlobalParamsNumMatchInsert;
569 g_globalParamsFuncMap['2'] = GlobalParamsNumMatchUpdate;
570 g_globalParamsFuncMap['3'] = GlobalParamsNumMatchSelect;
571 g_globalParamsFuncMap['4'] = GlobalParamsNumMatchDelete;
572 g_globalParamsFuncMap['5'] = GlobalParamsNumMatchSpecifiedQuery;
573 g_globalParamsFuncMap['j'] = GlobalEccInsert;
574 g_globalParamsFuncMap['k'] = GlobalEccUpdate;
575 g_globalParamsFuncMap['l'] = GlobalEccSelect;
576 g_globalParamsFuncMap['m'] = GlobalEccDelete;
577 ApplyPermission();
578 }
579
VerifyCmd(char inputCMD,std::shared_ptr<DataShare::DataShareHelper> & helper)580 int VerifyCmd(char inputCMD, std::shared_ptr<DataShare::DataShareHelper> &helper)
581 {
582 auto itFunSim = g_simFuncMap.find(inputCMD);
583 if (itFunSim != g_simFuncMap.end()) {
584 auto memberFunc = itFunSim->second;
585 if (memberFunc != nullptr) {
586 helper = CreateSimHelper();
587 if (helper != nullptr) {
588 (*memberFunc)(helper);
589 }
590 return 0;
591 }
592 }
593 auto itFunSms = g_smsFuncMap.find(inputCMD);
594 if (itFunSms != g_smsFuncMap.end()) {
595 auto memberFunc = itFunSms->second;
596 if (memberFunc != nullptr) {
597 helper = CreateSmsHelper();
598 if (helper != nullptr) {
599 (*memberFunc)(helper);
600 }
601 return 0;
602 }
603 }
604 auto itFunPdpProfile = g_pdpProfileFuncMap.find(inputCMD);
605 if (itFunPdpProfile != g_pdpProfileFuncMap.end()) {
606 auto memberFunc = itFunPdpProfile->second;
607 if (memberFunc != nullptr) {
608 helper = CreatePdpProfileHelper();
609 if (helper != nullptr) {
610 (*memberFunc)(helper);
611 }
612 return 0;
613 }
614 }
615 auto itFunOpKey = g_opKeyFuncMap.find(inputCMD);
616 if (itFunOpKey != g_opKeyFuncMap.end()) {
617 auto memberFunc = itFunOpKey->second;
618 if (memberFunc != nullptr) {
619 helper = CreateOpKeyHelper();
620 if (helper != nullptr) {
621 (*memberFunc)(helper);
622 }
623 return 0;
624 }
625 }
626 auto itFunGlobalEcc = g_globalParamsFuncMap.find(inputCMD);
627 if (itFunGlobalEcc != g_globalParamsFuncMap.end()) {
628 auto memberFunc = itFunGlobalEcc->second;
629 if (memberFunc != nullptr) {
630 helper = CreateGlobalParamsHelper();
631 if (helper != nullptr) {
632 (*memberFunc)(helper);
633 }
634 return 0;
635 }
636 }
637 auto itFunGlobalParams = g_globalParamsFuncMap.find(inputCMD);
638 if (itFunGlobalParams != g_globalParamsFuncMap.end()) {
639 auto memberFunc = itFunGlobalParams->second;
640 if (memberFunc != nullptr) {
641 helper = CreateGlobalParamsHelper();
642 if (helper != nullptr) {
643 (*memberFunc)(helper);
644 }
645 return 0;
646 }
647 }
648 return -1;
649 }
650
ResourceTest()651 void ResourceTest()
652 {
653 OHOS::Global::Resource::ResourceManager *rm = OHOS::Global::Resource::CreateResourceManager();
654 std::string outValue;
655 rm->GetStringByName("hello_ceshi", outValue);
656 DATA_STORAGE_LOGI("DataSimRdbHelper::ResourceTest outValue = %{public}s", outValue.c_str());
657 outValue = "";
658 rm->GetStringByName("hello_telephony", outValue);
659 DATA_STORAGE_LOGI("DataSimRdbHelper::ResourceTest outValue1 = %{public}s", outValue.c_str());
660 free(rm);
661 rm = nullptr;
662 }
663
PrintfHint()664 void PrintfHint()
665 {
666 printf("\n**********Unit Test Start**********\n"
667 "usage: please input a cmd num:\n"
668 "q:SimInsert()\n"
669 "w:SimUpdate()\n"
670 "e:SimSelect()\n"
671 "r:SimDelete()\n"
672 "o:SimSetCardByType()\n"
673 "t:SmsInsert()\n"
674 "y:SmsUpdate()\n"
675 "u:SmsSelect()\n"
676 "i:SmsDelete()\n"
677 "p:SmsBatchInsert()\n"
678 "a:PdpProfileInsert()\n"
679 "s:PdpProfileUpdate()\n"
680 "d:PdpProfileDelete()\n"
681 "f:PdpProfileSelect()\n"
682 "h:PdpProfileReset()\n"
683 "g:ResourceTest()\n"
684 "x:OpKeyInsert()\n"
685 "c:OpKeyUpdate()\n"
686 "v:OpKeySelect()\n"
687 "b:OpKeyDelete()\n"
688 "0:help\n"
689 "1:GlobalParamsNumMatchInsert()\n"
690 "2:GlobalParamsNumMatchUpdate()\n"
691 "3:GlobalParamsNumMatchSelect()\n"
692 "4:GlobalParamsNumMatchDelete()\n"
693 "5:GlobalParamsNumMatchSpecifiedQuery()\n"
694 "j:GlobalInsert()\n"
695 "k:GlobalUpdate()\n"
696 "l:GlobalSelect()\n"
697 "m:GlobalDelete()\n"
698 "z:exit\n"
699 "***********************************\n"
700 "your choice: ");
701 }
702
Looper()703 void Looper()
704 {
705 char inputCMD = '0';
706 bool loopFlag = true;
707 std::shared_ptr<DataShare::DataShareHelper> helper = nullptr;
708 Init();
709 PrintfHint();
710 while (loopFlag) {
711 PrintfHint();
712 std::cin >> inputCMD;
713 int ret = VerifyCmd(inputCMD, helper);
714 if (ret == 0) {
715 continue;
716 }
717 switch (inputCMD) {
718 case '0': {
719 PrintfHint();
720 break;
721 }
722 case 'g': {
723 ResourceTest();
724 break;
725 }
726 case 'z': {
727 loopFlag = false;
728 break;
729 }
730 default: {
731 break;
732 }
733 }
734 }
735 RemovePermission();
736 }
737 } // namespace Telephony
738 } // namespace OHOS
739
740 using namespace OHOS;
main()741 int main()
742 {
743 Telephony::Looper();
744 return 0;
745 }
746