1190978c3Sopenharmony_ci/* 2190978c3Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 3190978c3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4190978c3Sopenharmony_ci * you may not use this file except in compliance with the License. 5190978c3Sopenharmony_ci * You may obtain a copy of the License at 6190978c3Sopenharmony_ci * 7190978c3Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8190978c3Sopenharmony_ci * 9190978c3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10190978c3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11190978c3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12190978c3Sopenharmony_ci * See the License for the specific language governing permissions and 13190978c3Sopenharmony_ci * limitations under the License. 14190978c3Sopenharmony_ci */ 15190978c3Sopenharmony_ci 16190978c3Sopenharmony_ci#include "firmware_changelog_utils.h" 17190978c3Sopenharmony_ci 18190978c3Sopenharmony_ci#include "firmware_component_operator.h" 19190978c3Sopenharmony_ci#include "firmware_constant.h" 20190978c3Sopenharmony_ci#include "firmware_log.h" 21190978c3Sopenharmony_ci#include "firmware_preferences_utils.h" 22190978c3Sopenharmony_ci 23190978c3Sopenharmony_cinamespace OHOS { 24190978c3Sopenharmony_cinamespace UpdateEngine { 25190978c3Sopenharmony_ciFirmwareChangelogUtils::FirmwareChangelogUtils() {} 26190978c3Sopenharmony_ci 27190978c3Sopenharmony_ciFirmwareChangelogUtils::~FirmwareChangelogUtils() {} 28190978c3Sopenharmony_cistd::string FirmwareChangelogUtils::GetChangelogDir() 29190978c3Sopenharmony_ci{ 30190978c3Sopenharmony_ci return Firmware::CHANGELOG_PATH; 31190978c3Sopenharmony_ci} 32190978c3Sopenharmony_ci 33190978c3Sopenharmony_ci std::vector<std::string> FirmwareChangelogUtils::GetNewVersionComponentIds() 34190978c3Sopenharmony_ci{ 35190978c3Sopenharmony_ci std::vector<std::string> componentIds; 36190978c3Sopenharmony_ci std::vector<FirmwareComponent> dbComponentList; 37190978c3Sopenharmony_ci FirmwareComponentOperator().QueryAll(dbComponentList); 38190978c3Sopenharmony_ci for (FirmwareComponent &component : dbComponentList) { 39190978c3Sopenharmony_ci if (std::find(componentIds.begin(), componentIds.end(), component.componentId) == componentIds.end()) { 40190978c3Sopenharmony_ci FIRMWARE_LOGI("new version componentId %{public}s", component.componentId.c_str()); 41190978c3Sopenharmony_ci componentIds.push_back(component.componentId); 42190978c3Sopenharmony_ci } 43190978c3Sopenharmony_ci } 44190978c3Sopenharmony_ci 45190978c3Sopenharmony_ci return componentIds; 46190978c3Sopenharmony_ci} 47190978c3Sopenharmony_ci 48190978c3Sopenharmony_cistd::vector<std::string> FirmwareChangelogUtils::GetCurrentVersionComponentIds() 49190978c3Sopenharmony_ci{ 50190978c3Sopenharmony_ci std::vector<std::string> componentIds; 51190978c3Sopenharmony_ci std::shared_ptr<FirmwarePreferencesUtil> preferencesUtil = DelayedSingleton<FirmwarePreferencesUtil>::GetInstance(); 52190978c3Sopenharmony_ci if (preferencesUtil->IsExist(Firmware::HOTA_CURRENT_COMPONENT_ID)) { 53190978c3Sopenharmony_ci componentIds.push_back(preferencesUtil->ObtainString(Firmware::HOTA_CURRENT_COMPONENT_ID, "")); 54190978c3Sopenharmony_ci } 55190978c3Sopenharmony_ci 56190978c3Sopenharmony_ci return componentIds; 57190978c3Sopenharmony_ci} 58190978c3Sopenharmony_ci 59190978c3Sopenharmony_civoid FirmwareChangelogUtils::SaveHotaCurrentVersionComponentId() 60190978c3Sopenharmony_ci{ 61190978c3Sopenharmony_ci std::shared_ptr<FirmwarePreferencesUtil> preferencesUtil = DelayedSingleton<FirmwarePreferencesUtil>::GetInstance(); 62190978c3Sopenharmony_ci std::vector<FirmwareComponent> components; 63190978c3Sopenharmony_ci FirmwareComponentOperator().QueryAll(components); 64190978c3Sopenharmony_ci for (auto const &component : components) { 65190978c3Sopenharmony_ci if (component.versionPackageType == PackageType::NORMAL) { 66190978c3Sopenharmony_ci preferencesUtil->SaveString(Firmware::HOTA_CURRENT_COMPONENT_ID, component.componentId); 67190978c3Sopenharmony_ci return; 68190978c3Sopenharmony_ci } 69190978c3Sopenharmony_ci } 70190978c3Sopenharmony_ci} 71190978c3Sopenharmony_ci 72190978c3Sopenharmony_civoid FirmwareChangelogUtils::GetAllComponentIds(std::vector<std::string> &componentIds) 73190978c3Sopenharmony_ci{ 74190978c3Sopenharmony_ci std::vector<std::string> curComponentIds = GetCurrentVersionComponentIds(); 75190978c3Sopenharmony_ci std::vector<std::string> newComponentIds = GetNewVersionComponentIds(); 76190978c3Sopenharmony_ci 77190978c3Sopenharmony_ci componentIds.insert(componentIds.end(), curComponentIds.begin(), curComponentIds.end()); 78190978c3Sopenharmony_ci componentIds.insert(componentIds.end(), newComponentIds.begin(), newComponentIds.end()); 79190978c3Sopenharmony_ci} 80190978c3Sopenharmony_ci} // namespace UpdateEngine 81190978c3Sopenharmony_ci} // namespace OHOS 82