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 value.Put(SimData::IS_ESIM, "0");
229 value.Put(SimData::SIM_LABEL_INDEX, 1);
230 value.Put(SimData::OPERATOR_NAME, "中国联通");
231 return helper->Insert(uri, value);
232 }
233
SimUpdate(std::shared_ptr<DataShare::DataShareHelper> helper)234 int SimUpdate(std::shared_ptr<DataShare::DataShareHelper> helper)
235 {
236 Uri uri("datashare:///com.ohos.simability/sim/sim_info");
237 std::string slot = std::to_string(1);
238 DataShare::DataShareValuesBucket values;
239 values.Put(SimData::SHOW_NAME, "China Mobile");
240 DataShare::DataSharePredicates predicates;
241 predicates.EqualTo(SimData::SIM_ID, slot);
242 return helper->Update(uri, predicates, values);
243 }
244
SimSelect(std::shared_ptr<DataShare::DataShareHelper> helper)245 int SimSelect(std::shared_ptr<DataShare::DataShareHelper> helper)
246 {
247 Uri uri("datashare:///com.ohos.simability/sim/sim_info");
248 std::vector<std::string> columns;
249 DataShare::DataSharePredicates predicates;
250 std::shared_ptr<DataShare::DataShareResultSet> resultSet = helper->Query(uri, predicates, columns);
251 if (resultSet != nullptr) {
252 int count;
253 resultSet->GetRowCount(count);
254 return count;
255 }
256 return -1;
257 }
258
SimDelete(std::shared_ptr<DataShare::DataShareHelper> helper)259 int SimDelete(std::shared_ptr<DataShare::DataShareHelper> helper)
260 {
261 Uri uri("datashare:///com.ohos.simability/sim/sim_info");
262 DataShare::DataSharePredicates predicates;
263 predicates.EqualTo(SimData::SIM_ID, "1");
264 return helper->Delete(uri, predicates);
265 }
266
SmsBatchInsert(std::shared_ptr<DataShare::DataShareHelper> helper)267 int SmsBatchInsert(std::shared_ptr<DataShare::DataShareHelper> helper)
268 {
269 Uri uri("datashare:///com.ohos.smsmmsability/sms_mms/sms_mms_info");
270 std::vector<DataShare::DataShareValuesBucket> values;
271 DataShare::DataShareValuesBucket value;
272 int batchNum = 100;
273 for (int i = 0; i < batchNum; i++) {
274 value.Put(SmsMmsInfo::RECEIVER_NUMBER, "134xxxxxxxx");
275 value.Put(SmsMmsInfo::MSG_CONTENT, "The first test text message content");
276 value.Put(SmsMmsInfo::GROUP_ID, 1);
277 values.push_back(value);
278 value.Clear();
279 }
280 return helper->BatchInsert(uri, values);
281 }
282
SmsInsert(std::shared_ptr<DataShare::DataShareHelper> helper)283 int SmsInsert(std::shared_ptr<DataShare::DataShareHelper> helper)
284 {
285 Uri uri("datashare:///com.ohos.smsmmsability/sms_mms/sms_mms_info");
286 DataShare::DataShareValuesBucket value;
287 value.Put(SmsMmsInfo::RECEIVER_NUMBER, "134xxxxxxxx");
288 value.Put(SmsMmsInfo::MSG_CONTENT, "The first test text message content");
289 value.Put(SmsMmsInfo::GROUP_ID, 1);
290 return helper->Insert(uri, value);
291 }
292
SmsUpdate(std::shared_ptr<DataShare::DataShareHelper> helper)293 int SmsUpdate(std::shared_ptr<DataShare::DataShareHelper> helper)
294 {
295 Uri uri("datashare:///com.ohos.smsmmsability/sms_mms/sms_mms_info");
296 DataShare::DataShareValuesBucket values;
297 values.Put(SmsMmsInfo::MSG_CONTENT, "The second test text message content");
298 DataShare::DataSharePredicates predicates;
299 predicates.EqualTo(SmsMmsInfo::MSG_ID, "1");
300 return helper->Update(uri, predicates, values);
301 }
302
SmsSelect(std::shared_ptr<DataShare::DataShareHelper> helper)303 int SmsSelect(std::shared_ptr<DataShare::DataShareHelper> helper)
304 {
305 Uri uri("datashare:///com.ohos.smsmmsability/sms_mms/sms_mms_info");
306 std::vector<std::string> columns;
307 DataShare::DataSharePredicates predicates;
308 std::shared_ptr<DataShare::DataShareResultSet> resultSet = helper->Query(uri, predicates, columns);
309 if (resultSet != nullptr) {
310 int count;
311 resultSet->GetRowCount(count);
312 std::cout << "count is " << count;
313 return count;
314 }
315 return -1;
316 }
317
SmsDelete(std::shared_ptr<DataShare::DataShareHelper> helper)318 int SmsDelete(std::shared_ptr<DataShare::DataShareHelper> helper)
319 {
320 Uri uri("datashare:///com.ohos.smsmmsability/sms_mms/sms_mms_info");
321 DataShare::DataSharePredicates predicates;
322 predicates.EqualTo(SmsMmsInfo::MSG_ID, "1");
323 return helper->Delete(uri, predicates);
324 }
325
PdpProfileReset(std::shared_ptr<DataShare::DataShareHelper> helper)326 int PdpProfileReset(std::shared_ptr<DataShare::DataShareHelper> helper)
327 {
328 Uri uri("datashare:///com.ohos.pdpprofileability/net/pdp_profile/reset");
329 DataShare::DataShareValuesBucket values;
330 DataShare::DataSharePredicates predicates;
331 return helper->Update(uri, predicates, values);
332 }
333
PdpProfileInsert(std::shared_ptr<DataShare::DataShareHelper> helper)334 int PdpProfileInsert(std::shared_ptr<DataShare::DataShareHelper> helper)
335 {
336 Uri uri("datashare:///com.ohos.pdpprofileability/net/pdp_profile");
337 DataShare::DataShareValuesBucket value;
338 value.Put(PdpProfileData::PROFILE_NAME, "frist_profile_name");
339 value.Put(PdpProfileData::MCC, "460");
340 value.Put(PdpProfileData::MNC, "91");
341 return helper->Insert(uri, value);
342 }
343
PdpProfileUpdate(std::shared_ptr<DataShare::DataShareHelper> helper)344 int PdpProfileUpdate(std::shared_ptr<DataShare::DataShareHelper> helper)
345 {
346 Uri uri("datashare:///com.ohos.pdpprofileability/net/pdp_profile");
347 DataShare::DataShareValuesBucket values;
348 values.Put(PdpProfileData::PROFILE_NAME, "update_profile_name");
349 DataShare::DataSharePredicates predicates;
350 predicates.EqualTo(PdpProfileData::PROFILE_ID, "1");
351 return helper->Update(uri, predicates, values);
352 }
353
PdpProfileDelete(std::shared_ptr<DataShare::DataShareHelper> helper)354 int PdpProfileDelete(std::shared_ptr<DataShare::DataShareHelper> helper)
355 {
356 Uri uri("datashare:///com.ohos.pdpprofileability/net/pdp_profile");
357 DataShare::DataSharePredicates predicates;
358 predicates.EqualTo(PdpProfileData::PROFILE_ID, "1");
359 return helper->Delete(uri, predicates);
360 }
361
PdpProfileSelect(std::shared_ptr<DataShare::DataShareHelper> helper)362 int PdpProfileSelect(std::shared_ptr<DataShare::DataShareHelper> helper)
363 {
364 Uri uri("datashare:///com.ohos.pdpprofileability/net/pdp_profile");
365 std::vector<std::string> columns;
366 DataShare::DataSharePredicates predicates;
367 std::shared_ptr<DataShare::DataShareResultSet> resultSet = helper->Query(uri, predicates, columns);
368 if (resultSet != nullptr) {
369 int count;
370 resultSet->GetRowCount(count);
371 std::cout << "count is " << count;
372 return count;
373 }
374 return -1;
375 }
376
GlobalParamsNumMatchInsert(std::shared_ptr<DataShare::DataShareHelper> helper)377 int GlobalParamsNumMatchInsert(std::shared_ptr<DataShare::DataShareHelper> helper)
378 {
379 std::cout << " GlobalParamsNumMatchInsert " << std::endl;
380 DATA_STORAGE_LOGI("GlobalParamsNumMatchInsert ---");
381 Uri uri("datashare:///com.ohos.globalparamsability/globalparams/num_matchs");
382 DataShare::DataShareValuesBucket value;
383 value.Put(NumMatchData::NAME, "frist_numMatch_name");
384 value.Put(NumMatchData::MCC, "460");
385 value.Put(NumMatchData::MNC, "91");
386 value.Put(NumMatchData::MCCMNC, "46091");
387 value.Put(NumMatchData::NUM_MATCH, NUM_MATCH_ELEVEN);
388 value.Put(NumMatchData::NUM_MATCH_SHORT, NUM_MATCH_SHORT_EIGHT);
389 int ret = helper->Insert(uri, value);
390 std::cout << "Result: " << ret << std::endl;
391 return ret;
392 }
393
GlobalParamsNumMatchUpdate(std::shared_ptr<DataShare::DataShareHelper> helper)394 int GlobalParamsNumMatchUpdate(std::shared_ptr<DataShare::DataShareHelper> helper)
395 {
396 std::cout << " GlobalParamsNumMatchUpdate " << std::endl;
397 DATA_STORAGE_LOGI("GlobalParamsNumMatchUpdate ---");
398 Uri uri("datashare:///com.ohos.globalparamsability/globalparams/num_matchs");
399 DataShare::DataShareValuesBucket values;
400 values.Put(NumMatchData::NAME, "update_name");
401 DataShare::DataSharePredicates predicates;
402 predicates.EqualTo(NumMatchData::MCCMNC, "46091");
403 int ret = helper->Update(uri, predicates, values);
404 std::cout << "Result: " << ret << std::endl;
405 return ret;
406 }
407
GlobalParamsNumMatchDelete(std::shared_ptr<DataShare::DataShareHelper> helper)408 int GlobalParamsNumMatchDelete(std::shared_ptr<DataShare::DataShareHelper> helper)
409 {
410 std::cout << " GlobalParamsNumMatchDelete " << std::endl;
411 DATA_STORAGE_LOGI("GlobalParamsNumMatchDelete ---");
412 Uri uri("datashare:///com.ohos.globalparamsability/globalparams/num_matchs");
413 DataShare::DataSharePredicates predicates;
414 predicates.EqualTo(NumMatchData::MCCMNC, "46091");
415 int ret = helper->Delete(uri, predicates);
416 std::cout << "Result: " << ret << std::endl;
417 return ret;
418 }
419
DumpNumMatchData(std::shared_ptr<DataShare::DataShareResultSet> resultSet)420 static void DumpNumMatchData(std::shared_ptr<DataShare::DataShareResultSet> resultSet)
421 {
422 if (resultSet == nullptr) {
423 std::cout << "resultSet is NULL, count = 0." << std::endl;
424 return;
425 }
426 int count;
427 resultSet->GetRowCount(count);
428 std::cout << "Dump NumMatchTable: count is " << count << std::endl;
429 for (int row = 0; row < count; row++) {
430 int columnIndex;
431 int id;
432 int match_long;
433 int match_short;
434 std::string name;
435 std::string mcc;
436 std::string mnc;
437 std::string numeric;
438 resultSet->GoToRow(row);
439 resultSet->GetColumnIndex(NumMatchData::ID, columnIndex);
440 resultSet->GetInt(columnIndex, id);
441 resultSet->GetColumnIndex(NumMatchData::NUM_MATCH, columnIndex);
442 resultSet->GetInt(columnIndex, match_long);
443 resultSet->GetColumnIndex(NumMatchData::NUM_MATCH_SHORT, columnIndex);
444 resultSet->GetInt(columnIndex, match_short);
445 resultSet->GetColumnIndex(NumMatchData::NAME, columnIndex);
446 resultSet->GetString(columnIndex, name);
447 resultSet->GetColumnIndex(NumMatchData::MCC, columnIndex);
448 resultSet->GetString(columnIndex, mcc);
449 resultSet->GetColumnIndex(NumMatchData::MNC, columnIndex);
450 resultSet->GetString(columnIndex, mnc);
451 resultSet->GetColumnIndex(NumMatchData::MCCMNC, columnIndex);
452 resultSet->GetString(columnIndex, numeric);
453 std::cout << " Row: " << row << ", id: " << id << ", name: " << name << ", mcc: " << mcc
454 << ", mnc: " << mnc << ", numeric: " << numeric << ", num_match: " << match_long
455 << ", num_match_short: " << match_short << std::endl;
456 }
457 }
458
GlobalParamsNumMatchSelect(std::shared_ptr<DataShare::DataShareHelper> helper)459 int GlobalParamsNumMatchSelect(std::shared_ptr<DataShare::DataShareHelper> helper)
460 {
461 std::cout << " GlobalParamsNumMatchSelect " << std::endl;
462 DATA_STORAGE_LOGI("GlobalParamsNumMatchSelect ---");
463 Uri uri("datashare:///com.ohos.globalparamsability/globalparams/num_matchs");
464 std::vector<std::string> columns;
465 DataShare::DataSharePredicates predicates;
466 std::shared_ptr<DataShare::DataShareResultSet> resultSet = helper->Query(uri, predicates, columns);
467 if (resultSet != nullptr) {
468 int count;
469 resultSet->GetRowCount(count);
470 std::cout << "count is " << count;
471 DumpNumMatchData(resultSet);
472 resultSet->Close();
473 std::cout << "Result: " << count << std::endl;
474 return count;
475 }
476 std::cout << "Result: -1" << std::endl;
477 return -1;
478 }
479
480 std::vector<std::string> mccmncArray = {"46021", "46091", "23204", "25013", "99998", "330110",
481 "63402", "310800", "60402", "60203"};
482
GlobalParamsNumMatchSpecifiedQuery(std::shared_ptr<DataShare::DataShareHelper> helper)483 int GlobalParamsNumMatchSpecifiedQuery(std::shared_ptr<DataShare::DataShareHelper> helper)
484 {
485 std::cout << " GlobalParamsNumMatchSpecifiedQuery " << std::endl;
486 DATA_STORAGE_LOGI("GlobalParamsNumMatchSpecifiedQuery ---");
487 Uri uri("datashare:///com.ohos.globalparamsability/globalparams/num_matchs");
488 int vSize = mccmncArray.size();
489 for (int i = 0; i < vSize; i++) {
490 std::cout << " SpecifiedQuery: " << mccmncArray[i] << std::endl;
491 std::vector<std::string> columns;
492 DataShare::DataSharePredicates predicates;
493 predicates.EqualTo(NumMatchData::MCCMNC, mccmncArray[i]);
494 std::shared_ptr<DataShare::DataShareResultSet> resultSet = helper->Query(uri, predicates, columns);
495 if (resultSet != nullptr) {
496 int count;
497 resultSet->GetRowCount(count);
498 std::cout << "count is " << count << std::endl;
499 DumpNumMatchData(resultSet);
500 resultSet->Close();
501 } else {
502 std::cout << "Result: No found!" << std::endl;
503 }
504 }
505 return 0;
506 }
GlobalEccInsert(std::shared_ptr<DataShare::DataShareHelper> helper)507 int GlobalEccInsert(std::shared_ptr<DataShare::DataShareHelper> helper)
508 {
509 Uri uri("datashare:///com.ohos.globalparamsability/globalparams/ecc_data");
510 DataShare::DataShareValuesBucket value;
511 value.Put(EccData::MCC, "460");
512 value.Put(EccData::MNC, "01");
513 value.Put(EccData::NUMERIC, "46001");
514 return helper->Insert(uri, value);
515 }
516
GlobalEccUpdate(std::shared_ptr<DataShare::DataShareHelper> helper)517 int GlobalEccUpdate(std::shared_ptr<DataShare::DataShareHelper> helper)
518 {
519 Uri uri("datashare:///com.ohos.globalparamsability/globalparams/ecc_data");
520 DataShare::DataShareValuesBucket values;
521 values.Put(EccData::NAME, "46001");
522 DataShare::DataSharePredicates predicates;
523 predicates.EqualTo(EccData::ID, "1");
524 return helper->Update(uri, predicates, values);
525 }
526
GlobalEccDelete(std::shared_ptr<DataShare::DataShareHelper> helper)527 int GlobalEccDelete(std::shared_ptr<DataShare::DataShareHelper> helper)
528 {
529 Uri uri("datashare:///com.ohos.globalparamsability/globalparams/ecc_data");
530 DataShare::DataSharePredicates predicates;
531 predicates.EqualTo(EccData::ID, "1");
532 return helper->Delete(uri, predicates);
533 }
534
GlobalEccSelect(std::shared_ptr<DataShare::DataShareHelper> helper)535 int GlobalEccSelect(std::shared_ptr<DataShare::DataShareHelper> helper)
536 {
537 Uri uri("datashare:///com.ohos.globalparamsability/globalparams/ecc_data");
538 std::vector<std::string> columns;
539 DataShare::DataSharePredicates predicates;
540 std::shared_ptr<DataShare::DataShareResultSet> resultSet = helper->Query(uri, predicates, columns);
541 if (resultSet != nullptr) {
542 int count;
543 resultSet->GetRowCount(count);
544 std::cout << "count is " << count;
545 return count;
546 }
547 return -1;
548 }
549
Init()550 void Init()
551 {
552 g_simFuncMap['q'] = SimInsert;
553 g_simFuncMap['w'] = SimUpdate;
554 g_simFuncMap['e'] = SimSelect;
555 g_simFuncMap['r'] = SimDelete;
556 g_simFuncMap['o'] = SimSetCardByType;
557 g_smsFuncMap['t'] = SmsInsert;
558 g_smsFuncMap['y'] = SmsUpdate;
559 g_smsFuncMap['u'] = SmsSelect;
560 g_smsFuncMap['i'] = SmsDelete;
561 g_smsFuncMap['p'] = SmsBatchInsert;
562 g_pdpProfileFuncMap['a'] = PdpProfileInsert;
563 g_pdpProfileFuncMap['s'] = PdpProfileUpdate;
564 g_pdpProfileFuncMap['d'] = PdpProfileDelete;
565 g_pdpProfileFuncMap['f'] = PdpProfileSelect;
566 g_pdpProfileFuncMap['h'] = PdpProfileReset;
567 g_opKeyFuncMap['x'] = OpKeyInsert;
568 g_opKeyFuncMap['c'] = OpKeyUpdate;
569 g_opKeyFuncMap['v'] = OpKeySelect;
570 g_opKeyFuncMap['b'] = OpKeyDelete;
571 g_globalParamsFuncMap['1'] = GlobalParamsNumMatchInsert;
572 g_globalParamsFuncMap['2'] = GlobalParamsNumMatchUpdate;
573 g_globalParamsFuncMap['3'] = GlobalParamsNumMatchSelect;
574 g_globalParamsFuncMap['4'] = GlobalParamsNumMatchDelete;
575 g_globalParamsFuncMap['5'] = GlobalParamsNumMatchSpecifiedQuery;
576 g_globalParamsFuncMap['j'] = GlobalEccInsert;
577 g_globalParamsFuncMap['k'] = GlobalEccUpdate;
578 g_globalParamsFuncMap['l'] = GlobalEccSelect;
579 g_globalParamsFuncMap['m'] = GlobalEccDelete;
580 ApplyPermission();
581 }
582
VerifyCmd(char inputCMD,std::shared_ptr<DataShare::DataShareHelper> & helper)583 int VerifyCmd(char inputCMD, std::shared_ptr<DataShare::DataShareHelper> &helper)
584 {
585 auto itFunSim = g_simFuncMap.find(inputCMD);
586 if (itFunSim != g_simFuncMap.end()) {
587 auto memberFunc = itFunSim->second;
588 if (memberFunc != nullptr) {
589 helper = CreateSimHelper();
590 if (helper != nullptr) {
591 (*memberFunc)(helper);
592 }
593 return 0;
594 }
595 }
596 auto itFunSms = g_smsFuncMap.find(inputCMD);
597 if (itFunSms != g_smsFuncMap.end()) {
598 auto memberFunc = itFunSms->second;
599 if (memberFunc != nullptr) {
600 helper = CreateSmsHelper();
601 if (helper != nullptr) {
602 (*memberFunc)(helper);
603 }
604 return 0;
605 }
606 }
607 auto itFunPdpProfile = g_pdpProfileFuncMap.find(inputCMD);
608 if (itFunPdpProfile != g_pdpProfileFuncMap.end()) {
609 auto memberFunc = itFunPdpProfile->second;
610 if (memberFunc != nullptr) {
611 helper = CreatePdpProfileHelper();
612 if (helper != nullptr) {
613 (*memberFunc)(helper);
614 }
615 return 0;
616 }
617 }
618 auto itFunOpKey = g_opKeyFuncMap.find(inputCMD);
619 if (itFunOpKey != g_opKeyFuncMap.end()) {
620 auto memberFunc = itFunOpKey->second;
621 if (memberFunc != nullptr) {
622 helper = CreateOpKeyHelper();
623 if (helper != nullptr) {
624 (*memberFunc)(helper);
625 }
626 return 0;
627 }
628 }
629 auto itFunGlobalEcc = g_globalParamsFuncMap.find(inputCMD);
630 if (itFunGlobalEcc != g_globalParamsFuncMap.end()) {
631 auto memberFunc = itFunGlobalEcc->second;
632 if (memberFunc != nullptr) {
633 helper = CreateGlobalParamsHelper();
634 if (helper != nullptr) {
635 (*memberFunc)(helper);
636 }
637 return 0;
638 }
639 }
640 auto itFunGlobalParams = g_globalParamsFuncMap.find(inputCMD);
641 if (itFunGlobalParams != g_globalParamsFuncMap.end()) {
642 auto memberFunc = itFunGlobalParams->second;
643 if (memberFunc != nullptr) {
644 helper = CreateGlobalParamsHelper();
645 if (helper != nullptr) {
646 (*memberFunc)(helper);
647 }
648 return 0;
649 }
650 }
651 return -1;
652 }
653
ResourceTest()654 void ResourceTest()
655 {
656 OHOS::Global::Resource::ResourceManager *rm = OHOS::Global::Resource::CreateResourceManager();
657 std::string outValue;
658 rm->GetStringByName("hello_ceshi", outValue);
659 DATA_STORAGE_LOGI("DataSimRdbHelper::ResourceTest outValue = %{public}s", outValue.c_str());
660 outValue = "";
661 rm->GetStringByName("hello_telephony", outValue);
662 DATA_STORAGE_LOGI("DataSimRdbHelper::ResourceTest outValue1 = %{public}s", outValue.c_str());
663 free(rm);
664 rm = nullptr;
665 }
666
PrintfHint()667 void PrintfHint()
668 {
669 printf("\n**********Unit Test Start**********\n"
670 "usage: please input a cmd num:\n"
671 "q:SimInsert()\n"
672 "w:SimUpdate()\n"
673 "e:SimSelect()\n"
674 "r:SimDelete()\n"
675 "o:SimSetCardByType()\n"
676 "t:SmsInsert()\n"
677 "y:SmsUpdate()\n"
678 "u:SmsSelect()\n"
679 "i:SmsDelete()\n"
680 "p:SmsBatchInsert()\n"
681 "a:PdpProfileInsert()\n"
682 "s:PdpProfileUpdate()\n"
683 "d:PdpProfileDelete()\n"
684 "f:PdpProfileSelect()\n"
685 "h:PdpProfileReset()\n"
686 "g:ResourceTest()\n"
687 "x:OpKeyInsert()\n"
688 "c:OpKeyUpdate()\n"
689 "v:OpKeySelect()\n"
690 "b:OpKeyDelete()\n"
691 "0:help\n"
692 "1:GlobalParamsNumMatchInsert()\n"
693 "2:GlobalParamsNumMatchUpdate()\n"
694 "3:GlobalParamsNumMatchSelect()\n"
695 "4:GlobalParamsNumMatchDelete()\n"
696 "5:GlobalParamsNumMatchSpecifiedQuery()\n"
697 "j:GlobalInsert()\n"
698 "k:GlobalUpdate()\n"
699 "l:GlobalSelect()\n"
700 "m:GlobalDelete()\n"
701 "z:exit\n"
702 "***********************************\n"
703 "your choice: ");
704 }
705
Looper()706 void Looper()
707 {
708 char inputCMD = '0';
709 bool loopFlag = true;
710 std::shared_ptr<DataShare::DataShareHelper> helper = nullptr;
711 Init();
712 PrintfHint();
713 while (loopFlag) {
714 PrintfHint();
715 std::cin >> inputCMD;
716 int ret = VerifyCmd(inputCMD, helper);
717 if (ret == 0) {
718 continue;
719 }
720 switch (inputCMD) {
721 case '0': {
722 PrintfHint();
723 break;
724 }
725 case 'g': {
726 ResourceTest();
727 break;
728 }
729 case 'z': {
730 loopFlag = false;
731 break;
732 }
733 default: {
734 break;
735 }
736 }
737 }
738 RemovePermission();
739 }
740 } // namespace Telephony
741 } // namespace OHOS
742
743 using namespace OHOS;
main()744 int main()
745 {
746 Telephony::Looper();
747 return 0;
748 }
749