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_SIM_ABILITY_H 1725c1cde8Sopenharmony_ci#define DATA_STORAGE_SIM_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_predicates.h" 3225c1cde8Sopenharmony_ci#include "rdb_sim_helper.h" 3325c1cde8Sopenharmony_ci#include "string" 3425c1cde8Sopenharmony_ci#include "vector" 3525c1cde8Sopenharmony_ci#include "want.h" 3625c1cde8Sopenharmony_ci 3725c1cde8Sopenharmony_cinamespace OHOS { 3825c1cde8Sopenharmony_cinamespace NativeRdb { 3925c1cde8Sopenharmony_ciclass AbsRdbPredicates; 4025c1cde8Sopenharmony_ciclass ResultSet; 4125c1cde8Sopenharmony_ciclass DataAbilityPredicates; 4225c1cde8Sopenharmony_ciclass ValuesBucket; 4325c1cde8Sopenharmony_ciclass ValueObject; 4425c1cde8Sopenharmony_ci} 4525c1cde8Sopenharmony_cinamespace Telephony { 4625c1cde8Sopenharmony_cienum class SimUriType { 4725c1cde8Sopenharmony_ci UNKNOW, SIM_INFO, SET_CARD 4825c1cde8Sopenharmony_ci}; 4925c1cde8Sopenharmony_ciclass SimAbility : public DataShare::DataShareExtAbility { 5025c1cde8Sopenharmony_cipublic: 5125c1cde8Sopenharmony_ci SimAbility(); 5225c1cde8Sopenharmony_ci virtual ~SimAbility() override; 5325c1cde8Sopenharmony_ci static SimAbility* Create(); 5425c1cde8Sopenharmony_ci void DoInit(); 5525c1cde8Sopenharmony_ci sptr<IRemoteObject> OnConnect(const AAFwk::Want &want) override; 5625c1cde8Sopenharmony_ci virtual void OnStart(const AppExecFwk::Want &want) override; 5725c1cde8Sopenharmony_ci virtual int Insert(const Uri &uri, const DataShare::DataShareValuesBucket &value) override; 5825c1cde8Sopenharmony_ci virtual std::shared_ptr<DataShare::DataShareResultSet> Query(const Uri &uri, 5925c1cde8Sopenharmony_ci const DataShare::DataSharePredicates &predicates, std::vector<std::string> &columns, 6025c1cde8Sopenharmony_ci DataShare::DatashareBusinessError &businessError) override; 6125c1cde8Sopenharmony_ci virtual int Update(const Uri &uri, const DataShare::DataSharePredicates &predicates, 6225c1cde8Sopenharmony_ci const DataShare::DataShareValuesBucket &value) override; 6325c1cde8Sopenharmony_ci virtual int Delete(const Uri &uri, const DataShare::DataSharePredicates &predicates) override; 6425c1cde8Sopenharmony_ci virtual std::string GetType(const Uri &uri) override; 6525c1cde8Sopenharmony_ci virtual int OpenFile(const Uri &uri, const std::string &mode) override; 6625c1cde8Sopenharmony_ci 6725c1cde8Sopenharmony_ciprivate: 6825c1cde8Sopenharmony_ci /** 6925c1cde8Sopenharmony_ci * Parse Uri Type 7025c1cde8Sopenharmony_ci * 7125c1cde8Sopenharmony_ci * @param uri Resource address 7225c1cde8Sopenharmony_ci * @return return SimUriType 7325c1cde8Sopenharmony_ci */ 7425c1cde8Sopenharmony_ci SimUriType ParseUriType(Uri &uri); 7525c1cde8Sopenharmony_ci 7625c1cde8Sopenharmony_ci /** 7725c1cde8Sopenharmony_ci * Convert DataSharePredicates to RdbPredicates 7825c1cde8Sopenharmony_ci * 7925c1cde8Sopenharmony_ci * @param tableName table name of the predicates 8025c1cde8Sopenharmony_ci * @param predicates DataSharePredicates 8125c1cde8Sopenharmony_ci */ 8225c1cde8Sopenharmony_ci OHOS::NativeRdb::RdbPredicates ConvertPredicates( 8325c1cde8Sopenharmony_ci const std::string &tableName, const DataShare::DataSharePredicates &predicates); 8425c1cde8Sopenharmony_ci 8525c1cde8Sopenharmony_ci /** 8625c1cde8Sopenharmony_ci * Set card type 8725c1cde8Sopenharmony_ci * 8825c1cde8Sopenharmony_ci * @param value Table field data 8925c1cde8Sopenharmony_ci * @return Is it successful 9025c1cde8Sopenharmony_ci */ 9125c1cde8Sopenharmony_ci 9225c1cde8Sopenharmony_ci int SetCard(const DataShare::DataShareValuesBucket &value); 9325c1cde8Sopenharmony_ci 9425c1cde8Sopenharmony_ci /** 9525c1cde8Sopenharmony_ci * Check whether the initialization succeeds 9625c1cde8Sopenharmony_ci * 9725c1cde8Sopenharmony_ci * @return true : succeed ,false : failed 9825c1cde8Sopenharmony_ci */ 9925c1cde8Sopenharmony_ci bool IsInitOk(); 10025c1cde8Sopenharmony_ci 10125c1cde8Sopenharmony_ciprivate: 10225c1cde8Sopenharmony_ci RdbSimHelper helper_; 10325c1cde8Sopenharmony_ci std::mutex lock_; 10425c1cde8Sopenharmony_ci bool initDatabaseDir = false; 10525c1cde8Sopenharmony_ci bool initRdbStore = false; 10625c1cde8Sopenharmony_ci}; 10725c1cde8Sopenharmony_ci} // namespace Telephony 10825c1cde8Sopenharmony_ci} // namespace OHOS 10925c1cde8Sopenharmony_ci#endif // DATA_STORAGE_SIM_ABILITY_H 110