| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | // SPDX-FileCopyrightText: 2023 Carl Zeiss Microscopy GmbH | ||
| 2 | // | ||
| 3 | // SPDX-License-Identifier: MIT | ||
| 4 | |||
| 5 | #pragma once | ||
| 6 | |||
| 7 | #include <utility> | ||
| 8 | #include <memory> | ||
| 9 | #include <imgdoc2.h> | ||
| 10 | #include "document.h" | ||
| 11 | #include "ITileCoordinate.h" | ||
| 12 | |||
| 13 | class DocumentWrite2d : public imgdoc2::IDocWrite2d | ||
| 14 | { | ||
| 15 | private: | ||
| 16 | std::shared_ptr < Document> document_; | ||
| 17 | public: | ||
| 18 | 68 | explicit DocumentWrite2d(std::shared_ptr<Document> document) : document_(std::move(document)) | |
| 19 | 68 | {} | |
| 20 | |||
| 21 | imgdoc2::dbIndex AddTile( | ||
| 22 | const imgdoc2::ITileCoordinate* coordinate, | ||
| 23 | const imgdoc2::LogicalPositionInfo* info, | ||
| 24 | const imgdoc2::TileBaseInfo* tileInfo, | ||
| 25 | imgdoc2::DataTypes datatype, | ||
| 26 | imgdoc2::TileDataStorageType storage_type, | ||
| 27 | const imgdoc2::IDataObjBase* data) override; | ||
| 28 | |||
| 29 | void BeginTransaction() override; | ||
| 30 | void CommitTransaction() override; | ||
| 31 | void RollbackTransaction() override; | ||
| 32 | |||
| 33 | 136 | ~DocumentWrite2d() override = default; | |
| 34 | |||
| 35 | private: | ||
| 36 | imgdoc2::dbIndex AddTileInternal( | ||
| 37 | const imgdoc2::ITileCoordinate* coordinate, | ||
| 38 | const imgdoc2::LogicalPositionInfo* info, | ||
| 39 | const imgdoc2::TileBaseInfo* tileInfo, | ||
| 40 | imgdoc2::DataTypes datatype, | ||
| 41 | imgdoc2::TileDataStorageType storage_type, | ||
| 42 | const imgdoc2::IDataObjBase* data); | ||
| 43 | |||
| 44 | void AddToSpatialIndex(imgdoc2::dbIndex index, const imgdoc2::LogicalPositionInfo& logical_position_info); | ||
| 45 | |||
| 46 | imgdoc2::dbIndex AddTileData(const imgdoc2::TileBaseInfo* tile_info, imgdoc2::DataTypes datatype, imgdoc2::TileDataStorageType storage_type, const imgdoc2::IDataObjBase* data); | ||
| 47 | imgdoc2::dbIndex AddBlobData(imgdoc2::TileDataStorageType storage_type, const imgdoc2::IDataObjBase* data); | ||
| 48 | |||
| 49 | std::shared_ptr<IDbStatement> CreateInsertDataStatement(const imgdoc2::IDataObjBase* data); | ||
| 50 | |||
| 51 | [[nodiscard]] const std::shared_ptr<imgdoc2::IHostingEnvironment>& GetHostingEnvironment() const { return this->document_->GetHostingEnvironment(); } | ||
| 52 | |||
| 53 | public: | ||
| 54 | // no copy and no move (-> https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c21-if-you-define-or-delete-any-copy-move-or-destructor-function-define-or-delete-them-all ) | ||
| 55 | DocumentWrite2d() = default; | ||
| 56 | DocumentWrite2d(const DocumentWrite2d&) = delete; // copy constructor | ||
| 57 | DocumentWrite2d& operator=(const DocumentWrite2d&) = delete; // copy assignment | ||
| 58 | DocumentWrite2d(DocumentWrite2d&&) = delete; // move constructor | ||
| 59 | DocumentWrite2d& operator=(DocumentWrite2d&&) = delete; // move assignment | ||
| 60 | }; | ||
| 61 |