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