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_