ImagingTools Core SDK
CFileTransformationControllerComp.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4
5// ACF includes
6#include <ilog/TLoggerCompWrap.h>
7
8// ImtCore includes
9#include <imtrepo/IFileCollectionInfo.h>
10#include <imtrepo/IRepositoryTransformationController.h>
11#include <imtrepo/IRepositoryItemInfoProvider.h>
12#include <imtrepo/IRepositoryFileTransformation.h>
13#include <imtrepo/IRepositoryFileTransformationStepsProvider.h>
14
15
16namespace imtrepo
17{
18
19
25 public ilog::CLoggerComponentBase,
28{
29public:
30 typedef ilog::CLoggerComponentBase BaseClass;
31
32 I_BEGIN_COMPONENT(CFileTransformationControllerComp);
33 I_REGISTER_INTERFACE(IRepositoryTransformationController);
35 I_ASSIGN_MULTI_0(m_transformationsCompPtr, "FileTransformations", "List of file transformations", true);
36 I_END_COMPONENT;
37
38 // reimplemented (IRepositoryFileTransformationStepsProvider)
39 virtual TransformationSteps GetTransformationSteps(int fromRevision, int toRevision) const override;
40
41 // reimplemented (IRepositoryTransformationController)
42 virtual bool TransformRepository(IFileObjectCollection& repository, int fromRevision, int toRevision) const override;
43
44protected:
45 enum TransformationState
46 {
47 TS_IDLE = 0,
48 TS_IN_PROGRESS,
49 TS_REPLACING
50 };
51
52 class RepositoryItemInfo: virtual public IRepositoryItemInfo
53 {
54 public:
55 // reimplemented (IRepositoryItemInfo)
56 virtual RepositoryFileTypes GetRepositoryItemFileTypes() const override;
57 virtual QString GetRepositoryItemFilePath(RepositoryFileType fileId) const override;
58
59 QMap<int, QString> m_files;
60 };
61
62protected:
63 imtbase::ICollectionInfo::Ids GetRepositoryItemIds(IFileObjectCollection& repository) const;
64 const IRepositoryItemInfo* GetRepositoryItemInfo(IFileObjectCollection& repository, const QByteArray& itemId) const;
65 TransformationState GetTransformationState(IFileObjectCollection& repository, bool &isOk) const;
66 bool SetTransformationState(IFileObjectCollection& repository, TransformationState state) const;
67 bool ReplaceWithTransformedItems(IFileObjectCollection& repository) const;
68 bool CleanupTrasformation(IFileObjectCollection& repository) const;
69
70protected:
71 I_MULTIREF(IRepositoryFileTransformation, m_transformationsCompPtr);
72};
73
74
75} // namespace imtrepo
76
77