1 /*
2 * Copyright (C) 2024 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 #include "gallery_media_count_statistic.h"
16
17 #include "media_log.h"
18 #include "backup_database_utils.h"
19 #include "backup_const.h"
20 #include "media_backup_report_data_type.h"
21 #include "statistic_processor.h"
22 #include "media_file_utils.h"
23
24 namespace OHOS::Media {
Load()25 std::vector<AlbumMediaStatisticInfo> GalleryMediaCountStatistic::Load()
26 {
27 CHECK_AND_RETURN_RET_LOG(this->galleryRdb_ != nullptr, {}, "galleryRdb_ is nullptr, Maybe init failed.");
28 std::vector<AlbumMediaStatisticInfo> infoList = {
29 // data-transfer statistic info.
30 this->GetAllStatInfo(),
31 this->GetAllImageStatInfo(),
32 this->GetAllVideoStatInfo(),
33 this->GetAllRestoreStatInfo(),
34 this->GetAllRestoreImageStatInfo(),
35 this->GetAllRestoreVideoStatInfo(),
36 // other statistic info.
37 this->GetSdCardStatInfo(),
38 this->GetDuplicateStatInfo(),
39 this->GetAppTwinStatInfo(),
40 this->GetOnlyHDCInfo(),
41 this->GetSizeUnnormalInfo(),
42 this->GetLiveStatInfo(),
43 this->GetTempInfo(),
44 this->GetNotSyncInfo(),
45 this->GetGalleryAlbumCountInfo(),
46 // statistic info.
47 this->GetImageAlbumInfo(),
48 this->GetVideoAlbumInfo(),
49 // folder info.
50 this->GetFavoriteAlbumStatInfo(),
51 this->GetTrashedAlbumStatInfo(),
52 };
53 // key album statistic info.
54 std::vector<AlbumMediaStatisticInfo> importsAlbumList = this->GetAlbumInfoByLPath("/Pictures/cloud/Imports");
55 infoList.insert(infoList.end(), importsAlbumList.begin(), importsAlbumList.end());
56 std::vector<AlbumMediaStatisticInfo> hiddenAlbumList = this->GetAlbumInfoByLPath("/Pictures/hiddenAlbum");
57 infoList.insert(infoList.end(), hiddenAlbumList.begin(), hiddenAlbumList.end());
58 // key album of album_plugin.
59 std::vector<AlbumMediaStatisticInfo> cameraAlbumList = this->GetAlbumInfoByName("相机");
60 infoList.insert(infoList.end(), cameraAlbumList.begin(), cameraAlbumList.end());
61 std::vector<AlbumMediaStatisticInfo> screenShotAlbumList = this->GetAlbumInfoByName("截图");
62 infoList.insert(infoList.end(), screenShotAlbumList.begin(), screenShotAlbumList.end());
63 std::vector<AlbumMediaStatisticInfo> weiXinAlbumList = this->GetAlbumInfoByName("微信");
64 infoList.insert(infoList.end(), weiXinAlbumList.begin(), weiXinAlbumList.end());
65 std::vector<AlbumMediaStatisticInfo> weiboAlbumList = this->GetAlbumInfoByName("微博");
66 infoList.insert(infoList.end(), weiboAlbumList.begin(), weiboAlbumList.end());
67 std::vector<AlbumMediaStatisticInfo> shareAlbumList = this->GetAlbumInfoByName("华为分享");
68 infoList.insert(infoList.end(), shareAlbumList.begin(), shareAlbumList.end());
69 std::vector<AlbumMediaStatisticInfo> otherAlbumList = this->GetAlbumInfoByName("其它");
70 infoList.insert(infoList.end(), otherAlbumList.begin(), otherAlbumList.end());
71 return infoList;
72 }
73
GetCount(const std::string & query,const std::vector<NativeRdb::ValueObject> & args)74 int32_t GalleryMediaCountStatistic::GetCount(const std::string &query, const std::vector<NativeRdb::ValueObject> &args)
75 {
76 return BackupDatabaseUtils::QueryInt(this->galleryRdb_, query, CUSTOM_COUNT, args);
77 }
78
QueryGalleryAllCount(SearchCondition searchCondition)79 int32_t GalleryMediaCountStatistic::QueryGalleryAllCount(SearchCondition searchCondition)
80 {
81 CHECK_AND_RETURN_RET_LOG(this->galleryRdb_ != nullptr, 0, "Media_Restore: galleryRdb_ is null.");
82 int32_t mediaType = searchCondition.GetMediaType();
83 int32_t hiddenType = searchCondition.GetHiddenType();
84 int32_t trashedType = searchCondition.GetTrashedType();
85 int32_t cloudType = searchCondition.GetCloudType();
86 int32_t favoriteType = searchCondition.GetFavoriteType();
87 int32_t burstType = searchCondition.GetBurstType();
88 std::vector<NativeRdb::ValueObject> params = {mediaType,
89 mediaType,
90 hiddenType,
91 hiddenType,
92 hiddenType,
93 trashedType,
94 trashedType,
95 trashedType,
96 cloudType,
97 cloudType,
98 cloudType,
99 favoriteType,
100 favoriteType,
101 favoriteType,
102 burstType,
103 burstType,
104 burstType};
105 return this->GetCount(this->SQL_QUERY_ALL_GALLERY_COUNT, params);
106 }
107
QueryAlbumGalleryCount(SearchCondition searchCondition)108 int32_t GalleryMediaCountStatistic::QueryAlbumGalleryCount(SearchCondition searchCondition)
109 {
110 CHECK_AND_RETURN_RET_LOG(this->galleryRdb_ != nullptr, 0, "Media_Restore: galleryRdb_ is null.");
111 int32_t mediaType = searchCondition.GetMediaType();
112 int32_t hiddenType = searchCondition.GetHiddenType();
113 int32_t trashedType = searchCondition.GetTrashedType();
114 int32_t cloudType = searchCondition.GetCloudType();
115 int32_t favoriteType = searchCondition.GetFavoriteType();
116 int32_t burstType = searchCondition.GetBurstType();
117 std::vector<NativeRdb::ValueObject> params = {mediaType,
118 mediaType,
119 hiddenType,
120 hiddenType,
121 hiddenType,
122 trashedType,
123 trashedType,
124 trashedType,
125 cloudType,
126 cloudType,
127 cloudType,
128 favoriteType,
129 favoriteType,
130 favoriteType,
131 burstType,
132 burstType,
133 burstType};
134 return this->GetCount(this->SQL_QUERY_ALBUM_GALLERY_COUNT, params);
135 }
136
137 /**
138 * @brief Get the row count of gallery_media.
139 * @param mediaType - 0 all, 1 picture, 3 video
140 */
GetGalleryMediaAllRestoreCount(SearchCondition searchCondition)141 int32_t GalleryMediaCountStatistic::GetGalleryMediaAllRestoreCount(SearchCondition searchCondition)
142 {
143 CHECK_AND_RETURN_RET_LOG(this->galleryRdb_ != nullptr, 0, "Media_Restore: galleryRdb_ is null.");
144 int32_t mediaType = searchCondition.GetMediaType();
145 int32_t hiddenType = searchCondition.GetHiddenType();
146 int32_t trashedType = searchCondition.GetTrashedType();
147 int32_t cloudType = searchCondition.GetCloudType();
148 int32_t favoriteType = searchCondition.GetFavoriteType();
149 int32_t burstType = searchCondition.GetBurstType();
150 bool hasLowQualityImage = this->HasLowQualityImage();
151 int32_t hasLowQualityImageFlag = hasLowQualityImage == true ? 1 : 0;
152 int32_t shouldIncludeSdFlag = this->shouldIncludeSd_ == true ? 1 : 0;
153 std::vector<NativeRdb::ValueObject> params = {hasLowQualityImageFlag,
154 shouldIncludeSdFlag,
155 mediaType,
156 mediaType,
157 hiddenType,
158 hiddenType,
159 hiddenType,
160 trashedType,
161 trashedType,
162 trashedType,
163 cloudType,
164 cloudType,
165 cloudType,
166 favoriteType,
167 favoriteType,
168 favoriteType,
169 burstType,
170 burstType,
171 burstType};
172 return this->GetCount(this->SQL_GALLERY_MEDIA_QUERY_COUNT, params);
173 }
174
QueryGalleryCloneCount()175 int32_t GalleryMediaCountStatistic::QueryGalleryCloneCount()
176 {
177 static string QUERY_GALLERY_CLONE_COUNT =
178 string("SELECT count(1) AS count FROM gallery_media WHERE local_media_id = -3 AND _size > 0 ") +
179 "AND COALESCE(storage_id, 0) IN (0, 65537) AND relative_bucket_id NOT IN ( " +
180 "SELECT DISTINCT relative_bucket_id FROM garbage_album WHERE type = 1)";
181 return BackupDatabaseUtils::QueryInt(this->galleryRdb_, QUERY_GALLERY_CLONE_COUNT, CUSTOM_COUNT);
182 }
183
184 /**
185 * @brief Get the row count of gallery_media storage in SD card.
186 * @param mediaType - 0 all, 1 picture, 3 video
187 */
QueryGallerySdCardCount(SearchCondition searchCondition)188 int32_t GalleryMediaCountStatistic::QueryGallerySdCardCount(SearchCondition searchCondition)
189 {
190 CHECK_AND_RETURN_RET_LOG(this->galleryRdb_ != nullptr, 0, "Media_Restore: galleryRdb_ is null.");
191 int32_t mediaType = searchCondition.GetMediaType();
192 int32_t hiddenType = searchCondition.GetHiddenType();
193 int32_t trashedType = searchCondition.GetTrashedType();
194 int32_t cloudType = searchCondition.GetCloudType();
195 int32_t favoriteType = searchCondition.GetFavoriteType();
196 int32_t burstType = searchCondition.GetBurstType();
197 std::vector<NativeRdb::ValueObject> params = {mediaType,
198 mediaType,
199 hiddenType,
200 hiddenType,
201 hiddenType,
202 trashedType,
203 trashedType,
204 trashedType,
205 cloudType,
206 cloudType,
207 cloudType,
208 favoriteType,
209 favoriteType,
210 favoriteType,
211 burstType,
212 burstType,
213 burstType};
214 return this->GetCount(this->SQL_QUERY_GALLERY_SD_CARD_COUNT, params);
215 }
216
217 /**
218 * @brief Get the row count of gallery_media.
219 * @param searchType - 0 all, 1 cloud
220 * @param mediaType - 0 all, 1 picture, 3 video
221 */
QueryAlbumAllVideoCount(SearchCondition searchCondition)222 int32_t GalleryMediaCountStatistic::QueryAlbumAllVideoCount(SearchCondition searchCondition)
223 {
224 CHECK_AND_RETURN_RET_LOG(this->galleryRdb_ != nullptr, 0, "Media_Restore: galleryRdb_ is null.");
225 int32_t mediaType = searchCondition.GetMediaType();
226 int32_t hiddenType = searchCondition.GetHiddenType();
227 int32_t trashedType = searchCondition.GetTrashedType();
228 int32_t cloudType = searchCondition.GetCloudType();
229 int32_t favoriteType = searchCondition.GetFavoriteType();
230 int32_t burstType = searchCondition.GetBurstType();
231 std::vector<NativeRdb::ValueObject> params = {mediaType,
232 mediaType,
233 hiddenType,
234 hiddenType,
235 hiddenType,
236 trashedType,
237 trashedType,
238 trashedType,
239 cloudType,
240 cloudType,
241 cloudType,
242 favoriteType,
243 favoriteType,
244 favoriteType,
245 burstType,
246 burstType,
247 burstType};
248 return this->GetCount(this->SQL_QUERY_GALLERY_MEDIA_ALL_VIDEO_COUNT, params);
249 }
250
251 /**
252 * @brief Get the row count of gallery_media.
253 * @param searchType - 0 all, 1 cloud
254 * @param mediaType - 0 all, 1 picture, 3 video
255 */
QueryLiveCount(int32_t searchType,int32_t mediaType)256 int32_t GalleryMediaCountStatistic::QueryLiveCount(int32_t searchType, int32_t mediaType)
257 {
258 CHECK_AND_RETURN_RET_LOG(this->galleryRdb_ != nullptr, 0, "Media_Restore: galleryRdb_ is null.");
259 std::vector<NativeRdb::ValueObject> params = {searchType, mediaType, mediaType};
260 return this->GetCount(this->SQL_QUERY_LIVE_COUNT, params);
261 }
262
263 /**
264 * @brief Get the row count of gallery_media.
265 * @param searchType - 0 all, 1 cloud
266 * @param mediaType - 0 all, 1 picture, 3 video
267 */
QueryTempCount(int32_t searchType,int32_t mediaType)268 int32_t GalleryMediaCountStatistic::QueryTempCount(int32_t searchType, int32_t mediaType)
269 {
270 CHECK_AND_RETURN_RET_LOG(this->galleryRdb_ != nullptr, 0, "Media_Restore: galleryRdb_ is null.");
271 std::vector<NativeRdb::ValueObject> params = {searchType, mediaType, mediaType};
272 return this->GetCount(this->SQL_QUERY_TEMP_COUNT, params);
273 }
274
275 /**
276 * @brief Get the row count of gallery_media.
277 * @param searchType - 0 all, 1 cloud
278 * @param mediaType - 0 all, 1 picture, 3 video
279 */
QueryAlbumCountByName(const std::string & albumName,SearchCondition searchCondition)280 std::vector<AlbumStatisticInfo> GalleryMediaCountStatistic::QueryAlbumCountByName(
281 const std::string &albumName, SearchCondition searchCondition)
282 {
283 CHECK_AND_RETURN_RET_LOG(this->galleryRdb_ != nullptr, {}, "Media_Restore: galleryRdb_ is null.");
284 int32_t mediaType = searchCondition.GetMediaType();
285 int32_t hiddenType = searchCondition.GetHiddenType();
286 int32_t trashedType = searchCondition.GetTrashedType();
287 int32_t cloudType = searchCondition.GetCloudType();
288 int32_t favoriteType = searchCondition.GetFavoriteType();
289 int32_t burstType = searchCondition.GetBurstType();
290 std::vector<NativeRdb::ValueObject> params = {albumName,
291 mediaType,
292 mediaType,
293 hiddenType,
294 hiddenType,
295 hiddenType,
296 trashedType,
297 trashedType,
298 trashedType,
299 cloudType,
300 cloudType,
301 cloudType,
302 favoriteType,
303 favoriteType,
304 favoriteType,
305 burstType,
306 burstType,
307 burstType};
308 auto resultSet = this->galleryRdb_->QuerySql(this->SQL_QUERY_ALBUM_COUNT_BY_NAME, params);
309 CHECK_AND_RETURN_RET(resultSet != nullptr, {});
310 std::vector<AlbumStatisticInfo> infoList;
311 while (resultSet->GoToNextRow() == NativeRdb::E_OK) {
312 AlbumStatisticInfo info;
313 info.count = GetInt32Val("count", resultSet);
314 info.lPath = GetStringVal("lPath", resultSet);
315 info.albumName = GetStringVal("albumName", resultSet);
316 infoList.emplace_back(info);
317 }
318 resultSet->Close();
319 return infoList;
320 }
321
322 /**
323 * @brief Get the row count of gallery_media.
324 * @param searchType - 0 all, 1 cloud
325 * @param mediaType - 0 all, 1 picture, 3 video
326 */
QueryAlbumCountByLPath(const std::string & lPath,SearchCondition searchCondition)327 std::vector<AlbumStatisticInfo> GalleryMediaCountStatistic::QueryAlbumCountByLPath(
328 const std::string &lPath, SearchCondition searchCondition)
329 {
330 CHECK_AND_RETURN_RET_LOG(this->galleryRdb_ != nullptr, {}, "Media_Restore: galleryRdb_ is null.");
331 int32_t mediaType = searchCondition.GetMediaType();
332 int32_t hiddenType = searchCondition.GetHiddenType();
333 int32_t trashedType = searchCondition.GetTrashedType();
334 int32_t cloudType = searchCondition.GetCloudType();
335 int32_t favoriteType = searchCondition.GetFavoriteType();
336 int32_t burstType = searchCondition.GetBurstType();
337 std::vector<NativeRdb::ValueObject> params = {lPath,
338 mediaType,
339 mediaType,
340 hiddenType,
341 hiddenType,
342 hiddenType,
343 trashedType,
344 trashedType,
345 trashedType,
346 cloudType,
347 cloudType,
348 cloudType,
349 favoriteType,
350 favoriteType,
351 favoriteType,
352 burstType,
353 burstType,
354 burstType};
355 auto resultSet = this->galleryRdb_->QuerySql(this->SQL_QUERY_ALBUM_COUNT_BY_LPATH, params);
356 CHECK_AND_RETURN_RET(resultSet != nullptr, {});
357 std::vector<AlbumStatisticInfo> infoList;
358 while (resultSet->GoToNextRow() == NativeRdb::E_OK) {
359 AlbumStatisticInfo info;
360 info.count = GetInt32Val("count", resultSet);
361 info.albumName = GetStringVal("albumName", resultSet);
362 info.lPath = GetStringVal("lPath", resultSet);
363 infoList.emplace_back(info);
364 }
365 resultSet->Close();
366 return infoList;
367 }
368
HasLowQualityImage()369 bool GalleryMediaCountStatistic::HasLowQualityImage()
370 {
371 std::string sql = "SELECT count(1) AS count FROM gallery_media WHERE (local_media_id != -1) AND \
372 (COALESCE(storage_id, 0) IN (0, 65537)) AND relative_bucket_id NOT IN (SELECT DISTINCT relative_bucket_id FROM \
373 garbage_album WHERE type = 1) AND _size = 0 AND photo_quality = 0";
374 int count = BackupDatabaseUtils::QueryInt(galleryRdb_, sql, CUSTOM_COUNT);
375 MEDIA_INFO_LOG("HasLowQualityImage count:%{public}d", count);
376 return count > 0;
377 }
378
QueryGalleryAppTwinDataCount()379 int32_t GalleryMediaCountStatistic::QueryGalleryAppTwinDataCount()
380 {
381 std::string sql =
382 "SELECT count(1) AS count FROM gallery_media WHERE _data LIKE '/storage/emulated/%' AND "
383 "CAST (substr(_data, length('/storage/emulated/') + 1, 3) AS INTEGER) BETWEEN 128 AND 147 AND _size > 0";
384 return BackupDatabaseUtils::QueryInt(galleryRdb_, sql, CUSTOM_COUNT);
385 }
386
QueryGalleryOnlyHDCDataCount()387 int32_t GalleryMediaCountStatistic::QueryGalleryOnlyHDCDataCount()
388 {
389 return BackupDatabaseUtils::QueryInt(galleryRdb_, SQL_ONLY_HDC_META_QUERY_COUNT, CUSTOM_COUNT);
390 }
391
QueryGallerySizeUnnormalDataCount()392 int32_t GalleryMediaCountStatistic::QueryGallerySizeUnnormalDataCount()
393 {
394 return BackupDatabaseUtils::QueryInt(galleryRdb_, SQL_SIZE_UNNORMAL_META_QUERY_COUNT, CUSTOM_COUNT);
395 }
396
GetAllStatInfo()397 AlbumMediaStatisticInfo GalleryMediaCountStatistic::GetAllStatInfo()
398 {
399 AlbumMediaStatisticInfo info;
400 info.sceneCode = this->sceneCode_;
401 info.taskId = this->taskId_;
402 int64_t startTime = MediaFileUtils::UTCTimeMilliSeconds();
403 // build the statistic info.
404 info.totalCount = this->QueryGalleryAllCount(SearchCondition());
405 info.imageCount = this->QueryGalleryAllCount(SearchCondition().SetMediaType(DUAL_MEDIA_TYPE_IMAGE));
406 info.videoCount = this->QueryGalleryAllCount(SearchCondition().SetMediaType(DUAL_MEDIA_TYPE_VIDEO));
407 info.hiddenCount = this->QueryGalleryAllCount(SearchCondition().SetHiddenType(DUAL_HIDDEN_TYPE_HIDDEN));
408 info.trashedCount = this->QueryGalleryAllCount(SearchCondition().SetTrashedType(DUAL_TRASHED_TYPE_TRASHED));
409 info.cloudCount = this->QueryGalleryAllCount(SearchCondition().SetCloudType(DUAL_CLOUD_TYPE_CLOUD));
410 info.favoriteCount = this->QueryGalleryAllCount(SearchCondition().SetFavoriteType(DUAL_FAVORITE_TYPE_FAVORITE));
411 info.burstTotalCount = this->QueryGalleryAllCount(SearchCondition().SetBurstType(DUAL_BURST_TYPE_ALL));
412 info.burstCoverCount = this->QueryGalleryAllCount(SearchCondition().SetBurstType(DUAL_BURST_TYPE_COVER));
413 // build the album name.
414 int64_t endTime = MediaFileUtils::UTCTimeMilliSeconds();
415 int64_t costTime = endTime - startTime;
416 std::string albumName = "ALL";
417 std::string lPath = "";
418 int32_t period = 0; // 0 - BEFORE, 1 - AFTER
419 int32_t dbType = 0; // 0 - GALLERY, 1 - MEDIA
420 info.albumName = AlbumNameInfo()
421 .SetAlbumName(albumName)
422 .SetLPath(lPath)
423 .SetCostTime(costTime)
424 .SetPeriod(period)
425 .SetDbType(dbType)
426 .ToString();
427 return info;
428 }
429
GetAllImageStatInfo()430 AlbumMediaStatisticInfo GalleryMediaCountStatistic::GetAllImageStatInfo()
431 {
432 AlbumMediaStatisticInfo info;
433 info.sceneCode = this->sceneCode_;
434 info.taskId = this->taskId_;
435 int64_t startTime = MediaFileUtils::UTCTimeMilliSeconds();
436 // build the statistic info.
437 info.totalCount = this->QueryGalleryAllCount(SearchCondition().SetMediaType(DUAL_MEDIA_TYPE_IMAGE));
438 info.imageCount = this->QueryGalleryAllCount(SearchCondition().SetMediaType(DUAL_MEDIA_TYPE_IMAGE));
439 info.videoCount = 0;
440 info.hiddenCount = this->QueryGalleryAllCount(
441 SearchCondition().SetMediaType(DUAL_MEDIA_TYPE_IMAGE).SetHiddenType(DUAL_HIDDEN_TYPE_HIDDEN));
442 info.trashedCount = this->QueryGalleryAllCount(
443 SearchCondition().SetMediaType(DUAL_MEDIA_TYPE_IMAGE).SetTrashedType(DUAL_TRASHED_TYPE_TRASHED));
444 info.cloudCount = this->QueryGalleryAllCount(
445 SearchCondition().SetMediaType(DUAL_MEDIA_TYPE_IMAGE).SetCloudType(DUAL_CLOUD_TYPE_CLOUD));
446 info.favoriteCount = this->QueryGalleryAllCount(
447 SearchCondition().SetMediaType(DUAL_MEDIA_TYPE_IMAGE).SetFavoriteType(DUAL_FAVORITE_TYPE_FAVORITE));
448 info.burstTotalCount = this->QueryGalleryAllCount(
449 SearchCondition().SetMediaType(DUAL_MEDIA_TYPE_IMAGE).SetBurstType(DUAL_BURST_TYPE_ALL));
450 info.burstCoverCount = this->QueryGalleryAllCount(
451 SearchCondition().SetMediaType(DUAL_MEDIA_TYPE_IMAGE).SetBurstType(DUAL_BURST_TYPE_COVER));
452 // build the album name.
453 int64_t endTime = MediaFileUtils::UTCTimeMilliSeconds();
454 int64_t costTime = endTime - startTime;
455 std::string albumName = "ALL_IMAGE";
456 std::string lPath = "";
457 int32_t period = 0; // 0 - BEFORE, 1 - AFTER
458 int32_t dbType = 0; // 0 - GALLERY, 1 - MEDIA
459 info.albumName = AlbumNameInfo()
460 .SetAlbumName(albumName)
461 .SetLPath(lPath)
462 .SetCostTime(costTime)
463 .SetPeriod(period)
464 .SetDbType(dbType)
465 .ToString();
466 return info;
467 }
468
GetAllVideoStatInfo()469 AlbumMediaStatisticInfo GalleryMediaCountStatistic::GetAllVideoStatInfo()
470 {
471 AlbumMediaStatisticInfo info;
472 info.sceneCode = this->sceneCode_;
473 info.taskId = this->taskId_;
474 int64_t startTime = MediaFileUtils::UTCTimeMilliSeconds();
475 // build the statistic info.
476 info.totalCount = this->QueryGalleryAllCount(SearchCondition().SetMediaType(DUAL_MEDIA_TYPE_VIDEO));
477 info.imageCount = 0;
478 info.videoCount = this->QueryGalleryAllCount(SearchCondition().SetMediaType(DUAL_MEDIA_TYPE_VIDEO));
479 info.hiddenCount = this->QueryGalleryAllCount(
480 SearchCondition().SetMediaType(DUAL_MEDIA_TYPE_VIDEO).SetHiddenType(DUAL_HIDDEN_TYPE_HIDDEN));
481 info.trashedCount = this->QueryGalleryAllCount(
482 SearchCondition().SetMediaType(DUAL_MEDIA_TYPE_VIDEO).SetTrashedType(DUAL_TRASHED_TYPE_TRASHED));
483 info.cloudCount = this->QueryGalleryAllCount(
484 SearchCondition().SetMediaType(DUAL_MEDIA_TYPE_VIDEO).SetCloudType(DUAL_CLOUD_TYPE_CLOUD));
485 info.favoriteCount = this->QueryGalleryAllCount(
486 SearchCondition().SetMediaType(DUAL_MEDIA_TYPE_VIDEO).SetFavoriteType(DUAL_FAVORITE_TYPE_FAVORITE));
487 info.burstTotalCount = 0;
488 info.burstCoverCount = 0;
489 // build the album name.
490 int64_t endTime = MediaFileUtils::UTCTimeMilliSeconds();
491 int64_t costTime = endTime - startTime;
492 std::string albumName = "ALL_VIDEO";
493 std::string lPath = "";
494 int32_t period = 0; // 0 - BEFORE, 1 - AFTER
495 int32_t dbType = 0; // 0 - GALLERY, 1 - MEDIA
496 info.albumName = AlbumNameInfo()
497 .SetAlbumName(albumName)
498 .SetLPath(lPath)
499 .SetCostTime(costTime)
500 .SetPeriod(period)
501 .SetDbType(dbType)
502 .ToString();
503 return info;
504 }
505
GetAllRestoreStatInfo()506 AlbumMediaStatisticInfo GalleryMediaCountStatistic::GetAllRestoreStatInfo()
507 {
508 AlbumMediaStatisticInfo info;
509 info.sceneCode = this->sceneCode_;
510 info.taskId = this->taskId_;
511 int64_t startTime = MediaFileUtils::UTCTimeMilliSeconds();
512 // build the statistic info.
513 info.totalCount = this->GetGalleryMediaAllRestoreCount(SearchCondition());
514 info.imageCount = this->GetGalleryMediaAllRestoreCount(SearchCondition().SetMediaType(DUAL_MEDIA_TYPE_IMAGE));
515 info.videoCount = this->GetGalleryMediaAllRestoreCount(SearchCondition().SetMediaType(DUAL_MEDIA_TYPE_VIDEO));
516 info.hiddenCount = this->GetGalleryMediaAllRestoreCount(SearchCondition().SetHiddenType(DUAL_HIDDEN_TYPE_HIDDEN));
517 info.trashedCount =
518 this->GetGalleryMediaAllRestoreCount(SearchCondition().SetTrashedType(DUAL_TRASHED_TYPE_TRASHED));
519 info.cloudCount = this->GetGalleryMediaAllRestoreCount(SearchCondition().SetCloudType(DUAL_CLOUD_TYPE_CLOUD));
520 info.favoriteCount =
521 this->GetGalleryMediaAllRestoreCount(SearchCondition().SetFavoriteType(DUAL_FAVORITE_TYPE_FAVORITE));
522 info.burstTotalCount = this->GetGalleryMediaAllRestoreCount(SearchCondition().SetBurstType(DUAL_BURST_TYPE_ALL));
523 info.burstCoverCount = this->GetGalleryMediaAllRestoreCount(SearchCondition().SetBurstType(DUAL_BURST_TYPE_COVER));
524 // build the album name.
525 int64_t endTime = MediaFileUtils::UTCTimeMilliSeconds();
526 int64_t costTime = endTime - startTime;
527 std::string albumName = "ALL_RESTORE";
528 std::string lPath = "";
529 int32_t period = 0; // 0 - BEFORE, 1 - AFTER
530 int32_t dbType = 0; // 0 - GALLERY, 1 - MEDIA
531 info.albumName = AlbumNameInfo()
532 .SetAlbumName(albumName)
533 .SetLPath(lPath)
534 .SetCostTime(costTime)
535 .SetPeriod(period)
536 .SetDbType(dbType)
537 .ToString();
538 return info;
539 }
540
GetAllRestoreImageStatInfo()541 AlbumMediaStatisticInfo GalleryMediaCountStatistic::GetAllRestoreImageStatInfo()
542 {
543 AlbumMediaStatisticInfo info;
544 info.sceneCode = this->sceneCode_;
545 info.taskId = this->taskId_;
546 int64_t startTime = MediaFileUtils::UTCTimeMilliSeconds();
547 // build the statistic info.
548 info.totalCount = this->GetGalleryMediaAllRestoreCount(SearchCondition().SetMediaType(DUAL_MEDIA_TYPE_IMAGE));
549 info.imageCount = this->GetGalleryMediaAllRestoreCount(SearchCondition().SetMediaType(DUAL_MEDIA_TYPE_IMAGE));
550 info.videoCount = 0;
551 info.hiddenCount = this->GetGalleryMediaAllRestoreCount(
552 SearchCondition().SetMediaType(DUAL_MEDIA_TYPE_IMAGE).SetHiddenType(DUAL_HIDDEN_TYPE_HIDDEN));
553 info.trashedCount = this->GetGalleryMediaAllRestoreCount(
554 SearchCondition().SetMediaType(DUAL_MEDIA_TYPE_IMAGE).SetTrashedType(DUAL_TRASHED_TYPE_TRASHED));
555 info.cloudCount = this->GetGalleryMediaAllRestoreCount(
556 SearchCondition().SetMediaType(DUAL_MEDIA_TYPE_IMAGE).SetCloudType(DUAL_CLOUD_TYPE_CLOUD));
557 info.favoriteCount = this->GetGalleryMediaAllRestoreCount(
558 SearchCondition().SetMediaType(DUAL_MEDIA_TYPE_IMAGE).SetFavoriteType(DUAL_FAVORITE_TYPE_FAVORITE));
559 info.burstTotalCount = this->GetGalleryMediaAllRestoreCount(
560 SearchCondition().SetMediaType(DUAL_MEDIA_TYPE_IMAGE).SetBurstType(DUAL_BURST_TYPE_ALL));
561 info.burstCoverCount = this->GetGalleryMediaAllRestoreCount(
562 SearchCondition().SetMediaType(DUAL_MEDIA_TYPE_IMAGE).SetBurstType(DUAL_BURST_TYPE_COVER));
563 // build the album name.
564 int64_t endTime = MediaFileUtils::UTCTimeMilliSeconds();
565 int64_t costTime = endTime - startTime;
566 std::string albumName = "ALL_RESTORE_IMAGE";
567 std::string lPath = "";
568 int32_t period = 0; // 0 - BEFORE, 1 - AFTER
569 int32_t dbType = 0; // 0 - GALLERY, 1 - MEDIA
570 info.albumName = AlbumNameInfo()
571 .SetAlbumName(albumName)
572 .SetLPath(lPath)
573 .SetCostTime(costTime)
574 .SetPeriod(period)
575 .SetDbType(dbType)
576 .ToString();
577 return info;
578 }
579
GetAllRestoreVideoStatInfo()580 AlbumMediaStatisticInfo GalleryMediaCountStatistic::GetAllRestoreVideoStatInfo()
581 {
582 AlbumMediaStatisticInfo info;
583 info.sceneCode = this->sceneCode_;
584 info.taskId = this->taskId_;
585 int64_t startTime = MediaFileUtils::UTCTimeMilliSeconds();
586 // build the statistic info.
587 info.totalCount = this->GetGalleryMediaAllRestoreCount(SearchCondition().SetMediaType(DUAL_MEDIA_TYPE_VIDEO));
588 info.imageCount = 0;
589 info.videoCount = this->GetGalleryMediaAllRestoreCount(SearchCondition().SetMediaType(DUAL_MEDIA_TYPE_VIDEO));
590 info.hiddenCount = this->GetGalleryMediaAllRestoreCount(
591 SearchCondition().SetMediaType(DUAL_MEDIA_TYPE_VIDEO).SetHiddenType(DUAL_HIDDEN_TYPE_HIDDEN));
592 info.trashedCount = this->GetGalleryMediaAllRestoreCount(
593 SearchCondition().SetMediaType(DUAL_MEDIA_TYPE_VIDEO).SetTrashedType(DUAL_TRASHED_TYPE_TRASHED));
594 info.cloudCount = this->GetGalleryMediaAllRestoreCount(
595 SearchCondition().SetMediaType(DUAL_MEDIA_TYPE_VIDEO).SetCloudType(DUAL_CLOUD_TYPE_CLOUD));
596 info.favoriteCount = this->GetGalleryMediaAllRestoreCount(
597 SearchCondition().SetMediaType(DUAL_MEDIA_TYPE_VIDEO).SetFavoriteType(DUAL_FAVORITE_TYPE_FAVORITE));
598 info.burstTotalCount = 0;
599 info.burstCoverCount = 0;
600 // build the album name.
601 int64_t endTime = MediaFileUtils::UTCTimeMilliSeconds();
602 int64_t costTime = endTime - startTime;
603 std::string albumName = "ALL_RESTORE_VIDEO";
604 std::string lPath = "";
605 int32_t period = 0; // 0 - BEFORE, 1 - AFTER
606 int32_t dbType = 0; // 0 - GALLERY, 1 - MEDIA
607 info.albumName = AlbumNameInfo()
608 .SetAlbumName(albumName)
609 .SetLPath(lPath)
610 .SetCostTime(costTime)
611 .SetPeriod(period)
612 .SetDbType(dbType)
613 .ToString();
614 return info;
615 }
616
GetSdCardStatInfo()617 AlbumMediaStatisticInfo GalleryMediaCountStatistic::GetSdCardStatInfo()
618 {
619 AlbumMediaStatisticInfo info;
620 info.sceneCode = this->sceneCode_;
621 info.taskId = this->taskId_;
622 int64_t startTime = MediaFileUtils::UTCTimeMilliSeconds();
623 // build the statistic info.
624 info.totalCount = this->QueryGallerySdCardCount(SearchCondition());
625 info.imageCount = this->QueryGallerySdCardCount(SearchCondition().SetMediaType(DUAL_MEDIA_TYPE_IMAGE));
626 info.videoCount = this->QueryGallerySdCardCount(SearchCondition().SetMediaType(DUAL_MEDIA_TYPE_VIDEO));
627 info.hiddenCount = this->QueryGallerySdCardCount(SearchCondition().SetHiddenType(DUAL_HIDDEN_TYPE_HIDDEN));
628 info.trashedCount = this->QueryGallerySdCardCount(SearchCondition().SetTrashedType(DUAL_TRASHED_TYPE_TRASHED));
629 info.cloudCount = this->QueryGallerySdCardCount(SearchCondition().SetCloudType(DUAL_CLOUD_TYPE_CLOUD));
630 info.favoriteCount = this->QueryGallerySdCardCount(SearchCondition().SetFavoriteType(DUAL_FAVORITE_TYPE_FAVORITE));
631 info.burstTotalCount = this->QueryGallerySdCardCount(SearchCondition().SetBurstType(DUAL_BURST_TYPE_ALL));
632 info.burstCoverCount = this->QueryGallerySdCardCount(SearchCondition().SetBurstType(DUAL_BURST_TYPE_COVER));
633 // build the album name.
634 int64_t endTime = MediaFileUtils::UTCTimeMilliSeconds();
635 int64_t costTime = endTime - startTime;
636 std::string albumName = "SD_CARD";
637 std::string lPath = "";
638 int32_t period = 0; // 0 - BEFORE, 1 - AFTER
639 int32_t dbType = 0; // 0 - GALLERY, 1 - MEDIA
640 info.albumName = AlbumNameInfo()
641 .SetAlbumName(albumName)
642 .SetLPath(lPath)
643 .SetCostTime(costTime)
644 .SetPeriod(period)
645 .SetDbType(dbType)
646 .ToString();
647 return info;
648 }
649
GetDuplicateStatInfo()650 AlbumMediaStatisticInfo GalleryMediaCountStatistic::GetDuplicateStatInfo()
651 {
652 int32_t duplicateDataCount;
653 int32_t duplicateDataTotal;
654 BackupDatabaseUtils::QueryGalleryDuplicateDataCount(this->galleryRdb_, duplicateDataCount, duplicateDataTotal);
655 AlbumMediaStatisticInfo info;
656 info.sceneCode = this->sceneCode_;
657 info.taskId = this->taskId_;
658 int64_t startTime = MediaFileUtils::UTCTimeMilliSeconds();
659 // build the statistic info.
660 info.totalCount = duplicateDataTotal;
661 // build the album name.
662 int64_t endTime = MediaFileUtils::UTCTimeMilliSeconds();
663 int64_t costTime = endTime - startTime;
664 std::string albumName = "DUPLICATE";
665 std::string lPath = "";
666 int32_t period = 0; // 0 - BEFORE, 1 - AFTER
667 int32_t dbType = 0; // 0 - GALLERY, 1 - MEDIA
668 info.albumName = AlbumNameInfo()
669 .SetAlbumName(albumName)
670 .SetLPath(lPath)
671 .SetCostTime(costTime)
672 .SetPeriod(period)
673 .SetDbType(dbType)
674 .ToString();
675 return info;
676 }
677
GetAppTwinStatInfo()678 AlbumMediaStatisticInfo GalleryMediaCountStatistic::GetAppTwinStatInfo()
679 {
680 AlbumMediaStatisticInfo info;
681 info.sceneCode = this->sceneCode_;
682 info.taskId = this->taskId_;
683 int64_t startTime = MediaFileUtils::UTCTimeMilliSeconds();
684 // build the statistic info.
685 info.totalCount = this->QueryGalleryAppTwinDataCount();
686 // build the album name.
687 int64_t endTime = MediaFileUtils::UTCTimeMilliSeconds();
688 int64_t costTime = endTime - startTime;
689 std::string albumName = "APP_TWIN";
690 std::string lPath = "";
691 int32_t period = 0; // 0 - BEFORE, 1 - AFTER
692 int32_t dbType = 0; // 0 - GALLERY, 1 - MEDIA
693 info.albumName = AlbumNameInfo()
694 .SetAlbumName(albumName)
695 .SetLPath(lPath)
696 .SetCostTime(costTime)
697 .SetPeriod(period)
698 .SetDbType(dbType)
699 .ToString();
700 return info;
701 }
702
GetOnlyHDCInfo()703 AlbumMediaStatisticInfo GalleryMediaCountStatistic::GetOnlyHDCInfo()
704 {
705 AlbumMediaStatisticInfo info;
706 info.sceneCode = this->sceneCode_;
707 info.taskId = this->taskId_;
708 int64_t startTime = MediaFileUtils::UTCTimeMilliSeconds();
709 // build the statistic info.
710 info.totalCount = this->QueryGalleryOnlyHDCDataCount();
711 // build the album name.
712 int64_t endTime = MediaFileUtils::UTCTimeMilliSeconds();
713 int64_t costTime = endTime - startTime;
714 std::string albumName = "ONLY_HDC";
715 std::string lPath = "";
716 int32_t period = 0; // 0 - BEFORE, 1 - AFTER
717 int32_t dbType = 0; // 0 - GALLERY, 1 - MEDIA
718 info.albumName = AlbumNameInfo()
719 .SetAlbumName(albumName)
720 .SetLPath(lPath)
721 .SetCostTime(costTime)
722 .SetPeriod(period)
723 .SetDbType(dbType)
724 .ToString();
725 return info;
726 }
727
GetSizeUnnormalInfo()728 AlbumMediaStatisticInfo GalleryMediaCountStatistic::GetSizeUnnormalInfo()
729 {
730 AlbumMediaStatisticInfo info;
731 info.sceneCode = this->sceneCode_;
732 info.taskId = this->taskId_;
733 int64_t startTime = MediaFileUtils::UTCTimeMilliSeconds();
734 // build the statistic info.
735 info.totalCount = this->QueryGallerySizeUnnormalDataCount();
736 // build the album name.
737 int64_t endTime = MediaFileUtils::UTCTimeMilliSeconds();
738 int64_t costTime = endTime - startTime;
739 std::string albumName = "SIZE_UNNORMAL";
740 std::string lPath = "";
741 int32_t period = 0; // 0 - BEFORE, 1 - AFTER
742 int32_t dbType = 0; // 0 - GALLERY, 1 - MEDIA
743 info.albumName = AlbumNameInfo()
744 .SetAlbumName(albumName)
745 .SetLPath(lPath)
746 .SetCostTime(costTime)
747 .SetPeriod(period)
748 .SetDbType(dbType)
749 .ToString();
750 return info;
751 }
752
GetImageAlbumInfo()753 AlbumMediaStatisticInfo GalleryMediaCountStatistic::GetImageAlbumInfo()
754 {
755 AlbumMediaStatisticInfo info;
756 info.sceneCode = this->sceneCode_;
757 info.taskId = this->taskId_;
758 int64_t startTime = MediaFileUtils::UTCTimeMilliSeconds();
759 // build the statistic info.
760 SearchCondition defaultCondition =
761 SearchCondition().SetHiddenType(DUAL_HIDDEN_TYPE_NOT_HIDDEN).SetTrashedType(DUAL_TRASHED_TYPE_NOT_TRASHED);
762 info.totalCount = this->QueryAlbumGalleryCount(SearchCondition(defaultCondition));
763 info.imageCount =
764 this->QueryAlbumGalleryCount(SearchCondition(defaultCondition).SetMediaType(DUAL_MEDIA_TYPE_IMAGE));
765 info.videoCount =
766 this->QueryAlbumGalleryCount(SearchCondition(defaultCondition).SetMediaType(DUAL_MEDIA_TYPE_VIDEO));
767 info.hiddenCount = 0;
768 info.trashedCount = 0;
769 info.cloudCount =
770 this->QueryAlbumGalleryCount(SearchCondition(defaultCondition).SetCloudType(DUAL_CLOUD_TYPE_CLOUD));
771 info.favoriteCount =
772 this->QueryAlbumGalleryCount(SearchCondition(defaultCondition).SetFavoriteType(DUAL_FAVORITE_TYPE_FAVORITE));
773 info.burstTotalCount =
774 this->QueryAlbumGalleryCount(SearchCondition(defaultCondition).SetBurstType(DUAL_BURST_TYPE_ALL));
775 info.burstCoverCount =
776 this->QueryAlbumGalleryCount(SearchCondition(defaultCondition).SetBurstType(DUAL_BURST_TYPE_COVER));
777 // build the album name.
778 int64_t endTime = MediaFileUtils::UTCTimeMilliSeconds();
779 int64_t costTime = endTime - startTime;
780 std::string albumName = "所有照片";
781 std::string lPath = "";
782 int32_t period = 0; // 0 - BEFORE, 1 - AFTER
783 int32_t dbType = 0; // 0 - GALLERY, 1 - MEDIA
784 info.albumName = AlbumNameInfo()
785 .SetAlbumName(albumName)
786 .SetLPath(lPath)
787 .SetCostTime(costTime)
788 .SetPeriod(period)
789 .SetDbType(dbType)
790 .ToString();
791 return info;
792 }
793
GetVideoAlbumInfo()794 AlbumMediaStatisticInfo GalleryMediaCountStatistic::GetVideoAlbumInfo()
795 {
796 AlbumMediaStatisticInfo info;
797 info.sceneCode = this->sceneCode_;
798 info.taskId = this->taskId_;
799 int64_t startTime = MediaFileUtils::UTCTimeMilliSeconds();
800 // build the statistic info.
801 SearchCondition defaultCondition = SearchCondition()
802 .SetMediaType(DUAL_MEDIA_TYPE_VIDEO)
803 .SetHiddenType(DUAL_HIDDEN_TYPE_NOT_HIDDEN)
804 .SetTrashedType(DUAL_TRASHED_TYPE_NOT_TRASHED);
805 info.totalCount = this->QueryAlbumAllVideoCount(SearchCondition(defaultCondition));
806 info.imageCount = 0;
807 info.videoCount = this->QueryAlbumAllVideoCount(SearchCondition(defaultCondition));
808 info.hiddenCount = 0;
809 info.trashedCount = 0;
810 info.cloudCount =
811 this->QueryAlbumAllVideoCount(SearchCondition(defaultCondition).SetCloudType(DUAL_CLOUD_TYPE_CLOUD));
812 info.favoriteCount =
813 this->QueryAlbumAllVideoCount(SearchCondition(defaultCondition).SetFavoriteType(DUAL_FAVORITE_TYPE_FAVORITE));
814 info.burstTotalCount = 0;
815 info.burstCoverCount = 0;
816 // build the album name.
817 int64_t endTime = MediaFileUtils::UTCTimeMilliSeconds();
818 int64_t costTime = endTime - startTime;
819 std::string albumName = "视频";
820 std::string lPath = "";
821 int32_t period = 0; // 0 - BEFORE, 1 - AFTER
822 int32_t dbType = 0; // 0 - GALLERY, 1 - MEDIA
823 info.albumName = AlbumNameInfo()
824 .SetAlbumName(albumName)
825 .SetLPath(lPath)
826 .SetCostTime(costTime)
827 .SetPeriod(period)
828 .SetDbType(dbType)
829 .ToString();
830 return info;
831 }
832
GetFavoriteAlbumStatInfo()833 AlbumMediaStatisticInfo GalleryMediaCountStatistic::GetFavoriteAlbumStatInfo()
834 {
835 AlbumMediaStatisticInfo info;
836 info.sceneCode = this->sceneCode_;
837 info.taskId = this->taskId_;
838 int64_t startTime = MediaFileUtils::UTCTimeMilliSeconds();
839 // build the statistic info.
840 SearchCondition defaultCondition = SearchCondition()
841 .SetHiddenType(DUAL_HIDDEN_TYPE_NOT_HIDDEN)
842 .SetTrashedType(DUAL_TRASHED_TYPE_NOT_TRASHED)
843 .SetFavoriteType(DUAL_FAVORITE_TYPE_FAVORITE);
844 info.totalCount = this->QueryAlbumGalleryCount(SearchCondition(defaultCondition));
845 info.imageCount =
846 this->QueryAlbumGalleryCount(SearchCondition(defaultCondition).SetMediaType(DUAL_MEDIA_TYPE_IMAGE));
847 info.videoCount =
848 this->QueryAlbumGalleryCount(SearchCondition(defaultCondition).SetMediaType(DUAL_MEDIA_TYPE_VIDEO));
849 info.hiddenCount = 0;
850 info.trashedCount = 0;
851 info.cloudCount =
852 this->QueryAlbumGalleryCount(SearchCondition(defaultCondition).SetCloudType(DUAL_CLOUD_TYPE_CLOUD));
853 info.favoriteCount = this->QueryAlbumGalleryCount(SearchCondition(defaultCondition));
854 info.burstTotalCount =
855 this->QueryAlbumGalleryCount(SearchCondition(defaultCondition).SetBurstType(DUAL_BURST_TYPE_ALL));
856 info.burstCoverCount =
857 this->QueryAlbumGalleryCount(SearchCondition(defaultCondition).SetBurstType(DUAL_BURST_TYPE_COVER));
858 // build the album name.
859 int64_t endTime = MediaFileUtils::UTCTimeMilliSeconds();
860 int64_t costTime = endTime - startTime;
861 std::string albumName = "收藏";
862 std::string lPath = "";
863 int32_t period = 0; // 0 - BEFORE, 1 - AFTER
864 int32_t dbType = 0; // 0 - GALLERY, 1 - MEDIA
865 info.albumName = AlbumNameInfo()
866 .SetAlbumName(albumName)
867 .SetLPath(lPath)
868 .SetCostTime(costTime)
869 .SetPeriod(period)
870 .SetDbType(dbType)
871 .ToString();
872 return info;
873 }
874
GetTrashedAlbumStatInfo()875 AlbumMediaStatisticInfo GalleryMediaCountStatistic::GetTrashedAlbumStatInfo()
876 {
877 AlbumMediaStatisticInfo info;
878 info.sceneCode = this->sceneCode_;
879 info.taskId = this->taskId_;
880 int64_t startTime = MediaFileUtils::UTCTimeMilliSeconds();
881 // build the statistic info.
882 SearchCondition defaultCondition =
883 SearchCondition().SetHiddenType(DUAL_HIDDEN_TYPE_NOT_HIDDEN).SetTrashedType(DUAL_TRASHED_TYPE_TRASHED);
884 info.totalCount = this->QueryAlbumGalleryCount(SearchCondition(defaultCondition));
885 info.imageCount =
886 this->QueryAlbumGalleryCount(SearchCondition(defaultCondition).SetMediaType(DUAL_MEDIA_TYPE_IMAGE));
887 info.videoCount =
888 this->QueryAlbumGalleryCount(SearchCondition(defaultCondition).SetMediaType(DUAL_MEDIA_TYPE_VIDEO));
889 info.hiddenCount = 0;
890 info.trashedCount = this->QueryAlbumGalleryCount(SearchCondition(defaultCondition));
891 info.cloudCount =
892 this->QueryAlbumGalleryCount(SearchCondition(defaultCondition).SetCloudType(DUAL_CLOUD_TYPE_CLOUD));
893 info.favoriteCount = 0;
894 info.burstTotalCount =
895 this->QueryAlbumGalleryCount(SearchCondition(defaultCondition).SetBurstType(DUAL_BURST_TYPE_ALL));
896 info.burstCoverCount =
897 this->QueryAlbumGalleryCount(SearchCondition(defaultCondition).SetBurstType(DUAL_BURST_TYPE_COVER));
898 // build the album name.
899 int64_t endTime = MediaFileUtils::UTCTimeMilliSeconds();
900 int64_t costTime = endTime - startTime;
901 std::string albumName = "回收站";
902 std::string lPath = "";
903 int32_t period = 0; // 0 - BEFORE, 1 - AFTER
904 int32_t dbType = 0; // 0 - GALLERY, 1 - MEDIA
905 info.albumName = AlbumNameInfo()
906 .SetAlbumName(albumName)
907 .SetLPath(lPath)
908 .SetCostTime(costTime)
909 .SetPeriod(period)
910 .SetDbType(dbType)
911 .ToString();
912 return info;
913 }
914
GetAlbumInfoByName(const std::string & albumName)915 std::vector<AlbumMediaStatisticInfo> GalleryMediaCountStatistic::GetAlbumInfoByName(const std::string &albumName)
916 {
917 int64_t startTime = MediaFileUtils::UTCTimeMilliSeconds();
918 // build the statistic info.
919 SearchCondition defaultCondition =
920 SearchCondition().SetHiddenType(DUAL_HIDDEN_TYPE_NOT_HIDDEN).SetTrashedType(DUAL_TRASHED_TYPE_NOT_TRASHED);
921 std::vector<AlbumStatisticInfo> totalCountInfoList =
922 this->QueryAlbumCountByName(albumName, SearchCondition(defaultCondition));
923 std::vector<AlbumStatisticInfo> imageCountInfoList =
924 this->QueryAlbumCountByName(albumName, SearchCondition(defaultCondition).SetMediaType(DUAL_MEDIA_TYPE_IMAGE));
925 std::vector<AlbumStatisticInfo> videoCountInfoList =
926 this->QueryAlbumCountByName(albumName, SearchCondition(defaultCondition).SetMediaType(DUAL_MEDIA_TYPE_VIDEO));
927 std::vector<AlbumStatisticInfo> cloudCountInfoList =
928 this->QueryAlbumCountByName(albumName, SearchCondition(defaultCondition).SetCloudType(DUAL_CLOUD_TYPE_CLOUD));
929 int64_t endTime = MediaFileUtils::UTCTimeMilliSeconds();
930 int64_t costTime = endTime - startTime;
931 // Parse the statistic info.
932 std::unordered_map<std::string, AlbumMediaStatisticInfo> albumInfoMap;
933 StatisticProcessor()
934 .ParseTotalCount(albumInfoMap, totalCountInfoList)
935 .ParseImageCount(albumInfoMap, imageCountInfoList)
936 .ParseVideoCount(albumInfoMap, videoCountInfoList)
937 .ParseCloudCount(albumInfoMap, cloudCountInfoList);
938 std::vector<AlbumMediaStatisticInfo> albumInfoList;
939 for (const auto &iter : albumInfoMap) {
940 AlbumMediaStatisticInfo info = iter.second;
941 info.sceneCode = this->sceneCode_;
942 info.taskId = this->taskId_;
943 info.albumName = AlbumNameInfo()
944 .SetAlbumName(info.albumName)
945 .SetLPath(info.lPath)
946 .SetCostTime(costTime)
947 .SetPeriod(0) // 0 - BEFORE, 1 - AFTER
948 .SetDbType(0) // 0 - GALLERY, 1 - MEDIA
949 .ToString();
950 albumInfoList.emplace_back(info);
951 }
952 return albumInfoList;
953 }
954
GetAlbumInfoByLPath(const std::string & lPath)955 std::vector<AlbumMediaStatisticInfo> GalleryMediaCountStatistic::GetAlbumInfoByLPath(const std::string &lPath)
956 {
957 int64_t startTime = MediaFileUtils::UTCTimeMilliSeconds();
958 // build the statistic info.
959 SearchCondition defaultCondition =
960 SearchCondition().SetHiddenType(DUAL_HIDDEN_TYPE_NOT_HIDDEN).SetTrashedType(DUAL_TRASHED_TYPE_NOT_TRASHED);
961 std::vector<AlbumStatisticInfo> totalCountInfoList =
962 this->QueryAlbumCountByLPath(lPath, SearchCondition(defaultCondition));
963 std::vector<AlbumStatisticInfo> imageCountInfoList =
964 this->QueryAlbumCountByLPath(lPath, SearchCondition(defaultCondition).SetMediaType(DUAL_MEDIA_TYPE_IMAGE));
965 std::vector<AlbumStatisticInfo> videoCountInfoList =
966 this->QueryAlbumCountByLPath(lPath, SearchCondition(defaultCondition).SetMediaType(DUAL_MEDIA_TYPE_VIDEO));
967 std::vector<AlbumStatisticInfo> cloudCountInfoList =
968 this->QueryAlbumCountByLPath(lPath, SearchCondition(defaultCondition).SetCloudType(DUAL_CLOUD_TYPE_CLOUD));
969 int64_t endTime = MediaFileUtils::UTCTimeMilliSeconds();
970 int64_t costTime = endTime - startTime;
971 // Parse the statistic info.
972 std::unordered_map<std::string, AlbumMediaStatisticInfo> albumInfoMap;
973 StatisticProcessor()
974 .ParseTotalCount(albumInfoMap, totalCountInfoList)
975 .ParseImageCount(albumInfoMap, imageCountInfoList)
976 .ParseVideoCount(albumInfoMap, videoCountInfoList)
977 .ParseCloudCount(albumInfoMap, cloudCountInfoList);
978 std::vector<AlbumMediaStatisticInfo> albumInfoList;
979 for (const auto &iter : albumInfoMap) {
980 AlbumMediaStatisticInfo info = iter.second;
981 info.sceneCode = this->sceneCode_;
982 info.taskId = this->taskId_;
983 info.albumName = AlbumNameInfo()
984 .SetAlbumName(info.albumName)
985 .SetLPath(info.lPath)
986 .SetCostTime(costTime)
987 .SetPeriod(0) // 0 - BEFORE, 1 - AFTER
988 .SetDbType(0) // 0 - GALLERY, 1 - MEDIA
989 .ToString();
990 albumInfoList.emplace_back(info);
991 }
992 return albumInfoList;
993 }
994
GetGalleryAlbumCountInfo()995 AlbumMediaStatisticInfo GalleryMediaCountStatistic::GetGalleryAlbumCountInfo()
996 {
997 AlbumMediaStatisticInfo info;
998 info.sceneCode = this->sceneCode_;
999 info.taskId = this->taskId_;
1000 int64_t startTime = MediaFileUtils::UTCTimeMilliSeconds();
1001 // build the statistic info.
1002 info.totalCount = this->GetCount(this->SQL_QUERY_GALLERY_ALBUM_COUNT);
1003 // build the album name.
1004 int64_t endTime = MediaFileUtils::UTCTimeMilliSeconds();
1005 int64_t costTime = endTime - startTime;
1006 std::string albumName = "相册数量";
1007 std::string lPath = "";
1008 int32_t period = 0; // 0 - BEFORE, 1 - AFTER
1009 int32_t dbType = 0; // 0 - GALLERY, 1 - MEDIA
1010 info.albumName = AlbumNameInfo()
1011 .SetAlbumName(albumName)
1012 .SetLPath(lPath)
1013 .SetCostTime(costTime)
1014 .SetPeriod(period)
1015 .SetDbType(dbType)
1016 .ToString();
1017 return info;
1018 }
1019
GetLiveStatInfo()1020 AlbumMediaStatisticInfo GalleryMediaCountStatistic::GetLiveStatInfo()
1021 {
1022 AlbumMediaStatisticInfo info;
1023 info.sceneCode = this->sceneCode_;
1024 info.taskId = this->taskId_;
1025 int64_t startTime = MediaFileUtils::UTCTimeMilliSeconds();
1026 // build the statistic info.
1027 info.totalCount = this->QueryLiveCount(DUAL_SEARCH_TYPE_ALL, DUAL_MEDIA_TYPE_ALL);
1028 info.cloudCount = this->QueryLiveCount(DUAL_SEARCH_TYPE_CLOUD, DUAL_MEDIA_TYPE_ALL);
1029 // build the album name.
1030 int64_t endTime = MediaFileUtils::UTCTimeMilliSeconds();
1031 int64_t costTime = endTime - startTime;
1032 std::string albumName = "动态照片";
1033 std::string lPath = "";
1034 int32_t period = 0; // 0 - BEFORE, 1 - AFTER
1035 int32_t dbType = 0; // 0 - GALLERY, 1 - MEDIA
1036 info.albumName = AlbumNameInfo()
1037 .SetAlbumName(albumName)
1038 .SetLPath(lPath)
1039 .SetCostTime(costTime)
1040 .SetPeriod(period)
1041 .SetDbType(dbType)
1042 .ToString();
1043 return info;
1044 }
1045
GetTempInfo()1046 AlbumMediaStatisticInfo GalleryMediaCountStatistic::GetTempInfo()
1047 {
1048 AlbumMediaStatisticInfo info;
1049 info.sceneCode = this->sceneCode_;
1050 info.taskId = this->taskId_;
1051 int64_t startTime = MediaFileUtils::UTCTimeMilliSeconds();
1052 // build the statistic info.
1053 info.totalCount = this->QueryTempCount(DUAL_SEARCH_TYPE_ALL, DUAL_MEDIA_TYPE_ALL);
1054 info.imageCount = this->QueryTempCount(DUAL_SEARCH_TYPE_ALL, DUAL_MEDIA_TYPE_IMAGE);
1055 info.videoCount = this->QueryTempCount(DUAL_SEARCH_TYPE_ALL, DUAL_MEDIA_TYPE_VIDEO);
1056 info.cloudCount = this->QueryTempCount(DUAL_SEARCH_TYPE_CLOUD, DUAL_MEDIA_TYPE_ALL);
1057 // build the album name.
1058 int64_t endTime = MediaFileUtils::UTCTimeMilliSeconds();
1059 int64_t costTime = endTime - startTime;
1060 std::string albumName = "应用缓存文件";
1061 std::string lPath = "";
1062 int32_t period = 0; // 0 - BEFORE, 1 - AFTER
1063 int32_t dbType = 0; // 0 - GALLERY, 1 - MEDIA
1064 info.albumName = AlbumNameInfo()
1065 .SetAlbumName(albumName)
1066 .SetLPath(lPath)
1067 .SetCostTime(costTime)
1068 .SetPeriod(period)
1069 .SetDbType(dbType)
1070 .ToString();
1071 return info;
1072 }
1073
GetNotSyncInfo()1074 AlbumMediaStatisticInfo GalleryMediaCountStatistic::GetNotSyncInfo()
1075 {
1076 AlbumMediaStatisticInfo info;
1077 info.sceneCode = this->sceneCode_;
1078 info.taskId = this->taskId_;
1079 int64_t startTime = MediaFileUtils::UTCTimeMilliSeconds();
1080 // build the statistic info.
1081 info.totalCount = this->GetCount(SQL_QUERY_NOT_SYNC_COUNT);
1082 // build the album name.
1083 int64_t endTime = MediaFileUtils::UTCTimeMilliSeconds();
1084 int64_t costTime = endTime - startTime;
1085 std::string albumName = "媒体库未同步";
1086 std::string lPath = "";
1087 int32_t period = 0; // 0 - BEFORE, 1 - AFTER
1088 int32_t dbType = 0; // 0 - GALLERY, 1 - MEDIA
1089 info.albumName = AlbumNameInfo()
1090 .SetAlbumName(albumName)
1091 .SetLPath(lPath)
1092 .SetCostTime(costTime)
1093 .SetPeriod(period)
1094 .SetDbType(dbType)
1095 .ToString();
1096 return info;
1097 }
1098 } // namespace OHOS::Media