ImagingTools Core SDK
CDocumentChangeGeneratorCompBase.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#include <iqt/ITranslationManager.h>
8
9// ImtCore includes
10#include <imtbase/IDocumentChangeGenerator.h>
11#include <imtbase/IObjectCollection.h>
12#include <imtbase/COperationDescription.h>
13
14
15namespace imtbase
16{
17
18
19class CDocumentChangeGeneratorCompBase:
20 public ilog::CLoggerComponentBase,
21 virtual public imtbase::IDocumentChangeGenerator
22{
23public:
24 typedef ilog::CLoggerComponentBase BaseClass;
25
26 I_BEGIN_BASE_COMPONENT(CDocumentChangeGeneratorCompBase);
27 I_REGISTER_INTERFACE(imtbase::IDocumentChangeGenerator);
28 I_ASSIGN(m_objectCollectionCompPtr, "ObjectCollection", "Object collection", true, "ObjectCollection");
29 I_ASSIGN(m_translationManagerCompPtr, "TranslationManager", "Translation manager", false, "TranslationManager");
30 I_END_COMPONENT;
31
32protected:
33 QByteArray InsertOperationDescription(
34 imtbase::CObjectCollection& documentChangeCollection,
35 const QByteArray& operationTypeId,
36 const QByteArray& key,
37 const QString& keyName,
38 const QByteArray& oldValue = QByteArray(),
39 const QByteArray& newValue = QByteArray()) const;
40 void GenerateChanges(
41 const QByteArrayList& oldValueList,
42 const QByteArrayList& newValueList,
43 QByteArrayList& addedValueList,
44 QByteArrayList& removedValueList) const;
45 bool IsUuid(const QByteArray& data) const;
46
47 virtual bool CompareDocuments(
48 const istd::IChangeable& oldDocument,
49 const istd::IChangeable& newDocument,
50 CObjectCollection& documentChangeCollection,
51 QString& errorMessage) = 0;
52 virtual QString CreateCustomOperationDescription(const imtbase::COperationDescription& operationDescription, const QByteArray& languageId = QByteArray()) const;
53
54 // reimplemented (imtbase::IDocumentChangeGenerator)
55 virtual bool GenerateDocumentChanges(
56 const QByteArray& operationTypeId,
57 const QByteArray& documentId,
58 const istd::IChangeable* documentPtr,
59 CObjectCollection& documentChangeCollection,
60 QString& errorMessage,
61 const iprm::IParamsSet* paramsPtr) override;
62 virtual QString GetOperationDescription(CObjectCollection& documentChangeCollection, const QByteArray& languageId = QByteArray()) override;
63 virtual QString GetKeyNameForOperation(const QByteArray& key, const QByteArray& value) const;
64
65private:
66 imtbase::COperationDescription* CreateOperationDescription(
67 const QByteArray& operationTypeId,
68 const QByteArray& key,
69 const QString& keyName,
70 const QByteArray& oldValue,
71 const QByteArray& newValue) const;
72
73protected:
74 I_REF(imtbase::IObjectCollection, m_objectCollectionCompPtr);
75 I_REF(iqt::ITranslationManager, m_translationManagerCompPtr);
76};
77
78
79} // namespace imtbase
80
81