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