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