1 /* 2 * Copyright (c) 2021-2022 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 #ifndef OHOS_FORM_FWK_FORM_DB_INFO_H 17 #define OHOS_FORM_FWK_FORM_DB_INFO_H 18 19 #include <string> 20 21 #include "form_record.h" 22 #include "nlohmann/json.hpp" 23 24 namespace OHOS { 25 namespace AppExecFwk { 26 struct FormDBInfo { 27 int64_t formId = -1; 28 int32_t userId = 0; 29 std::string formName; 30 std::string bundleName; 31 std::string moduleName; 32 std::string abilityName; 33 std::vector<int> formUserUids; 34 35 /** 36 * @brief Constructors 37 * 38 */ 39 FormDBInfo() = default; 40 41 /** 42 * @brief Constructors 43 * 44 */ FormDBInfoFormDBInfo45 FormDBInfo(const int64_t formIdTmp, const FormRecord &formRecord) 46 { 47 formId = formIdTmp; 48 userId = formRecord.userId; 49 formName = formRecord.formName; 50 bundleName = formRecord.bundleName; 51 moduleName = formRecord.moduleName; 52 abilityName = formRecord.abilityName; 53 formUserUids = formRecord.formUserUids; 54 } ContainsFormDBInfo55 bool Contains(const int uId) const 56 { 57 return std::find(formUserUids.begin(), formUserUids.end(), uId) != formUserUids.end(); 58 } RemoveFormDBInfo59 void Remove(const int uId) 60 { 61 auto itUId = std::find(formUserUids.begin(), formUserUids.end(), uId); 62 if (itUId != formUserUids.end()) { 63 formUserUids.erase(itUId); 64 } 65 } 66 /** 67 * @brief overloaded == for Indicates the formDBInfo by formId 68 * @return Returns true if the data equal; returns false otherwise. 69 */ 70 bool operator== (const FormDBInfo &formDBInfo) const 71 { 72 return (this->formId == formDBInfo.formId); 73 } 74 /** 75 * @brief Compare two data 76 * @return Returns true if the data equal; returns false otherwise. 77 */ CompareFormDBInfo78 bool Compare(const FormDBInfo &formDBInfo) const 79 { 80 if (formId != formDBInfo.formId) { 81 return false; 82 } 83 if (userId != formDBInfo.userId) { 84 return false; 85 } 86 if (formName != formDBInfo.formName) { 87 return false; 88 } 89 if (bundleName != formDBInfo.bundleName) { 90 return false; 91 } 92 if (moduleName != formDBInfo.moduleName) { 93 return false; 94 } 95 if (abilityName != formDBInfo.abilityName) { 96 return false; 97 } 98 if (formUserUids != formDBInfo.formUserUids) { 99 return false; 100 } 101 102 return true; 103 } 104 }; 105 106 class InnerFormInfo { 107 public: 108 /** 109 * @brief Constructors 110 */ InnerFormInfo()111 InnerFormInfo() 112 { 113 formDBInfo_.formId = -1; 114 } 115 /** 116 * @brief Constructors 117 * 118 */ InnerFormInfo(const FormDBInfo & formDBInfo)119 InnerFormInfo(const FormDBInfo &formDBInfo) 120 { 121 formDBInfo_.formId = formDBInfo.formId; 122 formDBInfo_.userId = formDBInfo.userId; 123 formDBInfo_.formName = formDBInfo.formName; 124 formDBInfo_.bundleName = formDBInfo.bundleName; 125 formDBInfo_.moduleName = formDBInfo.moduleName; 126 formDBInfo_.abilityName = formDBInfo.abilityName; 127 formDBInfo_.formUserUids = formDBInfo.formUserUids; 128 } 129 /** 130 * @brief Constructors 131 * 132 */ InnerFormInfo(const InnerFormInfo & innerFormInfo)133 InnerFormInfo(const InnerFormInfo &innerFormInfo) 134 { 135 formDBInfo_.formId = innerFormInfo.formDBInfo_.formId; 136 formDBInfo_.userId = innerFormInfo.formDBInfo_.userId; 137 formDBInfo_.formName = innerFormInfo.formDBInfo_.formName; 138 formDBInfo_.bundleName = innerFormInfo.formDBInfo_.bundleName; 139 formDBInfo_.moduleName = innerFormInfo.formDBInfo_.moduleName; 140 formDBInfo_.abilityName = innerFormInfo.formDBInfo_.abilityName; 141 formDBInfo_.formUserUids = innerFormInfo.formDBInfo_.formUserUids; 142 } 143 /** 144 * @brief Constructors 145 * 146 */ InnerFormInfo(const int64_t formId,const FormRecord & formRecord)147 InnerFormInfo(const int64_t formId, const FormRecord &formRecord) 148 { 149 formDBInfo_.formId = formId; 150 formDBInfo_.userId = formRecord.userId; 151 formDBInfo_.formName = formRecord.formName; 152 formDBInfo_.bundleName = formRecord.bundleName; 153 formDBInfo_.moduleName = formRecord.moduleName; 154 formDBInfo_.abilityName = formRecord.abilityName; 155 formDBInfo_.formUserUids = formRecord.formUserUids; 156 } ToString()157 std::string ToString() const 158 { 159 nlohmann::json obj; 160 obj["formId"] = formDBInfo_.formId; 161 obj["userId"] = formDBInfo_.userId; 162 obj["formName"] = formDBInfo_.formName; 163 obj["bundleName"] = formDBInfo_.bundleName; 164 obj["moduleName"] = formDBInfo_.moduleName; 165 obj["abilityName"] = formDBInfo_.abilityName; 166 obj["formUserUids"] = formDBInfo_.formUserUids; 167 return obj.dump(); 168 } 169 /** 170 * @brief Destructor 171 * 172 */ ~InnerFormInfo()173 virtual ~InnerFormInfo() {}; 174 /** 175 * @brief overloaded == for Indicates the formInfo by formId 176 * @return Returns true if the data equal; returns false otherwise. 177 */ 178 bool operator== (const InnerFormInfo &innerFormInfo) const 179 { 180 return (this->formDBInfo_.formId == innerFormInfo.formDBInfo_.formId); 181 } 182 183 /** 184 * @brief Transform the InnerFormInfo object to json. 185 * @param jsonObject Indicates the obtained json object. 186 */ 187 void ToJson(nlohmann::json &jsonObject) const; 188 189 /** 190 * @brief Transform the json object to InnerFormInfo object. 191 * @param jsonObject Indicates the obtained json object. 192 * @return Returns true on success, false on failure. 193 */ 194 bool FromJson(const nlohmann::json &jsonObject); 195 196 /** 197 * @brief Get application form id. 198 * @return Returns the form id. 199 */ GetFormId()200 int64_t GetFormId() const 201 { 202 return formDBInfo_.formId; 203 } 204 205 /** 206 * @brief Set application form id. 207 * @param formId Indicates the form id to be set. 208 */ SetFormId(const int64_t formId)209 void SetFormId(const int64_t formId) 210 { 211 formDBInfo_.formId = formId; 212 } 213 214 /** 215 * @brief Get application user id. 216 * @return Returns the user id. 217 */ GetUserId()218 int64_t GetUserId() const 219 { 220 return formDBInfo_.userId; 221 } 222 223 /** 224 * @brief Set application user id. 225 * @param userId Indicates the user id to be set. 226 */ SetUserId(const int64_t userId)227 void SetUserId(const int64_t userId) 228 { 229 formDBInfo_.userId = userId; 230 } 231 232 /** 233 * @brief Get application form name. 234 * @return Returns the form name. 235 */ GetModuleName()236 std::string GetModuleName() const 237 { 238 return formDBInfo_.moduleName; 239 } 240 241 /** 242 * @brief Set application form name. 243 * @param formName Indicates the form name to be set. 244 */ SetModuleName(const std::string & moduleName)245 void SetModuleName(const std::string &moduleName) 246 { 247 formDBInfo_.moduleName = moduleName; 248 } 249 250 /** 251 * @brief Get application bundle name. 252 * @return Returns the bundle name. 253 */ GetBundleName()254 std::string GetBundleName() const 255 { 256 return formDBInfo_.bundleName; 257 } 258 259 /** 260 * @brief Set application bundle name. 261 * @param bundleName Indicates the bundle name to be set. 262 */ SetBundleName(const std::string & bundleName)263 void SetBundleName(const std::string &bundleName) 264 { 265 formDBInfo_.bundleName = bundleName; 266 } 267 268 /** 269 * @brief Get application ability name. 270 * @return Returns the ability name. 271 */ GetAbilityName()272 std::string GetAbilityName() const 273 { 274 return formDBInfo_.abilityName; 275 } 276 277 /** 278 * @brief Set application ability name. 279 * @param abilityName Indicates the ability name to be set. 280 */ SetAbilityName(const std::string & abilityName)281 void SetAbilityName(const std::string &abilityName) 282 { 283 formDBInfo_.abilityName = abilityName; 284 } 285 286 /** 287 * @brief Get application formName. 288 * @return Returns the formName. 289 */ GetFormName()290 std::string GetFormName() const 291 { 292 return formDBInfo_.formName; 293 } 294 295 /** 296 * @brief Set application formName. 297 * @param userId Indicates the formName to be set. 298 */ SetFormName(std::string formName)299 void SetFormName(std::string formName) 300 { 301 formDBInfo_.formName = formName; 302 } 303 304 /** 305 * @brief Get application user uids. 306 * @return Returns the user uids. 307 */ GetUserUids()308 std::vector<int> GetUserUids() const 309 { 310 return formDBInfo_.formUserUids; 311 } 312 313 /** 314 * @brief Set application user uids. 315 * @param userId Indicates the user uids to be set. 316 */ SetUserUids(const std::vector<int> & formUserUids)317 void SetUserUids(const std::vector<int> &formUserUids) 318 { 319 formDBInfo_.formUserUids.insert(formDBInfo_.formUserUids.end(), formUserUids.begin(), formUserUids.end()); 320 } 321 322 /** 323 * @brief Set application formRecord 324 * @param formRecord Indicates the formRecord to be set. 325 */ SetFormDBInfo(const FormDBInfo & formDBInfo)326 void SetFormDBInfo(const FormDBInfo &formDBInfo) 327 { 328 formDBInfo_ = formDBInfo; 329 } 330 331 /** 332 * @brief Get application formRecord. 333 * @return Returns the formRecord 334 */ GetFormDBInfo()335 FormDBInfo GetFormDBInfo() const 336 { 337 return formDBInfo_; 338 } 339 340 void AddUserUid(const int callingUid); 341 bool DeleteUserUid(const int callingUid); 342 343 private: 344 FormDBInfo formDBInfo_; 345 }; 346 } // namespace AppExecFwk 347 } // namespace OHOS 348 #endif // OHOS_FORM_FWK_FORM_DB_INFO_H 349