125c1cde8Sopenharmony_ci/*
225c1cde8Sopenharmony_ci * Copyright (c) 2023 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_GLOBAL_PARAMS_ABILITY_H
1725c1cde8Sopenharmony_ci#define DATA_STORAGE_GLOBAL_PARAMS_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_global_params_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_cinamespace NativeRdb {
3925c1cde8Sopenharmony_ciclass AbsRdbPredicates;
4025c1cde8Sopenharmony_ciclass ResultSet;
4125c1cde8Sopenharmony_ciclass DataAbilityPredicates;
4225c1cde8Sopenharmony_ciclass ValuesBucket;
4325c1cde8Sopenharmony_ci}
4425c1cde8Sopenharmony_cinamespace Telephony {
4525c1cde8Sopenharmony_cienum class GlobalParamsUriType {
4625c1cde8Sopenharmony_ci    UNKNOW,
4725c1cde8Sopenharmony_ci	ECC_LIST,
4825c1cde8Sopenharmony_ci	NUMBER_MATCHS
4925c1cde8Sopenharmony_ci};
5025c1cde8Sopenharmony_ci
5125c1cde8Sopenharmony_ciclass GlobalParamsAbility : public DataShare::DataShareExtAbility {
5225c1cde8Sopenharmony_cipublic:
5325c1cde8Sopenharmony_ci    GlobalParamsAbility();
5425c1cde8Sopenharmony_ci    virtual ~GlobalParamsAbility() override;
5525c1cde8Sopenharmony_ci    static GlobalParamsAbility* Create();
5625c1cde8Sopenharmony_ci    void DoInit();
5725c1cde8Sopenharmony_ci    sptr<IRemoteObject> OnConnect(const AAFwk::Want &want) override;
5825c1cde8Sopenharmony_ci    virtual void OnStart(const AppExecFwk::Want &want) override;
5925c1cde8Sopenharmony_ci    virtual int Insert(const Uri &uri, const DataShare::DataShareValuesBucket &value) override;
6025c1cde8Sopenharmony_ci    virtual int Update(const Uri &uri, const DataShare::DataSharePredicates &predicates,
6125c1cde8Sopenharmony_ci        const DataShare::DataShareValuesBucket &value) override;
6225c1cde8Sopenharmony_ci    virtual int Delete(const Uri &uri, const DataShare::DataSharePredicates &predicates) 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 std::string GetType(const Uri &uri) override;
6725c1cde8Sopenharmony_ci    virtual int OpenFile(const Uri &uri, const std::string &mode) override;
6825c1cde8Sopenharmony_ci
6925c1cde8Sopenharmony_ciprivate:
7025c1cde8Sopenharmony_ci    /**
7125c1cde8Sopenharmony_ci     * Parse Uri Type
7225c1cde8Sopenharmony_ci     *
7325c1cde8Sopenharmony_ci     * @param uri Resource address
7425c1cde8Sopenharmony_ci     * @return return GlobalParamsUriType
7525c1cde8Sopenharmony_ci     */
7625c1cde8Sopenharmony_ci    GlobalParamsUriType ParseUriType(Uri &uri);
7725c1cde8Sopenharmony_ci
7825c1cde8Sopenharmony_ci    /**
7925c1cde8Sopenharmony_ci     * Convert DataSharePredicates to RdbPredicates
8025c1cde8Sopenharmony_ci     *
8125c1cde8Sopenharmony_ci     * @param tableName table name of the predicates
8225c1cde8Sopenharmony_ci     * @param predicates DataSharePredicates
8325c1cde8Sopenharmony_ci     */
8425c1cde8Sopenharmony_ci    OHOS::NativeRdb::RdbPredicates ConvertPredicates(
8525c1cde8Sopenharmony_ci        const std::string &tableName, const DataShare::DataSharePredicates &predicates);
8625c1cde8Sopenharmony_ci
8725c1cde8Sopenharmony_ci    /**
8825c1cde8Sopenharmony_ci    * Check whether the initialization succeeds
8925c1cde8Sopenharmony_ci    *
9025c1cde8Sopenharmony_ci    * @return true : succeed ,false : failed
9125c1cde8Sopenharmony_ci    */
9225c1cde8Sopenharmony_ci    bool IsInitOk();
9325c1cde8Sopenharmony_ci
9425c1cde8Sopenharmony_ciprivate:
9525c1cde8Sopenharmony_ci    RdbGlobalParamsHelper helper_;
9625c1cde8Sopenharmony_ci    std::mutex lock_;
9725c1cde8Sopenharmony_ci    bool initDatabaseDir_ = false;
9825c1cde8Sopenharmony_ci    bool initRdbStore_ = false;
9925c1cde8Sopenharmony_ci};
10025c1cde8Sopenharmony_ci} // namespace Telephony
10125c1cde8Sopenharmony_ci} // namespace OHOS
10225c1cde8Sopenharmony_ci#endif // DATA_STORAGE_GLOBAL_PARAMS_ABILITY_H