• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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