• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 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_MEDIALIBRARY_COMMAND_PARSE_H
17 #define OHOS_MEDIALIBRARY_COMMAND_PARSE_H
18 
19 #include <string>
20 #include <unordered_map>
21 #include <vector>
22 
23 #include "abs_rdb_predicates.h"
24 #include "datashare_predicates.h"
25 #include "dir_asset.h"
26 #include "medialibrary_db_const.h"
27 #include "uri.h"
28 #include "values_bucket.h"
29 
30 namespace OHOS {
31 namespace Media {
32 #define EXPORT __attribute__ ((visibility ("default")))
33 enum class EXPORT OperationObject : uint32_t {
34     UNKNOWN_OBJECT = 0,
35     FILESYSTEM_ASSET,
36     FILESYSTEM_PHOTO,
37     FILESYSTEM_AUDIO,
38     FILESYSTEM_DIR,
39     FILESYSTEM_ALBUM,
40     SMART_ALBUM,
41     SMART_ALBUM_MAP,
42     THUMBNAIL,
43     THUMBNAIL_ASTC,
44     SMART_ALBUM_ASSETS,
45     ASSETMAP,
46     ALL_DEVICE,
47     ACTIVE_DEVICE,
48     MEDIA_VOLUME,
49     BUNDLE_PERMISSION,
50     PHOTO_ALBUM,
51     PHOTO_MAP,
52     UFM_PHOTO,
53     UFM_AUDIO,
54     UFM_ALBUM,
55     UFM_MAP,
56     PAH_PHOTO,
57     PAH_ALBUM,
58     PAH_MAP,
59     TOOL_PHOTO,
60     TOOL_AUDIO,
61     VISION_START,
62     VISION_OCR = VISION_START,
63     VISION_LABEL,
64     VISION_AESTHETICS,
65     VISION_OBJECT,
66     VISION_RECOMMENDATION,
67     VISION_SEGMENTATION,
68     VISION_COMPOSITION,
69     VISION_TOTAL,
70     VISION_IMAGE_FACE,
71     VISION_FACE_TAG,
72     VISION_SALIENCY,
73     VISION_END = VISION_SALIENCY,
74     GEO_DICTIONARY,
75     GEO_KNOWLEDGE,
76     GEO_PHOTO,
77     ANALYSIS_PHOTO_ALBUM,
78     ANALYSIS_PHOTO_MAP,
79     PAH_FORM_MAP,
80     SEARCH_TOTAL,  // search
81     PAH_MULTISTAGES_CAPTURE,
82 };
83 
84 enum class EXPORT OperationType : uint32_t {
85     UNKNOWN_TYPE = 0,
86     OPEN,
87     CLOSE,
88     CREATE,
89     DELETE,
90     DELETE_TOOL,
91     UPDATE,
92     QUERY,
93     GETCAPACITY,
94     SCAN,
95     TRASH,
96     GENERATE,
97     AGING,
98     DISTRIBUTE_AGING,
99     COPY,
100     INSERT_PERMISSION,
101     ALBUM_ADD_PHOTOS,
102     ALBUM_REMOVE_PHOTOS,
103     ALBUM_RECOVER_ASSETS,
104     ALBUM_DELETE_ASSETS,                // Delete assets permanently from system
105     TRASH_PHOTO,
106     UPDATE_PENDING,
107     SET_USER_COMMENT,
108     INDEX,
109     COMPAT_ALBUM_DELETE_ASSETS,
110     COMMIT_EDIT,
111     REVERT_EDIT,
112     HIDE,
113     QUERY_HIDDEN,
114     ALBUM_ORDER,
115     OPRN_STORE_FORM_ID,
116     OPRN_REMOVE_FORM_ID,
117     PORTRAIT_DISPLAY_LEVEL,
118     PORTRAIT_IS_ME,
119     PORTRAIT_ALBUM_NAME,
120     PORTRAIT_MERGE_ALBUM,
121     DISMISS_ASSET,
122     PORTRAIT_COVER_URI,
123     SUBMIT_CACHE,
124     BATCH_UPDATE_FAV,
125     BATCH_UPDATE_USER_COMMENT,
126     SET_PHOTO_QUALITY,
127     ADD_IMAGE,
128     PROCESS_IMAGE,
129     SET_LOCATION,
130 };
131 
132 class MediaLibraryCommand {
133 public:
134     EXPORT explicit MediaLibraryCommand(const Uri &uri);
135     EXPORT MediaLibraryCommand(const Uri &uri, const NativeRdb::ValuesBucket &value);
136     EXPORT MediaLibraryCommand(const Uri &uri, const OperationType &oprnType);
137     EXPORT MediaLibraryCommand(const OperationObject &oprnObject, const OperationType &oprnType,
138         MediaLibraryApi api = MediaLibraryApi::API_OLD);
139     EXPORT MediaLibraryCommand(const OperationObject &oprnObject, const OperationType &oprnType,
140         const NativeRdb::ValuesBucket &value, MediaLibraryApi api = MediaLibraryApi::API_OLD);
141     EXPORT MediaLibraryCommand(const OperationObject &oprnObject, const OperationType &oprnType,
142         const std::string &networkId, MediaLibraryApi api = MediaLibraryApi::API_OLD);
143     EXPORT MediaLibraryCommand() = delete;
144     EXPORT ~MediaLibraryCommand();
145     EXPORT MediaLibraryCommand(const MediaLibraryCommand &) = delete;
146     EXPORT MediaLibraryCommand &operator=(const MediaLibraryCommand &) = delete;
147     EXPORT MediaLibraryCommand(MediaLibraryCommand &&) = delete;
148     EXPORT MediaLibraryCommand &operator=(MediaLibraryCommand &&) = delete;
149 
150     OperationObject GetOprnObject() const;
151     OperationType GetOprnType() const;
152     const std::string &GetTableName();
153     NativeRdb::ValuesBucket &GetValueBucket();
154     EXPORT NativeRdb::AbsRdbPredicates *GetAbsRdbPredicates();
155     const std::string &GetOprnFileId();
156     const std::string &GetOprnDevice();
157     const Uri &GetUri() const;
158     const std::string &GetBundleName();
159     const std::string &GetDeviceName();
160     EXPORT std::string GetUriStringWithoutSegment() const;
161     MediaLibraryApi GetApi();
162     std::string GetQuerySetParam(const std::string &key);
163     EXPORT void SetDataSharePred(const DataShare::DataSharePredicates &pred);
164     const DataShare::DataSharePredicates &GetDataSharePred() const;
165     const std::string &GetResult();
166 
167     EXPORT void SetOprnObject(OperationObject object);
168     EXPORT void SetOprnAssetId(const std::string &oprnId);
169     EXPORT void SetValueBucket(const NativeRdb::ValuesBucket &value);
170     EXPORT void SetTableName(const std::string &tableName);
171     void SetBundleName(const std::string &bundleName);
172     void SetDeviceName(const std::string &deviceName);
173     void SetResult(const std::string &result);
174 
175 private:
176     void ParseOprnObjectFromUri();
177     void ParseOprnTypeFromUri();
178     void ParseTableName();
179     void InitAbsRdbPredicates();
180     void ParseFileId();
181     void ParseQuerySetMapFromUri();
182     void SetApiFromQuerySetMap();
183     void ParseOprnObjectFromFileUri();
184 
185     Uri uri_ {""};
186     NativeRdb::ValuesBucket insertValue_;
187     std::unique_ptr<NativeRdb::AbsRdbPredicates> absRdbPredicates_;
188     std::unique_ptr<const DataShare::DataSharePredicates> datasharePred_;
189     OperationObject oprnObject_ {OperationObject::UNKNOWN_OBJECT};
190     OperationType oprnType_ {OperationType::UNKNOWN_TYPE};
191     std::string oprnFileId_;
192     std::string oprnDevice_;
193     std::string tableName_;
194     std::string bundleName_;
195     std::string deviceName_;
196     std::unordered_map<std::string, std::string> querySetMap_;
197     std::string result_;
198     MediaLibraryApi api_;
199 };
200 } // namespace Media
201 } // namespace OHOS
202 
203 #endif // OHOS_MEDIALIBRARY_COMMAND_PARSE_H
204