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#include "preferences_util.h"
1725c1cde8Sopenharmony_ci
1825c1cde8Sopenharmony_ci#include <string>
1925c1cde8Sopenharmony_ci
2025c1cde8Sopenharmony_ci#include "data_storage_log_wrapper.h"
2125c1cde8Sopenharmony_ci#include "preferences.h"
2225c1cde8Sopenharmony_ci#include "preferences_helper.h"
2325c1cde8Sopenharmony_ci#include "preferences_observer.h"
2425c1cde8Sopenharmony_ci
2525c1cde8Sopenharmony_cinamespace OHOS {
2625c1cde8Sopenharmony_cinamespace Telephony {
2725c1cde8Sopenharmony_ciPreferencesUtil::PreferencesUtil() {}
2825c1cde8Sopenharmony_ciPreferencesUtil::~PreferencesUtil() {}
2925c1cde8Sopenharmony_ci
3025c1cde8Sopenharmony_cistd::shared_ptr<NativePreferences::Preferences> PreferencesUtil::GetProfiles(const std::string &path, int &errCode)
3125c1cde8Sopenharmony_ci{
3225c1cde8Sopenharmony_ci    return NativePreferences::PreferencesHelper::GetPreferences(path, errCode);
3325c1cde8Sopenharmony_ci}
3425c1cde8Sopenharmony_ci
3525c1cde8Sopenharmony_ciint PreferencesUtil::DeleteProfiles()
3625c1cde8Sopenharmony_ci{
3725c1cde8Sopenharmony_ci    return NativePreferences::PreferencesHelper::DeletePreferences(path_);
3825c1cde8Sopenharmony_ci}
3925c1cde8Sopenharmony_ci
4025c1cde8Sopenharmony_ciint PreferencesUtil::SaveString(const std::string &key, const std::string &value)
4125c1cde8Sopenharmony_ci{
4225c1cde8Sopenharmony_ci    std::shared_ptr<NativePreferences::Preferences> ptr = GetProfiles(path_, errCode_);
4325c1cde8Sopenharmony_ci    if (ptr == nullptr) {
4425c1cde8Sopenharmony_ci        return NativePreferences::E_ERROR;
4525c1cde8Sopenharmony_ci    }
4625c1cde8Sopenharmony_ci    int ret = ptr->PutString(key, value);
4725c1cde8Sopenharmony_ci    ptr->Flush();
4825c1cde8Sopenharmony_ci    return ret;
4925c1cde8Sopenharmony_ci}
5025c1cde8Sopenharmony_ci
5125c1cde8Sopenharmony_cistd::string PreferencesUtil::ObtainString(const std::string &key, const std::string &defValue)
5225c1cde8Sopenharmony_ci{
5325c1cde8Sopenharmony_ci    std::shared_ptr<NativePreferences::Preferences> ptr = GetProfiles(path_, errCode_);
5425c1cde8Sopenharmony_ci    if (ptr == nullptr) {
5525c1cde8Sopenharmony_ci        return defValue;
5625c1cde8Sopenharmony_ci    }
5725c1cde8Sopenharmony_ci    return ptr->GetString(key, defValue);
5825c1cde8Sopenharmony_ci}
5925c1cde8Sopenharmony_ci
6025c1cde8Sopenharmony_ciint PreferencesUtil::SaveInt(const std::string &key, int value)
6125c1cde8Sopenharmony_ci{
6225c1cde8Sopenharmony_ci    std::shared_ptr<NativePreferences::Preferences> ptr = GetProfiles(path_, errCode_);
6325c1cde8Sopenharmony_ci    if (ptr == nullptr) {
6425c1cde8Sopenharmony_ci        return NativePreferences::E_ERROR;
6525c1cde8Sopenharmony_ci    }
6625c1cde8Sopenharmony_ci    int ret = ptr->PutInt(key, value);
6725c1cde8Sopenharmony_ci    ptr->Flush();
6825c1cde8Sopenharmony_ci    return ret;
6925c1cde8Sopenharmony_ci}
7025c1cde8Sopenharmony_ci
7125c1cde8Sopenharmony_ciint PreferencesUtil::ObtainInt(const std::string &key, int defValue)
7225c1cde8Sopenharmony_ci{
7325c1cde8Sopenharmony_ci    std::shared_ptr<NativePreferences::Preferences> ptr = GetProfiles(path_, errCode_);
7425c1cde8Sopenharmony_ci    if (ptr == nullptr) {
7525c1cde8Sopenharmony_ci        return defValue;
7625c1cde8Sopenharmony_ci    }
7725c1cde8Sopenharmony_ci    return ptr->GetInt(key, defValue);
7825c1cde8Sopenharmony_ci}
7925c1cde8Sopenharmony_ci
8025c1cde8Sopenharmony_ciint PreferencesUtil::SaveBool(const std::string &key, bool value)
8125c1cde8Sopenharmony_ci{
8225c1cde8Sopenharmony_ci    std::shared_ptr<NativePreferences::Preferences> ptr = GetProfiles(path_, errCode_);
8325c1cde8Sopenharmony_ci    if (ptr == nullptr) {
8425c1cde8Sopenharmony_ci        return NativePreferences::E_ERROR;
8525c1cde8Sopenharmony_ci    }
8625c1cde8Sopenharmony_ci    int ret = ptr->PutBool(key, value);
8725c1cde8Sopenharmony_ci    ptr->Flush();
8825c1cde8Sopenharmony_ci    return ret;
8925c1cde8Sopenharmony_ci}
9025c1cde8Sopenharmony_ci
9125c1cde8Sopenharmony_cibool PreferencesUtil::ObtainBool(const std::string &key, bool defValue)
9225c1cde8Sopenharmony_ci{
9325c1cde8Sopenharmony_ci    std::shared_ptr<NativePreferences::Preferences> ptr = GetProfiles(path_, errCode_);
9425c1cde8Sopenharmony_ci    if (ptr == nullptr) {
9525c1cde8Sopenharmony_ci        return defValue;
9625c1cde8Sopenharmony_ci    }
9725c1cde8Sopenharmony_ci    return ptr->GetBool(key, defValue);
9825c1cde8Sopenharmony_ci}
9925c1cde8Sopenharmony_ci
10025c1cde8Sopenharmony_ciint PreferencesUtil::SaveLong(const std::string &key, int64_t value)
10125c1cde8Sopenharmony_ci{
10225c1cde8Sopenharmony_ci    std::shared_ptr<NativePreferences::Preferences> ptr = GetProfiles(path_, errCode_);
10325c1cde8Sopenharmony_ci    if (ptr == nullptr) {
10425c1cde8Sopenharmony_ci        return NativePreferences::E_ERROR;
10525c1cde8Sopenharmony_ci    }
10625c1cde8Sopenharmony_ci    int ret = ptr->PutLong(key, value);
10725c1cde8Sopenharmony_ci    ptr->Flush();
10825c1cde8Sopenharmony_ci    return ret;
10925c1cde8Sopenharmony_ci}
11025c1cde8Sopenharmony_ci
11125c1cde8Sopenharmony_ciint64_t PreferencesUtil::ObtainLong(const std::string &key, int64_t defValue)
11225c1cde8Sopenharmony_ci{
11325c1cde8Sopenharmony_ci    std::shared_ptr<NativePreferences::Preferences> ptr = GetProfiles(path_, errCode_);
11425c1cde8Sopenharmony_ci    if (ptr == nullptr) {
11525c1cde8Sopenharmony_ci        return defValue;
11625c1cde8Sopenharmony_ci    }
11725c1cde8Sopenharmony_ci    return ptr->GetLong(key, defValue);
11825c1cde8Sopenharmony_ci}
11925c1cde8Sopenharmony_ci
12025c1cde8Sopenharmony_ciint PreferencesUtil::SaveFloat(const std::string &key, float value)
12125c1cde8Sopenharmony_ci{
12225c1cde8Sopenharmony_ci    std::shared_ptr<NativePreferences::Preferences> ptr = GetProfiles(path_, errCode_);
12325c1cde8Sopenharmony_ci    if (ptr == nullptr) {
12425c1cde8Sopenharmony_ci        return NativePreferences::E_ERROR;
12525c1cde8Sopenharmony_ci    }
12625c1cde8Sopenharmony_ci    int ret = ptr->PutFloat(key, value);
12725c1cde8Sopenharmony_ci    ptr->Flush();
12825c1cde8Sopenharmony_ci    return ret;
12925c1cde8Sopenharmony_ci}
13025c1cde8Sopenharmony_ci
13125c1cde8Sopenharmony_cifloat PreferencesUtil::ObtainFloat(const std::string &key, float defValue)
13225c1cde8Sopenharmony_ci{
13325c1cde8Sopenharmony_ci    std::shared_ptr<NativePreferences::Preferences> ptr = GetProfiles(path_, errCode_);
13425c1cde8Sopenharmony_ci    if (ptr == nullptr) {
13525c1cde8Sopenharmony_ci        return defValue;
13625c1cde8Sopenharmony_ci    }
13725c1cde8Sopenharmony_ci    return ptr->GetFloat(key, defValue);
13825c1cde8Sopenharmony_ci}
13925c1cde8Sopenharmony_ci
14025c1cde8Sopenharmony_cibool PreferencesUtil::IsExistKey(const std::string &key)
14125c1cde8Sopenharmony_ci{
14225c1cde8Sopenharmony_ci    std::shared_ptr<NativePreferences::Preferences> ptr = GetProfiles(path_, errCode_);
14325c1cde8Sopenharmony_ci    if (ptr == nullptr) {
14425c1cde8Sopenharmony_ci        return NativePreferences::E_ERROR;
14525c1cde8Sopenharmony_ci    }
14625c1cde8Sopenharmony_ci    return ptr->HasKey(key);
14725c1cde8Sopenharmony_ci}
14825c1cde8Sopenharmony_ci
14925c1cde8Sopenharmony_ciint PreferencesUtil::RemoveKey(const std::string &key)
15025c1cde8Sopenharmony_ci{
15125c1cde8Sopenharmony_ci    std::shared_ptr<NativePreferences::Preferences> ptr = GetProfiles(path_, errCode_);
15225c1cde8Sopenharmony_ci    if (ptr == nullptr) {
15325c1cde8Sopenharmony_ci        return NativePreferences::E_ERROR;
15425c1cde8Sopenharmony_ci    }
15525c1cde8Sopenharmony_ci    return ptr->Delete(key);
15625c1cde8Sopenharmony_ci}
15725c1cde8Sopenharmony_ci
15825c1cde8Sopenharmony_ciint PreferencesUtil::RemoveAll()
15925c1cde8Sopenharmony_ci{
16025c1cde8Sopenharmony_ci    std::shared_ptr<NativePreferences::Preferences> ptr = GetProfiles(path_, errCode_);
16125c1cde8Sopenharmony_ci    if (ptr == nullptr) {
16225c1cde8Sopenharmony_ci        return NativePreferences::E_ERROR;
16325c1cde8Sopenharmony_ci    }
16425c1cde8Sopenharmony_ci    return ptr->Clear();
16525c1cde8Sopenharmony_ci}
16625c1cde8Sopenharmony_ci
16725c1cde8Sopenharmony_civoid PreferencesUtil::Refresh()
16825c1cde8Sopenharmony_ci{
16925c1cde8Sopenharmony_ci    std::shared_ptr<NativePreferences::Preferences> ptr = GetProfiles(path_, errCode_);
17025c1cde8Sopenharmony_ci    if (ptr != nullptr) {
17125c1cde8Sopenharmony_ci        ptr->Flush();
17225c1cde8Sopenharmony_ci    }
17325c1cde8Sopenharmony_ci}
17425c1cde8Sopenharmony_ci
17525c1cde8Sopenharmony_ciint PreferencesUtil::RefreshSync()
17625c1cde8Sopenharmony_ci{
17725c1cde8Sopenharmony_ci    std::shared_ptr<NativePreferences::Preferences> ptr = GetProfiles(path_, errCode_);
17825c1cde8Sopenharmony_ci    if (ptr == nullptr) {
17925c1cde8Sopenharmony_ci        return NativePreferences::E_ERROR;
18025c1cde8Sopenharmony_ci    }
18125c1cde8Sopenharmony_ci    return ptr->FlushSync();
18225c1cde8Sopenharmony_ci}
18325c1cde8Sopenharmony_ci} // namespace Telephony
18425c1cde8Sopenharmony_ci} // namespace OHOS