ImagingTools Core SDK
CFileCollectionComp.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// ImtCore includes
6#include <imtbase/IRevisionController.h>
7#include <imtbase/TFilterableCollectionWrap.h>
8#include <imtrepo/IRepositoryFileTransformationStepsProvider.h>
9#include <imtrepo/IRepositoryTransformationController.h>
10#include <imtrepo/CFileCollectionCompBase.h>
11
12
13namespace imtrepo
14{
15
16
27 public imtbase::TFilterableCollectionWrap<CFileCollectionCompBase>,
28 virtual protected imtbase::IRevisionController
29{
30 Q_OBJECT
31public:
32 typedef imtbase::TFilterableCollectionWrap <CFileCollectionCompBase> BaseClass;
33
34 I_BEGIN_COMPONENT(CFileCollectionComp)
35 I_ASSIGN(m_productVersionIdAttrPtr, "ProductVersionID", "ID of the product version", true, 89107);
36 I_ASSIGN(m_isEnableRevisionHistoryAttrPtr, "IsEnableRevisionHistory", "Allow saving item revisions", true, false);
37 I_ASSIGN(m_restoreRevisionRightIdAttrPtr, "RestoreRevisionRightId", "Restore to revision right id", true, "RestoreRevision");
38 I_ASSIGN(m_transformationControllerCompPtr, "TransformationController", "Controller for down- and upgrade of the repository data", false, "TransformationController");
39 I_ASSIGN_TO(m_transformationStepsProviderCompPtr, m_transformationControllerCompPtr, true);
40 I_END_COMPONENT;
41
43
44 // reimplemented (imtbase::IRevisionController)
45 virtual RevisionInfoList GetRevisionInfoList(const imtbase::IObjectCollection& collection, const QByteArray& objectId) const override;
46 virtual int BackupRevision(const imtbase::IObjectCollection& collection, const Id& objectId, const QString& userComment = QString()) const override;
47 virtual bool RestoreRevision(imtbase::IObjectCollection& collection, const Id& objectId, int revision) const override;
48 virtual bool ExportRevision(const imtbase::IObjectCollection& collection, const Id& objectId, int revision, const QString& filePath) const override;
49 virtual bool DeleteRevision(IObjectCollection& collection, const ICollectionInfo::Id& objectId, int revision) const override;
50
51 // reimplemented (IFileCollectionInfo)
52 virtual FileCollectionLayout GetCollectionFileLayout() const override;
53
54 // reimplemented (IObjectCollection)
55 virtual const imtbase::IRevisionController* GetRevisionController() const override;
56 virtual bool RemoveElements(const Ids& elementIds, const imtbase::IOperationContext* operationContextPtr = nullptr) override;
57 virtual bool RemoveElementSet(
58 const iprm::IParamsSet* selectionParamsPtr = nullptr,
59 const imtbase::IOperationContext* operationContextPtr = nullptr) override;
60 // reimplemented (ICollectionInfo)
61 virtual bool SetElementName(const Id& elementId, const QString& name, ilog::IMessageConsumer* logPtr = nullptr) override;
62
63 // reimplemented (ICollectionDataController)
64 virtual bool ExportFile(
65 const imtbase::IObjectCollection& collection,
66 const Id& objectId,
67 const QString& targetFilePath = QString()) const override;
68 virtual Id ImportFile(
70 const QByteArray& typeId,
71 const QString& sourceFilePath = QString(),
72 const QString& objectName = QString()) const override;
73
74 // reimplemented (istd::IChangeable)
75 virtual int GetSupportedOperations() const override;
76 virtual bool CopyFrom(const IChangeable& object, CompatibilityMode mode = CM_WITHOUT_REFS) override;
77 virtual bool ResetData(CompatibilityMode mode = CM_WITHOUT_REFS) override;
78
79protected:
80 struct RevisionsContentsItem: public imtbase::IRevisionController::RevisionInfo
81 {
82 RevisionsContentsItem()
83 :repositoryRevision(0)
84 {
85 }
86
90 int repositoryRevision;
91 QString path;
92 };
93
94 typedef QMap<int, RevisionsContentsItem> RevisionsContentsMap;
95
96 class RevisionsContents: public RevisionsContentsMap, virtual public iser::ISerializable
97 {
98 public:
99 // reimplement (iser::ISerializable)
100 virtual bool Serialize(iser::IArchive& archive) override;
101 };
102
103 virtual bool LoadRevisionsContents(const IFileObjectCollection& collection, const QByteArray& objectId, RevisionsContents& revisionsContents) const;
104 virtual bool SaveRevisionsContents(const IFileObjectCollection& collection, const QByteArray& objectId, RevisionsContents& revisionsContents) const;
105
111 virtual bool TransformRepositoryItem(const RepositoryItemInfo& repositoryItemInfo, int fromRepositoryRevision, int toRepositoryRevision) const;
112
113 // reimplemented (CFileCollectionCompBase)
114 virtual QString CalculateFolderPathInRepository(
115 const QString& localFilePath,
116 const QString& resourceName,
117 const QByteArray& typeId,
118 ilog::IMessageConsumer* messageConsumerPtr) const override;
119 virtual QString CalculateTargetFilePath(
120 const QString& filePath,
121 const QString& objectName,
122 const QByteArray& typeId) const override;
123 virtual QString CalculateTargetFilePath(
124 const QString& targetFolderPath,
125 const QString& localFilePath) const override;
126
127 // reimplemented (icomp::CComponentBase)
128 virtual void OnComponentCreated() override;
129 virtual void OnComponentDestroyed() override;
130
131private:
132 I_ATTR(int, m_productVersionIdAttrPtr);
136 I_ATTR(bool, m_isEnableRevisionHistoryAttrPtr);
137
141 I_ATTR(QByteArray, m_restoreRevisionRightIdAttrPtr);
142
146 I_REF(IRepositoryTransformationController, m_transformationControllerCompPtr);
147
151 I_REF(IRepositoryFileTransformationStepsProvider, m_transformationStepsProviderCompPtr);
152};
153
154
155} // namespace imtrepo
156
157
virtual bool UpdateRepositoryFormat()