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