125c1cde8Sopenharmony_ci/* 225c1cde8Sopenharmony_ci * Copyright (c) 2021-2022 Huawei Device Co., Ltd. 325c1cde8Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 425c1cde8Sopenharmony_ci * you may not use this file except in compliance with the License. 525c1cde8Sopenharmony_ci * You may obtain a copy of the License at 625c1cde8Sopenharmony_ci * 725c1cde8Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 825c1cde8Sopenharmony_ci * 925c1cde8Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1025c1cde8Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1125c1cde8Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1225c1cde8Sopenharmony_ci * See the License for the specific language governing permissions and 1325c1cde8Sopenharmony_ci * limitations under the License. 1425c1cde8Sopenharmony_ci */ 1525c1cde8Sopenharmony_ci 1625c1cde8Sopenharmony_ci#ifndef DATA_STORAGE_PDP_PROFILE_ABILITY_H 1725c1cde8Sopenharmony_ci#define DATA_STORAGE_PDP_PROFILE_ABILITY_H 1825c1cde8Sopenharmony_ci 1925c1cde8Sopenharmony_ci#include <functional> 2025c1cde8Sopenharmony_ci 2125c1cde8Sopenharmony_ci#include "__mutex_base" 2225c1cde8Sopenharmony_ci#include "ability.h" 2325c1cde8Sopenharmony_ci#include "ability_lifecycle.h" 2425c1cde8Sopenharmony_ci#include "abs_shared_result_set.h" 2525c1cde8Sopenharmony_ci#include "datashare_ext_ability.h" 2625c1cde8Sopenharmony_ci#include "datashare_ext_ability_context.h" 2725c1cde8Sopenharmony_ci#include "datashare_values_bucket.h" 2825c1cde8Sopenharmony_ci#include "iosfwd" 2925c1cde8Sopenharmony_ci#include "map" 3025c1cde8Sopenharmony_ci#include "memory" 3125c1cde8Sopenharmony_ci#include "rdb_pdp_profile_helper.h" 3225c1cde8Sopenharmony_ci#include "rdb_predicates.h" 3325c1cde8Sopenharmony_ci#include "string" 3425c1cde8Sopenharmony_ci#include "vector" 3525c1cde8Sopenharmony_ci#include "want.h" 3625c1cde8Sopenharmony_ci 3725c1cde8Sopenharmony_cinamespace OHOS { 3825c1cde8Sopenharmony_ciclass Uri; 3925c1cde8Sopenharmony_cinamespace NativeRdb { 4025c1cde8Sopenharmony_ciclass AbsRdbPredicates; 4125c1cde8Sopenharmony_ciclass ResultSet; 4225c1cde8Sopenharmony_ciclass DataAbilityPredicates; 4325c1cde8Sopenharmony_ciclass ValuesBucket; 4425c1cde8Sopenharmony_ci} 4525c1cde8Sopenharmony_cinamespace Telephony { 4625c1cde8Sopenharmony_cienum class PdpProfileUriType { 4725c1cde8Sopenharmony_ci UNKNOW, 4825c1cde8Sopenharmony_ci PDP_PROFILE, 4925c1cde8Sopenharmony_ci INIT, 5025c1cde8Sopenharmony_ci RESET, 5125c1cde8Sopenharmony_ci PREFER_APN, 5225c1cde8Sopenharmony_ci}; 5325c1cde8Sopenharmony_ciclass PdpProfileAbility : public DataShare::DataShareExtAbility { 5425c1cde8Sopenharmony_cipublic: 5525c1cde8Sopenharmony_ci PdpProfileAbility(); 5625c1cde8Sopenharmony_ci virtual ~PdpProfileAbility() override; 5725c1cde8Sopenharmony_ci static PdpProfileAbility* Create(); 5825c1cde8Sopenharmony_ci void DoInit(); 5925c1cde8Sopenharmony_ci sptr<IRemoteObject> OnConnect(const AAFwk::Want &want) override; 6025c1cde8Sopenharmony_ci virtual void OnStart(const AppExecFwk::Want &want) override; 6125c1cde8Sopenharmony_ci virtual int Insert(const Uri &uri, const DataShare::DataShareValuesBucket &value) override; 6225c1cde8Sopenharmony_ci virtual int BatchInsert(const Uri &uri, const std::vector<DataShare::DataShareValuesBucket> &values) override; 6325c1cde8Sopenharmony_ci virtual std::shared_ptr<DataShare::DataShareResultSet> Query(const Uri &uri, 6425c1cde8Sopenharmony_ci const DataShare::DataSharePredicates &predicates, std::vector<std::string> &columns, 6525c1cde8Sopenharmony_ci DataShare::DatashareBusinessError &businessError) override; 6625c1cde8Sopenharmony_ci virtual int Update(const Uri &uri, const DataShare::DataSharePredicates &predicates, 6725c1cde8Sopenharmony_ci const DataShare::DataShareValuesBucket &value) override; 6825c1cde8Sopenharmony_ci virtual int Delete(const Uri &uri, const DataShare::DataSharePredicates &predicates) override; 6925c1cde8Sopenharmony_ci virtual std::string GetType(const Uri &uri) override; 7025c1cde8Sopenharmony_ci virtual int OpenFile(const Uri &uri, const std::string &mode) override; 7125c1cde8Sopenharmony_ci 7225c1cde8Sopenharmony_ciprivate: 7325c1cde8Sopenharmony_ci /** 7425c1cde8Sopenharmony_ci * Parse Uri Type 7525c1cde8Sopenharmony_ci * 7625c1cde8Sopenharmony_ci * @param uri Resource address 7725c1cde8Sopenharmony_ci * @return return PdpProfileUriType 7825c1cde8Sopenharmony_ci */ 7925c1cde8Sopenharmony_ci PdpProfileUriType ParseUriType(Uri &uri); 8025c1cde8Sopenharmony_ci 8125c1cde8Sopenharmony_ci /** 8225c1cde8Sopenharmony_ci * Convert DataSharePredicates to RdbPredicates 8325c1cde8Sopenharmony_ci * 8425c1cde8Sopenharmony_ci * @param tableName table name of the predicates 8525c1cde8Sopenharmony_ci * @param predicates DataSharePredicates 8625c1cde8Sopenharmony_ci */ 8725c1cde8Sopenharmony_ci OHOS::NativeRdb::RdbPredicates ConvertPredicates( 8825c1cde8Sopenharmony_ci const std::string &tableName, const DataShare::DataSharePredicates &predicates); 8925c1cde8Sopenharmony_ci 9025c1cde8Sopenharmony_ci /** 9125c1cde8Sopenharmony_ci * Check whether the initialization succeeds 9225c1cde8Sopenharmony_ci * 9325c1cde8Sopenharmony_ci * @return true : succeed ,false : failed 9425c1cde8Sopenharmony_ci */ 9525c1cde8Sopenharmony_ci bool IsInitOk(); 9625c1cde8Sopenharmony_ci int UpdatePreferApn(const DataShare::DataShareValuesBucket &value); 9725c1cde8Sopenharmony_ci int SetPreferApn(int simId, int profileId); 9825c1cde8Sopenharmony_ci int GetPreferApn(const std::string &queryString); 9925c1cde8Sopenharmony_ci std::string GetQueryKey(const std::string &queryString, const std::string &key); 10025c1cde8Sopenharmony_ci bool HasColumnValue( 10125c1cde8Sopenharmony_ci const OHOS::NativeRdb::ValuesBucket &value, const char *columnName, NativeRdb::ValueObject &valueObject); 10225c1cde8Sopenharmony_ci 10325c1cde8Sopenharmony_ciprivate: 10425c1cde8Sopenharmony_ci RdbPdpProfileHelper helper_; 10525c1cde8Sopenharmony_ci std::mutex lock_; 10625c1cde8Sopenharmony_ci bool initDatabaseDir = false; 10725c1cde8Sopenharmony_ci bool initRdbStore = false; 10825c1cde8Sopenharmony_ci void GetTargetOpkey(int slotId, std::string &opkey); 10925c1cde8Sopenharmony_ci int ResetApn(const DataShare::DataShareValuesBucket &bucket); 11025c1cde8Sopenharmony_ci int GetIntFromValuesBucket(OHOS::NativeRdb::ValuesBucket &bucket, const char *key, int &value); 11125c1cde8Sopenharmony_ci std::shared_ptr<NativeRdb::ResultSet> QueryPdpProfile(Uri &uri, const std::string &tableName, 11225c1cde8Sopenharmony_ci const DataShare::DataSharePredicates &predicates, std::vector<std::string> &columns); 11325c1cde8Sopenharmony_ci}; 11425c1cde8Sopenharmony_ci} // namespace Telephony 11525c1cde8Sopenharmony_ci} // namespace OHOS 11625c1cde8Sopenharmony_ci#endif // DATA_STORAGE_PDP_PROFILE_ABILITY_H 117