ImagingTools Core SDK
CSqlDatabaseDocumentDelegateLegacyComp.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 <ifile/IDeviceBasedPersistence.h>
7
8// ImtCore includes
9#include <imtbase/IRevisionController.h>
10#include <imtdb/IMetaInfoTableDelegate.h>
11#include <imtdb/CSqlDatabaseObjectDelegateCompBase.h>
12
13
14namespace imtdb
15{
16
17
18class CSqlDatabaseDocumentDelegateLegacyComp:
19 public imtdb::CSqlDatabaseObjectDelegateCompBase,
20 virtual public imtbase::IRevisionController
21{
22public:
23 typedef imtdb::CSqlDatabaseObjectDelegateCompBase BaseClass;
24
25 I_BEGIN_COMPONENT(CSqlDatabaseDocumentDelegateLegacyComp)
26 I_REGISTER_INTERFACE(imtbase::IRevisionController);
27 I_ASSIGN_MULTI_0(m_documentFactoriesCompPtr, "DocumentFactories", "Factory list used for creation of the new document instance according to the given type-ID", true);
28 I_ASSIGN_MULTI_0(m_documentPersistenceListCompPtr, "DocumentPersistenceList", "List of device-based persistence components for each type of the document", true);
29 I_ASSIGN(m_metaInfoTableDelegateCompPtr, "MetaInfoTableDelegate", "Delegate for the table containing meta-informations for the document type", false, "MetaInfoTableDelegate");
30 I_ASSIGN(m_documentContentColumnIdAttrPtr, "DocumentContentColumnId", "ID of the column in the table containing document content", true, "Document");
31 I_ASSIGN(m_metaInfoTableNameAttrPtr, "MetaInfoTableName", "Name of the meta-info table", true, "");
32 I_ASSIGN(m_revisionsTableNameAttrPtr, "RevisionsTableName", "Name of the table contained document revisions", true, "");
33 I_END_COMPONENT
34
35 // reimplemented (imtdb::ISqlDatabaseObjectDelegate)
36 virtual QByteArray GetSelectionQuery(
37 const QByteArray& objectId = QByteArray(),
38 int offset = 0,
39 int count = -1,
40 const iprm::IParamsSet* paramsPtr = nullptr) const override;
41 virtual istd::IChangeableUniquePtr CreateObjectFromRecord(
42 const QSqlRecord& record,
43 const iprm::IParamsSet* paramsPtr = nullptr) const override;
44 virtual NewObjectQuery CreateNewObjectQuery(
45 const QByteArray& typeId,
46 const QByteArray& proposedObjectId,
47 const QString& objectName,
48 const QString& objectDescription,
49 const istd::IChangeable* valuePtr,
50 const imtbase::IOperationContext* operationContextPtr) const override;
51 virtual QByteArray CreateDeleteObjectsQuery(
52 const imtbase::IObjectCollection& collection,
53 const imtbase::ICollectionInfo::Ids& objectIds,
54 const imtbase::IOperationContext* operationContextPtr) const override;
55 virtual QByteArray CreateDeleteObjectSetQuery(
56 const imtbase::IObjectCollection& collection,
57 const iprm::IParamsSet* paramsPtr = nullptr,
58 const imtbase::IOperationContext* operationContextPtr = nullptr) const override;
59 virtual QByteArray CreateUpdateObjectQuery(
60 const imtbase::IObjectCollection& collection,
61 const QByteArray& objectId,
62 const istd::IChangeable& object,
63 const imtbase::IOperationContext* operationContextPtr,
64 bool useExternDelegate = true) const override;
65 virtual QByteArray CreateRenameObjectQuery(
66 const imtbase::IObjectCollection& collection,
67 const QByteArray& objectId,
68 const QString& newObjectName,
69 const imtbase::IOperationContext* operationContextPtr) const override;
70 virtual QByteArray CreateDescriptionObjectQuery(
71 const imtbase::IObjectCollection& collection,
72 const QByteArray& objectId,
73 const QString& description,
74 const imtbase::IOperationContext* operationContextPtr) const override;
75
76 // reimplemented (imtbase::IRevisionController)
77 virtual RevisionInfoList GetRevisionInfoList(
78 const imtbase::IObjectCollection& collection,
79 const QByteArray& objectId) const override;
80 virtual int BackupRevision(
81 const imtbase::IObjectCollection& collection,
82 const imtbase::ICollectionInfo::Id& objectId,
83 const QString& userComment = QString()) const override;
84 virtual bool RestoreRevision(
86 const imtbase::ICollectionInfo::Id& objectId,
87 int revision) const override;
88 virtual bool ExportRevision(
89 const imtbase::IObjectCollection& collection,
90 const imtbase::ICollectionInfo::Id& objectId,
91 int revision,
92 const QString& filePath) const override;
93 virtual bool DeleteRevision(
95 const imtbase::ICollectionInfo::Id& objectId,
96 int revision) const override;
97
98protected:
99 virtual istd::IChangeableUniquePtr CreateObject(const QByteArray& typeId) const;
100 virtual bool WriteDataToMemory(const QByteArray& typeId, const istd::IChangeable& object, QByteArray& data) const;
101 virtual bool ReadDataFromMemory(const QByteArray& typeId, const QByteArray& data, istd::IChangeable& object) const;
102
103 // reimplemented (imtdb::CSqlDatabaseObjectDelegateCompBase)
104 virtual QString GetBaseSelectionQuery() const override;
105 virtual bool CreateObjectFilterQuery(const iprm::IParamsSet& filterParams, QString& filterQuery) const override;
106 virtual bool CreateObjectInfoFromRecord(
107 const QByteArray& typeId,
108 const QSqlRecord& record,
109 idoc::MetaInfoPtr& objectMetaInfoPtr,
110 idoc::MetaInfoPtr& collectionItemMetaInfoPtr) const;
111 virtual idoc::MetaInfoPtr CreateObjectMetaInfo(const QByteArray& typeId) const override;
112 virtual bool SetObjectMetaInfoFromRecord(const QSqlRecord& record, idoc::IDocumentMetaInfo& metaInfo) const override;
113
114protected:
115 virtual QByteArray CreateOperationDescriptionQuery(const QByteArray& objectId, const imtbase::IOperationContext* operationContextPtr) const;
116 const ifile::IDeviceBasedPersistence* FindDocumentPersistence(const QByteArray& typeId) const;
117 virtual QByteArray CreateObjectHistoryQuery(
118 int offset = 0,
119 int count = -1,
120 const iprm::IParamsSet* paramsPtr = nullptr) const
121 {
122 Q_UNUSED(offset);
123 Q_UNUSED(count);
124 Q_UNUSED(paramsPtr);
125
126 return QByteArray();
127 }
128
129protected:
130 I_MULTIFACT(istd::IChangeable, m_documentFactoriesCompPtr);
131 I_MULTIREF(ifile::IDeviceBasedPersistence, m_documentPersistenceListCompPtr);
132 I_REF(IMetaInfoTableDelegate, m_metaInfoTableDelegateCompPtr);
133 I_ATTR(QByteArray, m_documentContentColumnIdAttrPtr);
134 I_ATTR(QByteArray, m_metaInfoTableNameAttrPtr);
135 I_ATTR(QByteArray, m_revisionsTableNameAttrPtr);
136};
137
138
139} // namespace imtdb
140
141
Database Abstraction Layer (ORM Framework) for ImtCore applications.