• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #include "upgrade_restore_task_report.h"
16 
17 #include <sstream>
18 #include <nlohmann/json.hpp>
19 
20 #include "media_log.h"
21 #include "hisysevent.h"
22 #include "media_backup_report_data_type.h"
23 #include "upgrade_restore_gallery_media_task.h"
24 #include "json_utils.h"
25 
26 namespace OHOS::Media {
27 static constexpr char MEDIA_LIBRARY[] = "MEDIALIBRARY";
Report(const std::string & taskInfo)28 int32_t UpgradeRestoreGalleryMediaTask::Report(const std::string &taskInfo)
29 {
30     UpgradeRestoreGalleryMediaTask::ResultData resultData = this->ParseFromJsonStr(taskInfo);
31     MEDIA_INFO_LOG("UpgradeRestoreGalleryMediaTask, resultData: %{public}s", this->ToString(resultData).c_str());
32     for (const auto &eventInfo : this->Parse(resultData)) {
33         int32_t ret = HiSysEventWrite(MEDIA_LIBRARY,
34             "MEDIALIB_BACKUP_RESTORE_RESULT",
35             HiviewDFX::HiSysEvent::EventType::STATISTIC,
36             "SCENE_CODE",
37             eventInfo.sceneCode,
38             "TASK_ID",
39             eventInfo.taskId,
40             "ERROR_CODE",
41             eventInfo.errorCode,
42             "ERROR_INFO",
43             eventInfo.errorInfo,
44             "TYPE",
45             eventInfo.type,
46             "BACKUP_INFO",
47             eventInfo.backupInfo,
48             "DUPLICATE_COUNT",
49             eventInfo.duplicateCount,
50             "FAILED_COUNT",
51             eventInfo.failedCount,
52             "SUCCESS_COUNT",
53             eventInfo.successCount);
54         if (ret != 0) {
55             MEDIA_ERR_LOG("UpgradeRestoreGalleryMediaTask error:%{public}d", ret);
56         }
57     }
58     return 0;
59 }
60 
ParseFromJsonStr(const std::string & jsonStr)61 UpgradeRestoreGalleryMediaTask::ResultData UpgradeRestoreGalleryMediaTask::ParseFromJsonStr(const std::string &jsonStr)
62 {
63     JsonUtils jsonUtils;
64     nlohmann::json jsonObj = jsonUtils.Parse(jsonStr);
65     ResultData resultData;
66     for (const auto &info : jsonUtils.GetArray(jsonObj, "resultInfo")) {
67         ResultInfo resultInfo;
68         resultInfo.errorCode = jsonUtils.GetString(info, "errorCode");
69         resultInfo.errorInfo = jsonUtils.GetString(info, "errorInfo");
70         resultInfo.type = jsonUtils.GetString(info, "type");
71         for (const auto &backup : jsonUtils.GetArray(info, "infos")) {
72             BackupInfo backupInfo;
73             backupInfo.backupInfo = jsonUtils.GetString(backup, "backupInfo");
74             backupInfo.duplicateCount = jsonUtils.GetInt(backup, "duplicateCount");
75             backupInfo.failedCount = jsonUtils.GetInt(backup, "failedCount");
76             backupInfo.successCount = jsonUtils.GetInt(backup, "successCount");
77             resultInfo.infos.push_back(backupInfo);
78         }
79         resultData.resultInfo.push_back(resultInfo);
80     }
81     return resultData;
82 }
83 
Parse(const UpgradeRestoreGalleryMediaTask::ResultData & resultData)84 std::vector<MediaRestoreResultInfo> UpgradeRestoreGalleryMediaTask::Parse(
85     const UpgradeRestoreGalleryMediaTask::ResultData &resultData)
86 {
87     std::vector<MediaRestoreResultInfo> result;
88     for (const auto &resultInfo : resultData.resultInfo) {
89         for (const auto &backupInfo : resultInfo.infos) {
90             MediaRestoreResultInfo eventInfo;
91             eventInfo.sceneCode = this->sceneCode_;
92             eventInfo.taskId = this->taskId_;
93             eventInfo.errorCode = resultInfo.errorCode;
94             eventInfo.errorInfo = resultInfo.errorInfo;
95             eventInfo.type = resultInfo.type;
96             eventInfo.backupInfo = backupInfo.backupInfo;
97             eventInfo.duplicateCount = backupInfo.duplicateCount;
98             eventInfo.failedCount = backupInfo.failedCount;
99             eventInfo.successCount = backupInfo.successCount;
100             result.emplace_back(eventInfo);
101         }
102     }
103     return result;
104 }
105 
ToString(const UpgradeRestoreGalleryMediaTask::ResultData & resultData)106 std::string UpgradeRestoreGalleryMediaTask::ToString(const UpgradeRestoreGalleryMediaTask::ResultData &resultData)
107 {
108     std::stringstream ss;
109     for (const auto &resultInfo : resultData.resultInfo) {
110         ss << "ErrorCode: " << resultInfo.errorCode << ", ";
111         ss << "ErrorInfo: " << resultInfo.errorInfo << ", ";
112         ss << "Type: " << resultInfo.type << ", ";
113         for (const auto &backupInfo : resultInfo.infos) {
114             ss << "BackupInfo: " << backupInfo.backupInfo << ", ";
115             ss << "DuplicateCount: " << backupInfo.duplicateCount << ", ";
116             ss << "FailedCount: " << backupInfo.failedCount << ", ";
117             ss << "SuccessCount: " << backupInfo.successCount << ", ";
118         }
119     }
120     return ss.str();
121 }
122 }  // namespace OHOS::Media