• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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