1 /*
2 * Copyright (c) 2023 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
16 #include "parse_util.h"
17 #include "system_ability_ondemand_reason.h"
18
19 namespace OHOS {
OnDemandReasonExtraData(int32_t code,const std::string & data,const std::map<std::string,std::string> & want)20 OnDemandReasonExtraData::OnDemandReasonExtraData(int32_t code, const std::string& data,
21 const std::map<std::string, std::string>& want)
22 {
23 code_ = code;
24 data_ = data;
25 want_ = want;
26 }
27
GetData() const28 std::string OnDemandReasonExtraData::GetData() const
29 {
30 return data_;
31 }
32
GetCode() const33 int32_t OnDemandReasonExtraData::GetCode() const
34 {
35 return code_;
36 }
37
GetWant() const38 const std::map<std::string, std::string>& OnDemandReasonExtraData::GetWant() const
39 {
40 return want_;
41 }
42
Marshalling(Parcel & parcel) const43 bool OnDemandReasonExtraData::Marshalling(Parcel& parcel) const
44 {
45 if (!parcel.WriteInt32(code_)) {
46 return false;
47 }
48 if (!parcel.WriteString(data_)) {
49 return false;
50 }
51 nlohmann::json payload;
52 for (auto it = want_.begin(); it != want_.end(); ++it) {
53 payload[it->first] = it->second;
54 }
55 if (!parcel.WriteString(payload.dump())) {
56 return false;
57 }
58 return true;
59 }
60
Unmarshalling(Parcel & parcel)61 OnDemandReasonExtraData *OnDemandReasonExtraData::Unmarshalling(Parcel& parcel)
62 {
63 int32_t code = 0;
64 if (!parcel.ReadInt32(code)) {
65 return nullptr;
66 }
67 std::string data;
68 if (!parcel.ReadString(data)) {
69 return nullptr;
70 }
71 std::map<std::string, std::string> want;
72 nlohmann::json payload = ParseUtil::StringToJsonObj(parcel.ReadString());
73 for (nlohmann::json::iterator it = payload.begin(); it != payload.end(); ++it) {
74 if (it.value().is_string()) {
75 want[it.key()] = it.value();
76 }
77 }
78 OnDemandReasonExtraData* extraData = new OnDemandReasonExtraData(code, data, want);
79 return extraData;
80 }
81
SystemAbilityOnDemandReason(OnDemandReasonId reasonId,const std::string & reasonName,const std::string & reasonValue,int64_t extraDataId)82 SystemAbilityOnDemandReason::SystemAbilityOnDemandReason(OnDemandReasonId reasonId, const std::string& reasonName,
83 const std::string& reasonValue, int64_t extraDataId)
84 {
85 reasonId_ = reasonId;
86 reasonName_ = reasonName;
87 reasonValue_ = reasonValue;
88 extraDataId_ = extraDataId;
89 }
90
SetId(OnDemandReasonId reasonId)91 void SystemAbilityOnDemandReason::SetId(OnDemandReasonId reasonId)
92 {
93 reasonId_ = reasonId;
94 }
95
GetId() const96 OnDemandReasonId SystemAbilityOnDemandReason::GetId() const
97 {
98 return reasonId_;
99 }
100
SetName(const std::string & reasonName)101 void SystemAbilityOnDemandReason::SetName(const std::string& reasonName)
102 {
103 reasonName_ = reasonName;
104 }
105
GetName() const106 std::string SystemAbilityOnDemandReason::GetName() const
107 {
108 return reasonName_;
109 }
110
SetValue(const std::string & reasonValue)111 void SystemAbilityOnDemandReason::SetValue(const std::string& reasonValue)
112 {
113 reasonValue_ = reasonValue;
114 }
115
GetValue() const116 std::string SystemAbilityOnDemandReason::GetValue() const
117 {
118 return reasonValue_;
119 }
120
SetExtraDataId(int64_t extraDataId)121 void SystemAbilityOnDemandReason::SetExtraDataId(int64_t extraDataId)
122 {
123 extraDataId_ = extraDataId;
124 }
125
GetExtraDataId() const126 int64_t SystemAbilityOnDemandReason::GetExtraDataId() const
127 {
128 return extraDataId_;
129 }
130
HasExtraData() const131 bool SystemAbilityOnDemandReason::HasExtraData() const
132 {
133 return reasonId_ == OnDemandReasonId::COMMON_EVENT;
134 }
135
SetExtraData(OnDemandReasonExtraData & extraData)136 void SystemAbilityOnDemandReason::SetExtraData(OnDemandReasonExtraData& extraData)
137 {
138 extraData_ = extraData;
139 }
140
GetExtraData() const141 const OnDemandReasonExtraData& SystemAbilityOnDemandReason::GetExtraData() const
142 {
143 return extraData_;
144 }
145 }