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 #include "form_constants.h" 24 25 namespace OHOS { 26 namespace AppExecFwk { 27 struct FormDBInfo { 28 int64_t formId = -1; 29 int32_t userId = 0; 30 int32_t providerUserId = -1; 31 std::string formName; 32 std::string bundleName; 33 std::string moduleName; 34 std::string abilityName; 35 std::vector<int> formUserUids; 36 Constants::FormLocation formLocation; 37 bool isThemeForm = false; 38 bool enableForm = true; 39 bool lockForm = false; 40 /** 41 * @brief Constructors 42 * 43 */ 44 FormDBInfo() = default; 45 46 /** 47 * @brief Constructors 48 * 49 */ FormDBInfoFormDBInfo50 FormDBInfo(const int64_t formIdTmp, const FormRecord &formRecord) 51 { 52 formId = formIdTmp; 53 userId = formRecord.userId; 54 providerUserId = formRecord.providerUserId; 55 formName = formRecord.formName; 56 bundleName = formRecord.bundleName; 57 moduleName = formRecord.moduleName; 58 abilityName = formRecord.abilityName; 59 formUserUids = formRecord.formUserUids; 60 formLocation = formRecord.formLocation; 61 isThemeForm = formRecord.isThemeForm; 62 enableForm = formRecord.enableForm; 63 lockForm = formRecord.lockForm; 64 } ContainsFormDBInfo65 bool Contains(const int uId) const 66 { 67 return std::find(formUserUids.begin(), formUserUids.end(), uId) != formUserUids.end(); 68 } RemoveFormDBInfo69 void Remove(const int uId) 70 { 71 auto itUId = std::find(formUserUids.begin(), formUserUids.end(), uId); 72 if (itUId != formUserUids.end()) { 73 formUserUids.erase(itUId); 74 } 75 } 76 /** 77 * @brief overloaded == for Indicates the formDBInfo by formId 78 * @return Returns true if the data equal; returns false otherwise. 79 */ 80 bool operator== (const FormDBInfo &formDBInfo) const 81 { 82 return (this->formId == formDBInfo.formId); 83 } 84 /** 85 * @brief Compare two data 86 * @return Returns true if the data equal; returns false otherwise. 87 */ CompareFormDBInfo88 bool Compare(const FormDBInfo &formDBInfo) const 89 { 90 if (formId != formDBInfo.formId) { 91 return false; 92 } 93 if (userId != formDBInfo.userId) { 94 return false; 95 } 96 if (providerUserId != formDBInfo.providerUserId) { 97 return false; 98 } 99 if (formName != formDBInfo.formName) { 100 return false; 101 } 102 if (bundleName != formDBInfo.bundleName) { 103 return false; 104 } 105 if (moduleName != formDBInfo.moduleName) { 106 return false; 107 } 108 if (abilityName != formDBInfo.abilityName) { 109 return false; 110 } 111 if (formUserUids != formDBInfo.formUserUids) { 112 return false; 113 } 114 if (formLocation != formDBInfo.formLocation) { 115 return false; 116 } 117 if (isThemeForm != formDBInfo.isThemeForm) { 118 return false; 119 } 120 if (enableForm != formDBInfo.enableForm) { 121 return false; 122 } 123 if (lockForm != formDBInfo.lockForm) { 124 return false; 125 } 126 127 return true; 128 } 129 }; 130 131 class InnerFormInfo { 132 public: 133 /** 134 * @brief Constructors 135 */ InnerFormInfo()136 InnerFormInfo() 137 { 138 formDBInfo_.formId = -1; 139 } 140 /** 141 * @brief Constructors 142 * 143 */ InnerFormInfo(const FormDBInfo & formDBInfo)144 InnerFormInfo(const FormDBInfo &formDBInfo) 145 { 146 formDBInfo_.formId = formDBInfo.formId; 147 formDBInfo_.userId = formDBInfo.userId; 148 formDBInfo_.providerUserId = formDBInfo.providerUserId; 149 formDBInfo_.formName = formDBInfo.formName; 150 formDBInfo_.bundleName = formDBInfo.bundleName; 151 formDBInfo_.moduleName = formDBInfo.moduleName; 152 formDBInfo_.abilityName = formDBInfo.abilityName; 153 formDBInfo_.formUserUids = formDBInfo.formUserUids; 154 formDBInfo_.formLocation = formDBInfo.formLocation; 155 formDBInfo_.isThemeForm = formDBInfo.isThemeForm; 156 formDBInfo_.enableForm = formDBInfo.enableForm; 157 formDBInfo_.lockForm = formDBInfo.lockForm; 158 } 159 /** 160 * @brief Constructors 161 * 162 */ InnerFormInfo(const InnerFormInfo & innerFormInfo)163 InnerFormInfo(const InnerFormInfo &innerFormInfo) 164 { 165 formDBInfo_.formId = innerFormInfo.formDBInfo_.formId; 166 formDBInfo_.userId = innerFormInfo.formDBInfo_.userId; 167 formDBInfo_.providerUserId = innerFormInfo.formDBInfo_.providerUserId; 168 formDBInfo_.formName = innerFormInfo.formDBInfo_.formName; 169 formDBInfo_.bundleName = innerFormInfo.formDBInfo_.bundleName; 170 formDBInfo_.moduleName = innerFormInfo.formDBInfo_.moduleName; 171 formDBInfo_.abilityName = innerFormInfo.formDBInfo_.abilityName; 172 formDBInfo_.formUserUids = innerFormInfo.formDBInfo_.formUserUids; 173 formDBInfo_.formLocation = innerFormInfo.formDBInfo_.formLocation; 174 formDBInfo_.isThemeForm = innerFormInfo.formDBInfo_.isThemeForm; 175 formDBInfo_.enableForm = innerFormInfo.formDBInfo_.enableForm; 176 formDBInfo_.lockForm = innerFormInfo.formDBInfo_.lockForm; 177 } 178 /** 179 * @brief Constructors 180 * 181 */ InnerFormInfo(const int64_t formId,const FormRecord & formRecord)182 InnerFormInfo(const int64_t formId, const FormRecord &formRecord) 183 { 184 formDBInfo_.formId = formId; 185 formDBInfo_.userId = formRecord.userId; 186 formDBInfo_.providerUserId = formRecord.providerUserId; 187 formDBInfo_.formName = formRecord.formName; 188 formDBInfo_.bundleName = formRecord.bundleName; 189 formDBInfo_.moduleName = formRecord.moduleName; 190 formDBInfo_.abilityName = formRecord.abilityName; 191 formDBInfo_.formUserUids = formRecord.formUserUids; 192 formDBInfo_.formLocation = formRecord.formLocation; 193 formDBInfo_.isThemeForm = formRecord.isThemeForm; 194 formDBInfo_.enableForm = formRecord.enableForm; 195 formDBInfo_.lockForm = formRecord.lockForm; 196 } ToString()197 std::string ToString() const 198 { 199 nlohmann::json obj; 200 obj["formId"] = formDBInfo_.formId; 201 obj["userId"] = formDBInfo_.userId; 202 obj["providerUserId"] = formDBInfo_.providerUserId; 203 obj["formName"] = formDBInfo_.formName; 204 obj["bundleName"] = formDBInfo_.bundleName; 205 obj["moduleName"] = formDBInfo_.moduleName; 206 obj["abilityName"] = formDBInfo_.abilityName; 207 obj["formUserUids"] = formDBInfo_.formUserUids; 208 obj["formLocation"] = formDBInfo_.formLocation; 209 obj["isThemeForm"] = formDBInfo_.isThemeForm; 210 obj["enableForm"] = formDBInfo_.enableForm; 211 obj["lockForm"] = formDBInfo_.lockForm; 212 return obj.dump(); 213 } 214 /** 215 * @brief Destructor 216 * 217 */ ~InnerFormInfo()218 virtual ~InnerFormInfo() {}; 219 /** 220 * @brief overloaded == for Indicates the formInfo by formId 221 * @return Returns true if the data equal; returns false otherwise. 222 */ 223 bool operator== (const InnerFormInfo &innerFormInfo) const 224 { 225 return (this->formDBInfo_.formId == innerFormInfo.formDBInfo_.formId); 226 } 227 228 /** 229 * @brief Transform the InnerFormInfo object to json. 230 * @param jsonObject Indicates the obtained json object. 231 */ 232 void ToJson(nlohmann::json &jsonObject) const; 233 234 /** 235 * @brief Transform the json object to InnerFormInfo object. 236 * @param jsonObject Indicates the obtained json object. 237 * @return Returns true on success, false on failure. 238 */ 239 bool FromJson(const nlohmann::json &jsonObject); 240 241 /** 242 * @brief Get application form id. 243 * @return Returns the form id. 244 */ GetFormId()245 int64_t GetFormId() const 246 { 247 return formDBInfo_.formId; 248 } 249 250 /** 251 * @brief Set application form id. 252 * @param formId Indicates the form id to be set. 253 */ SetFormId(const int64_t formId)254 void SetFormId(const int64_t formId) 255 { 256 formDBInfo_.formId = formId; 257 } 258 259 /** 260 * @brief Get application user id. 261 * @return Returns the user id. 262 */ GetUserId()263 int64_t GetUserId() const 264 { 265 return formDBInfo_.userId; 266 } 267 268 /** 269 * @brief Set application user id. 270 * @param userId Indicates the user id to be set. 271 */ SetUserId(const int64_t userId)272 void SetUserId(const int64_t userId) 273 { 274 formDBInfo_.userId = userId; 275 } 276 277 /** 278 * @brief Get application form name. 279 * @return Returns the form name. 280 */ GetModuleName()281 std::string GetModuleName() const 282 { 283 return formDBInfo_.moduleName; 284 } 285 286 /** 287 * @brief Set application form name. 288 * @param formName Indicates the form name to be set. 289 */ SetModuleName(const std::string & moduleName)290 void SetModuleName(const std::string &moduleName) 291 { 292 formDBInfo_.moduleName = moduleName; 293 } 294 295 /** 296 * @brief Get application bundle name. 297 * @return Returns the bundle name. 298 */ GetBundleName()299 std::string GetBundleName() const 300 { 301 return formDBInfo_.bundleName; 302 } 303 304 /** 305 * @brief Set application bundle name. 306 * @param bundleName Indicates the bundle name to be set. 307 */ SetBundleName(const std::string & bundleName)308 void SetBundleName(const std::string &bundleName) 309 { 310 formDBInfo_.bundleName = bundleName; 311 } 312 313 /** 314 * @brief Get application ability name. 315 * @return Returns the ability name. 316 */ GetAbilityName()317 std::string GetAbilityName() const 318 { 319 return formDBInfo_.abilityName; 320 } 321 322 /** 323 * @brief Set application ability name. 324 * @param abilityName Indicates the ability name to be set. 325 */ SetAbilityName(const std::string & abilityName)326 void SetAbilityName(const std::string &abilityName) 327 { 328 formDBInfo_.abilityName = abilityName; 329 } 330 331 /** 332 * @brief Get application formName. 333 * @return Returns the formName. 334 */ GetFormName()335 std::string GetFormName() const 336 { 337 return formDBInfo_.formName; 338 } 339 340 /** 341 * @brief Set application formName. 342 * @param formName Indicates the formName to be set. 343 */ SetFormName(std::string formName)344 void SetFormName(std::string formName) 345 { 346 formDBInfo_.formName = formName; 347 } 348 349 /** 350 * @brief Get application user uids. 351 * @return Returns the user uids. 352 */ GetUserUids()353 std::vector<int> GetUserUids() const 354 { 355 return formDBInfo_.formUserUids; 356 } 357 358 /** 359 * @brief Set application user uids. 360 * @param userId Indicates the user uids to be set. 361 */ SetUserUids(const std::vector<int> & formUserUids)362 void SetUserUids(const std::vector<int> &formUserUids) 363 { 364 formDBInfo_.formUserUids.insert(formDBInfo_.formUserUids.end(), formUserUids.begin(), formUserUids.end()); 365 } 366 367 /** 368 * @brief Set application formRecord 369 * @param formRecord Indicates the formRecord to be set. 370 */ SetFormDBInfo(const FormDBInfo & formDBInfo)371 void SetFormDBInfo(const FormDBInfo &formDBInfo) 372 { 373 formDBInfo_ = formDBInfo; 374 } 375 376 /** 377 * @brief Get application formRecord. 378 * @return Returns the formRecord 379 */ GetFormDBInfo()380 FormDBInfo GetFormDBInfo() const 381 { 382 return formDBInfo_; 383 } 384 385 /** 386 * @brief Set whether it belongs to theme form. 387 * @param isThemeForm is theme form or not. 388 */ SetIsThemeForm(bool isThemeForm)389 void SetIsThemeForm(bool isThemeForm) 390 { 391 formDBInfo_.isThemeForm = isThemeForm; 392 } 393 394 /** 395 * @brief Set whether it belongs to theme form. 396 * @param isThemeForm is theme form or not. 397 */ GetIsThemeForm()398 bool GetIsThemeForm() const 399 { 400 return formDBInfo_.isThemeForm; 401 } 402 IsEnableForm()403 bool IsEnableForm() const 404 { 405 return formDBInfo_.enableForm; 406 } 407 SetEnableForm(bool enableForm)408 void SetEnableForm(bool enableForm) 409 { 410 formDBInfo_.enableForm = enableForm; 411 } 412 IsLockForm()413 bool IsLockForm() const 414 { 415 return formDBInfo_.lockForm; 416 } 417 SetLockForm(bool lockForm)418 void SetLockForm(bool lockForm) 419 { 420 formDBInfo_.lockForm = lockForm; 421 } 422 423 void AddUserUid(const int callingUid); 424 bool DeleteUserUid(const int callingUid); 425 426 private: 427 FormDBInfo formDBInfo_; 428 }; 429 } // namespace AppExecFwk 430 } // namespace OHOS 431 #endif // OHOS_FORM_FWK_FORM_DB_INFO_H 432