• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2025 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 FRAMEWORKS_SERVICES_THUMBNAIL_SERVICE_INCLUDE_THUMBNAIL_RDB_UTILS_H_
17 #define FRAMEWORKS_SERVICES_THUMBNAIL_SERVICE_INCLUDE_THUMBNAIL_RDB_UTILS_H_
18 
19 #include "thumbnail_data.h"
20 
21 namespace OHOS {
22 namespace Media {
23 #define EXPORT __attribute__ ((visibility ("default")))
24 class EXPORT ThumbnailRdbUtils {
25 public:
26     ThumbnailRdbUtils() = delete;
27     virtual ~ThumbnailRdbUtils() = delete;
28 
29     static bool QueryThumbnailDataInfos(std::shared_ptr<MediaLibraryRdbStore> store,
30         NativeRdb::RdbPredicates &rdbPredicates, const std::vector<std::string> &column,
31         std::vector<ThumbnailData> &datas);
32     static bool QueryThumbnailDataInfos(std::shared_ptr<MediaLibraryRdbStore> store,
33         NativeRdb::RdbPredicates &rdbPredicates, const std::vector<std::string> &column,
34         std::vector<ThumbnailData> &datas, int &err);
35     static bool QueryThumbnailDataInfos(const std::shared_ptr<NativeRdb::ResultSet> &resultSet,
36         const std::vector<std::string> &column, std::vector<ThumbnailData> &datas, int &err);
37     static bool QueryThumbnailDataInfo(std::shared_ptr<MediaLibraryRdbStore> store,
38         NativeRdb::RdbPredicates &rdbPredicates, const std::vector<std::string> &column, ThumbnailData &data);
39     static bool QueryThumbnailDataInfo(std::shared_ptr<MediaLibraryRdbStore> store,
40         NativeRdb::RdbPredicates &rdbPredicates, const std::vector<std::string> &column, ThumbnailData &data, int &err);
41     static bool QueryThumbnailDataInfo(const std::shared_ptr<NativeRdb::ResultSet> &resultSet,
42         const std::vector<std::string> &column, ThumbnailData &data, int &err);
43     static bool CheckResultSetCount(const std::shared_ptr<NativeRdb::ResultSet> &resultSet, int &err);
44     static void ParseQueryResult(const std::shared_ptr<NativeRdb::ResultSet> &resultSet, ThumbnailData &data,
45         int &err, const std::vector<std::string> &column);
46     static void ParseStringResult(const std::shared_ptr<NativeRdb::ResultSet> &resultSet, int index, std::string &data);
47     static void ParseInt32Result(const std::shared_ptr<NativeRdb::ResultSet> &resultSet, int index, int32_t &data);
48     static void ParseInt64Result(const std::shared_ptr<NativeRdb::ResultSet> &resultSet, int index, int64_t &data);
49 
50     static bool QueryLocalNoExifRotateInfos(ThumbRdbOpt &opts, std::vector<ThumbnailData> &infos);
51     static int32_t UpdateExifRotateAndDirty(const ThumbnailData &data, DirtyType dirtyType);
52     static int32_t UpdateRdbStoreById(ThumbRdbOpt &opts, const std::string &id, const NativeRdb::ValuesBucket &values);
53 
54 private:
55     static void HandleId(const std::shared_ptr<NativeRdb::ResultSet> &resultSet, int idx, ThumbnailData &data);
56     static void HandleFilePath(const std::shared_ptr<NativeRdb::ResultSet> &resultSet, int idx, ThumbnailData &data);
57     static void HandleDateAdded(const std::shared_ptr<NativeRdb::ResultSet> &resultSet, int idx, ThumbnailData &data);
58     static void HandleDisplayName(const std::shared_ptr<NativeRdb::ResultSet> &resultSet, int idx, ThumbnailData &data);
59     static void HandleDateTaken(const std::shared_ptr<NativeRdb::ResultSet> &resultSet, int idx, ThumbnailData &data);
60     static void HandleDateModified(const std::shared_ptr<NativeRdb::ResultSet> &resultSet,
61         int idx, ThumbnailData &data);
62     static void HandleMediaType(const std::shared_ptr<NativeRdb::ResultSet> &resultSet, int idx, ThumbnailData &data);
63     static void HandleOrientation(const std::shared_ptr<NativeRdb::ResultSet> &resultSet, int idx, ThumbnailData &data);
64     static void HandleExifRotate(const std::shared_ptr<NativeRdb::ResultSet> &resultSet, int idx, ThumbnailData &data);
65     static void HandlePosition(const std::shared_ptr<NativeRdb::ResultSet> &resultSet, int idx, ThumbnailData &data);
66     static void HandlePhotoHeight(const std::shared_ptr<NativeRdb::ResultSet> &resultSet, int idx, ThumbnailData &data);
67     static void HandlePhotoWidth(const std::shared_ptr<NativeRdb::ResultSet> &resultSet, int idx, ThumbnailData &data);
68     static void HandleDirty(const std::shared_ptr<NativeRdb::ResultSet> &resultSet, int idx, ThumbnailData &data);
69     static void HandleReady(const std::shared_ptr<NativeRdb::ResultSet> &resultSet, int idx, ThumbnailData &data);
70     static void HandleLcdVisitTime(const std::shared_ptr<NativeRdb::ResultSet> &resultSet,
71         int idx, ThumbnailData &data);
72 
73     using HandleFunc = void(*)(const std::shared_ptr<NativeRdb::ResultSet> &resultSet, int idx, ThumbnailData &data);
74     static const std::unordered_map<std::string, HandleFunc> RESULT_SET_HANDLER;
75 };
76 } // namespace Media
77 } // namespace OHOS
78 
79 #endif  // FRAMEWORKS_SERVICES_THUMBNAIL_SERVICE_INCLUDE_THUMBNAIL_RDB_UTILS_H_