• 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 
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