• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023 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_CLOUD_SYNC_SERVICE_GALLERY_FILE_CONST_H
17 #define OHOS_CLOUD_SYNC_SERVICE_GALLERY_FILE_CONST_H
18 
19 #include <string>
20 
21 #include "medialibrary_db_const.h"
22 #include "medialibrary_type_const.h"
23 #include "photo_album_column.h"
24 #include "photo_map_column.h"
25 #include "data_sync_const.h"
26 #include "data_convertor.h"
27 
28 namespace OHOS {
29 namespace FileManagement {
30 namespace CloudSync {
31 
32 enum OperationType {
33     /* upload */
34     FILE_CREATE,
35     FILE_DELETE,
36     FILE_METADATA_MODIFY,
37     FILE_DATA_MODIFY,
38     /* download */
39     FILE_DOWNLOAD,
40     /*clean*/
41     FILE_CLEAN
42 };
43 
44 /* thumb */
45 const std::string THUMB_SUFFIX = "THM";
46 const std::string LCD_SUFFIX = "LCD";
47 
48 /* basic */
49 const std::string FILE_LOGIC_ALBUM_IDS = "albumIds";
50 const std::string FILE_ADD_LOGIC_ALBUM_IDS = "addAlbumIds";
51 const std::string FILE_RM_LOGIC_ALBUM_IDS = "removeAlbumIds";
52 const std::string FILE_FILE_NAME = "fileName";
53 const std::string FILE_HASH_ID = "hashId";
54 const std::string FILE_SIZE = "size";
55 const std::string FILE_SOURCE = "source";
56 const std::string FILE_FILETYPE = "fileType";
57 const std::string FILE_CREATED_TIME = "createdTime";
58 const std::string FILE_FAVORITE = "favorite";
59 const std::string FILE_DESCRIPTION = "description";
60 const std::string FILE_RECYCLE_TIME = "recycledTime";
61 const std::string FILE_RECYCLED = "recycled";
62 const std::string FILE_MIME_TYPE = "mimeType";
63 const std::string FILE_EDITED_TIME = "editedTime";
64 const std::string FILE_DATA_MODIFIED = "data_modified";
65 const std::string FILE_TIME_ZONE = "time_zone";
66 const std::string FILE_THUMB_SIZE = "thumb_size";
67 const std::string FILE_LCD_SIZE = "lcd_size";
68 const std::string FILE_EDITED_TIME_MS = "editedTime_ms";
69 /* properties */
70 const std::string FILE_PROPERTIES = "properties";
71 const std::string FILE_SOURCE_FILE_NAME = "sourceFileName";
72 const std::string FILE_FIRST_UPDATE_TIME = "first_update_time";
73 const std::string FILE_FILE_CREATE_TIME = "fileCreateTime";
74 const std::string FILE_DETAIL_TIME = "detail_time";
75 const std::string FILE_SOURCE_PATH = "sourcePath";
76 const std::string FILE_RELATIVE_BUCKET_ID = "relative_bucket_id";
77 const std::string FILE_POSITION = "position";
78 const std::string FILE_ROTATION = "rotate";
79 const std::string FILE_DURATION = "duration";
80 const std::string FILE_HEIGHT = "height";
81 const std::string FILE_WIDTH = "width";
82 
83 /* attributes */
84 const std::string FILE_ATTRIBUTES = "attributes";
85 
86 /* local info */
87 const std::string FILE_LOCAL_ID = "local_id";
88 
89 /* properties - general */
90 const std::string FILE_GENERAL = "general";
91 
92 /* attachments */
93 const std::string FILE_ATTACHMENTS = "attachments";
94 const std::string FILE_CONTENT = "content";
95 const std::string FILE_THUMBNAIL = "thumbnail";
96 const std::string FILE_LCD = "lcdThumbnail";
97 
98 /* file type */
99 enum {
100     FILE_TYPE_IMAGE = 1,
101     FILE_TYPE_VIDEO = 4,
102 };
103 
104 enum MediaType {
105     MEDIA_TYPE_FILE,
106     MEDIA_TYPE_IMAGE,
107     MEDIA_TYPE_VIDEO,
108     MEDIA_TYPE_AUDIO,
109 };
110 
111 const int32_t NR_LOCAL_INFO = 2;
112 
113 const int32_t ORIENTATION_NORMAL = 1;
114 const int32_t ORIENTATION_ROTATE_90 = 6;
115 const int32_t ORIENTATION_ROTATE_180 = 3;
116 const int32_t ORIENTATION_ROTATE_270 = 8;
117 
118 const int32_t ROTATE_ANGLE_0 = 0;
119 const int32_t ROTATE_ANGLE_90 = 90;
120 const int32_t ROTATE_ANGLE_180 = 180;
121 const int32_t ROTATE_ANGLE_270 = 270;
122 
123 const int32_t FIRST_MATCH_PARAM = 1;
124 const int32_t SECOND_MATCH_PARAM = 2;
125 
126 // util constants
127 const std::string ALBUM_URI_PREFIX = Media::PhotoAlbumColumns::ALBUM_URI_PREFIX;
128 const std::string PHOTO_URI_PREFIX = Media::PhotoColumn::PHOTO_URI_PREFIX;
129 const std::string INVALID_ASSET_ID = "0";
130 
131 const std::string ASSET_UNIQUE_NUMBER_TABLE = "UniqueNumber";
132 const std::string ASSET_MEDIA_TYPE = "media_type";
133 const std::string UNIQUE_NUMBER = "unique_number";
134 const std::string IMAGE_ASSET_TYPE = "image";
135 const std::string VIDEO_ASSET_TYPE = "video";
136 
137 // data calculate args
138 const int32_t ASSET_IN_BUCKET_NUM_MAX = 1000;
139 const int32_t ASSET_DIR_START_NUM = 16;
140 const int32_t ASSET_MAX_COMPLEMENT_ID = 999;
141 const std::string DEFAULT_IMAGE_NAME = "IMG_";
142 const std::string DEFAULT_VIDEO_NAME = "VID_";
143 const std::string ROOT_MEDIA_DIR = "/storage/cloud/files/";
144 
145 const std::vector<std::string> GALLERY_FILE_COLUMNS = {
146     Media::PhotoColumn::MEDIA_FILE_PATH,
147     Media::PhotoColumn::MEDIA_SIZE,
148     Media::PhotoColumn::MEDIA_DATE_MODIFIED,
149     Media::PhotoColumn::PHOTO_META_DATE_MODIFIED,
150     Media::PhotoColumn::MEDIA_DATE_ADDED,
151     Media::PhotoColumn::MEDIA_MIME_TYPE,
152     Media::PhotoColumn::MEDIA_NAME,
153     Media::PhotoColumn::PHOTO_ORIENTATION,
154     Media::PhotoColumn::MEDIA_TYPE,
155     Media::PhotoColumn::MEDIA_IS_FAV,
156     Media::PhotoColumn::PHOTO_HEIGHT,
157     Media::PhotoColumn::PHOTO_WIDTH,
158     Media::PhotoColumn::PHOTO_SUBTYPE,
159     Media::PhotoColumn::PHOTO_USER_COMMENT,
160     // Media::PhotoColumn::MEDIA_OWNER_PACKAGE,
161     Media::PhotoColumn::MEDIA_DEVICE_NAME,
162     Media::PhotoColumn::MEDIA_DATE_TAKEN,
163     Media::PhotoColumn::MEDIA_DURATION,
164     Media::PhotoColumn::MEDIA_DATE_TRASHED,
165     // Media::PhotoColumn::MEDIA_DATE_DELETED
166     // Media::PhotoColumn::MEDIA_HIDDEN
167     Media::PhotoColumn::PHOTO_LATITUDE,
168     Media::PhotoColumn::PHOTO_LONGITUDE,
169     /* NR_LOCAL_INFO: keep local info in the end */
170     Media::MediaColumn::MEDIA_ID,
171     Media::PhotoColumn::PHOTO_CLOUD_ID
172 };
173 
174 const std::vector<DataType> GALLERY_FILE_COLUMN_TYPES = {
175     DataType::STRING,       /* data */
176     DataType::LONG,         /* size */
177     DataType::LONG,         /* date_modified */
178     DataType::LONG,         /* meta_date_modified */
179     DataType::LONG,         /* date_added */
180     DataType::STRING,       /* mime_type */
181     DataType::STRING,       /* display_name */
182     DataType::INT,          /* orientation */
183     DataType::INT,          /* media_type */
184     DataType::BOOL,         /* is_favorite */
185     DataType::INT,          /* height */
186     DataType::INT,          /* width */
187     DataType::INT,          /* subtype */
188     // DataType::STRING,       /* owner_package */
189     DataType::STRING,       /* device_name */
190     DataType::LONG,         /* date_taken */
191     DataType::INT,         /* duration */
192     DataType::LONG,         /* date_trashed */
193     // DataType::LONG         /* date_deleted */
194     // DataType::INT         /* hidden */
195     DataType::DOUBLE,       /* latitude */
196     DataType::DOUBLE,       /* longitude */
197     DataType::INT,        /* file_id */
198     DataType::STRING        /* cloud_id */
199 };
200 
201 const std::vector<std::string> MEDIA_CLOUD_SYNC_COLUMNS = {
202     Media::PhotoColumn::MEDIA_FILE_PATH,
203     Media::PhotoColumn::MEDIA_TITLE,
204     Media::PhotoColumn::MEDIA_SIZE,
205     Media::PhotoColumn::MEDIA_NAME,
206     Media::PhotoColumn::MEDIA_TYPE,
207     Media::PhotoColumn::MEDIA_MIME_TYPE,
208     Media::PhotoColumn::MEDIA_DEVICE_NAME,
209     Media::PhotoColumn::MEDIA_DATE_ADDED,
210     Media::PhotoColumn::MEDIA_DATE_MODIFIED,
211     Media::PhotoColumn::MEDIA_DATE_TAKEN,
212     Media::PhotoColumn::MEDIA_DURATION,
213     Media::PhotoColumn::MEDIA_IS_FAV,
214     Media::PhotoColumn::MEDIA_DATE_TRASHED,
215     Media::PhotoColumn::MEDIA_HIDDEN,
216     Media::PhotoColumn::MEDIA_RELATIVE_PATH,
217     Media::PhotoColumn::MEDIA_VIRTURL_PATH,
218     Media::PhotoColumn::PHOTO_META_DATE_MODIFIED,
219     Media::PhotoColumn::PHOTO_ORIENTATION,
220     Media::PhotoColumn::PHOTO_LATITUDE,
221     Media::PhotoColumn::PHOTO_LONGITUDE,
222     Media::PhotoColumn::PHOTO_HEIGHT,
223     Media::PhotoColumn::PHOTO_WIDTH,
224     Media::PhotoColumn::PHOTO_SUBTYPE,
225     Media::PhotoColumn::PHOTO_DATE_YEAR,
226     Media::PhotoColumn::PHOTO_DATE_MONTH,
227     Media::PhotoColumn::PHOTO_DATE_DAY,
228     Media::PhotoColumn::PHOTO_USER_COMMENT,
229     Media::PhotoColumn::PHOTO_THUMB_STATUS,
230     Media::PhotoColumn::PHOTO_SYNC_STATUS,
231 
232     /* keep cloud_id at the last, so RecordToValueBucket can skip it*/
233     Media::MediaColumn::MEDIA_ID,
234     Media::PhotoColumn::PHOTO_CLOUD_ID
235 };
236 
237 const std::vector<std::string> CLOUD_SYNC_UNIQUE_COLUMNS = {
238     Media::PhotoColumn::MEDIA_FILE_PATH,
239     Media::PhotoColumn::MEDIA_TITLE,
240     Media::PhotoColumn::MEDIA_TYPE,
241     Media::PhotoColumn::MEDIA_DURATION,
242     Media::PhotoColumn::MEDIA_HIDDEN,
243     Media::PhotoColumn::MEDIA_RELATIVE_PATH,
244     Media::PhotoColumn::MEDIA_VIRTURL_PATH,
245     Media::PhotoColumn::PHOTO_META_DATE_MODIFIED,
246     Media::PhotoColumn::PHOTO_SUBTYPE,
247     Media::PhotoColumn::PHOTO_DATE_YEAR,
248     Media::PhotoColumn::PHOTO_DATE_MONTH,
249     Media::PhotoColumn::PHOTO_DATE_DAY,
250 
251     /* NR_LOCAL_INFO: keep local info in the end */
252     Media::MediaColumn::MEDIA_ID,
253     Media::PhotoColumn::PHOTO_CLOUD_ID
254 };
255 
256 const std::vector<DataType> CLOUD_SYNC_UNIQUE_COLUMN_TYPES = {
257     DataType::STRING,       /* data */
258     DataType::STRING,       /* title */
259     DataType::INT,          /* media_type */
260     DataType::INT,          /* duration */
261     DataType::INT,          /* hidden */
262     DataType::STRING,       /* relative_path */
263     DataType::STRING,       /* virtual_path */
264     DataType::LONG,         /* meta_date_modified */
265     DataType::INT,          /* subtype */
266     DataType::STRING,       /* date_year */
267     DataType::STRING,       /* date_month */
268     DataType::STRING,       /* date_day */
269     DataType::INT,          /* file_id */
270     DataType::STRING        /* cloud_id */
271 };
272 
273 const std::vector<std::string> CLOUD_SYNC_COMMONS_COLUMNS = {
274     Media::PhotoColumn::MEDIA_SIZE,
275     Media::PhotoColumn::MEDIA_NAME,
276     Media::PhotoColumn::MEDIA_TYPE,
277     Media::PhotoColumn::MEDIA_MIME_TYPE,
278     Media::PhotoColumn::MEDIA_DEVICE_NAME,
279     Media::PhotoColumn::MEDIA_DATE_MODIFIED,
280     Media::PhotoColumn::MEDIA_DATE_TAKEN,
281     Media::PhotoColumn::MEDIA_DURATION,
282     Media::PhotoColumn::MEDIA_IS_FAV,
283     Media::PhotoColumn::MEDIA_DATE_TRASHED,
284     Media::PhotoColumn::MEDIA_HIDDEN,
285     Media::PhotoColumn::MEDIA_RELATIVE_PATH,
286     Media::PhotoColumn::MEDIA_VIRTURL_PATH,
287     Media::PhotoColumn::PHOTO_META_DATE_MODIFIED,
288     Media::PhotoColumn::PHOTO_ORIENTATION,
289     Media::PhotoColumn::PHOTO_LATITUDE,
290     Media::PhotoColumn::PHOTO_LONGITUDE,
291     Media::PhotoColumn::PHOTO_HEIGHT,
292     Media::PhotoColumn::PHOTO_WIDTH,
293     Media::PhotoColumn::PHOTO_SUBTYPE,
294     /* keep cloud_id at the last, so RecordToValueBucket can skip it*/
295     Media::PhotoColumn::PHOTO_CLOUD_ID
296 };
297 
298 const std::vector<std::string> ON_UPLOAD_COLUMNS = {
299     Media::PhotoColumn::MEDIA_FILE_PATH,
300     Media::PhotoColumn::MEDIA_DATE_MODIFIED,
301     Media::PhotoColumn::PHOTO_META_DATE_MODIFIED,
302     Media::MediaColumn::MEDIA_ID,
303     Media::PhotoColumn::PHOTO_CLOUD_ID,
304     Media::PhotoColumn::PHOTO_DIRTY,
305 };
306 } // namespace CloudSync
307 } // namespace FileManagement
308 } // namespace OHOS
309 #endif // OHOS_CLOUD_SYNC_SERVICE_GALLERY_FILE_CONST_H
310