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