ImagingTools Core SDK
CSqlStructureDelegateCompBase.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 <imtbase/IOperationContext.h>
10#include <imtbase/IHierarchicalStructure.h>
11#include <imtbase/IStructuredCollectionFinder.h>
12#include <ifile/IFilePersistence.h>
13#include <imtdb/IDatabaseEngine.h>
14
15
16namespace imtdb
17{
18
19
20class CSqlStructureDelegateCompBase:
21 public ilog::CLoggerComponentBase,
22 virtual public imtbase::IHierarchicalStructure,
23 virtual public imtbase::IStructuredCollectionFinder
24{
25public:
26 typedef ilog::CLoggerComponentBase BaseClass;
27
28 I_BEGIN_BASE_COMPONENT(CSqlStructureDelegateCompBase);
29 I_REGISTER_INTERFACE(imtbase::IHierarchicalStructure);
30 I_REGISTER_INTERFACE(imtbase::IStructuredCollectionFinder);
31 I_ASSIGN(m_dbEngineCompPtr, "DatabaseEngine", "Database engine used for low level SQL quering", true, "DatabaseEngine");
32 I_END_COMPONENT;
33
34 virtual Id InsertNewNode(
35 const QString& name,
36 const QString& description = QString(),
37 const Id& proposedNodeId = Id(),
38 const Id& parentNodeId = Id(),
39 const idoc::IDocumentMetaInfo* metaInfoPtr = nullptr,
40 const imtbase::IOperationContext* operationContextPtr = nullptr) override;
41 virtual bool SetNodeName(
42 const Id& nodeId,
43 const QString& name,
44 const imtbase::IOperationContext* operationContextPtr = nullptr) override;
45 virtual bool SetNodeDescription(
46 const Id& nodeId,
47 const QString& description,
48 const imtbase::IOperationContext* operationContextPtr = nullptr) override;
49 virtual bool SetNodeMetaInfo(
50 const Id& nodeId,
51 const idoc::IDocumentMetaInfo& metaInfo,
52 const imtbase::IOperationContext* operationContextPtr = nullptr) override;
53 virtual bool MoveNode(
54 const Id& nodeId,
55 const Id& parentNodeId,
56 const imtbase::IOperationContext* operationContextPtr = nullptr) override;
57 virtual bool RemoveNode(
58 const Id& nodeId,
59 const imtbase::IOperationContext* operationContextPtr = nullptr) override;
60
61 virtual bool InsertLeaf(
62 const Id& leafId,
63 const Id& nodeId,
64 const QString& leafName,
65 const imtbase::IOperationContext* operationContextPtr = nullptr) override;
66
67 virtual bool MoveLeaf(
68 const Id& leafId,
69 const Id& sourceNodeId,
70 const Id& targetNodeId,
71 const imtbase::IOperationContext* operationContextPtr = nullptr) override;
72
73 virtual bool RemoveLeaf(
74 const Id& leafId,
75 const Id& nodeId,
76 const imtbase::IOperationContext* operationContextPtr = nullptr) override;
77
78 virtual int GetItemCount(const iprm::IParamsSet* selectionParamsPtr = nullptr) const override;
79 virtual Ids GetItemIds(
80 int offset = 0,
81 int count = -1,
82 const iprm::IParamsSet* selectionParamsPtr = nullptr) const override;
83 virtual imtbase::IHierarchicalStructureIterator* CreateHierarchicalStructureIterator(
84 int offset = 0,
85 int count = -1,
86 const iprm::IParamsSet* selectionParamsPtr = nullptr) const override;
87 // virtual NodeInfo GetItemInfo(const Id& nodeId) override;
88 // virtual QList<PathElement> GetNodePath(const Id& nodeId) const override;
89 virtual ItemInfoList GetItemInfos(const Ids& itemIds) override;
90 virtual Ids GetItemPath(const Id& itemId) const override;
91
92 // reimplemented (imtbase::IStructuredCollectionFinder)
93 virtual Ids FindObjectParentNodes(const Id& objectId) const override;
94
95protected:
96 virtual QByteArray CreateInsertNewNodeQuery(
97 const QString& name,
98 const QString& description = QString(),
99 const Id& proposedNodeId = Id(),
100 const Id& parentNodeId = Id(),
101 const idoc::IDocumentMetaInfo* metaInfoPtr = nullptr,
102 const imtbase::IOperationContext* operationContextPtr = nullptr) = 0;
103 virtual QByteArray CreateSetNodeNameQuery(
104 const Id& nodeId,
105 const QString& name,
106 const imtbase::IOperationContext* operationContextPtr = nullptr) = 0;
107 virtual QByteArray CreateSetNodeDescriptionQuery(
108 const Id& nodeId,
109 const QString& description,
110 const imtbase::IOperationContext* operationContextPtr = nullptr) = 0;
111 virtual QByteArray CreateSetNodeMetaInfoQuery(
112 const Id& nodeId,
113 const idoc::IDocumentMetaInfo* metaInfo,
114 const imtbase::IOperationContext* operationContextPtr = nullptr) = 0;
115 virtual QByteArray CreateMoveNodeQuery(
116 const Id& nodeId,
117 const Id& parentNodeId,
118 const imtbase::IOperationContext* operationContextPtr = nullptr) = 0;
119 virtual QByteArray CreateRemoveNodeQuery(
120 const Id& nodeId,
121 const imtbase::IOperationContext* operationContextPtr = nullptr) = 0;
122
123 virtual QByteArray CreateInsertNewObjectQuery(
124 const Id& objectId,
125 const Id& nodeId,
126 const imtbase::IOperationContext* operationContextPtr = nullptr) = 0;
127 virtual QByteArray CreateMoveObjectQuery(
128 const Id& objectId,
129 const Id& sourceNodeId,
130 const Id& targetNodeId,
131 const imtbase::IOperationContext* operationContextPtr = nullptr) = 0;
132 virtual QByteArray CreateRemoveObjectQuery(
133 const Id& objectId,
134 const Id& nodeId,
135 const imtbase::IOperationContext* operationContextPtr = nullptr) = 0;
136 virtual QByteArray CreateGetNodeCountQuery(const iprm::IParamsSet* selectionParamsPtr = nullptr) const = 0;
137 virtual QByteArray CreateGetNodeIdsQuery(
138 int offset = 0,
139 int count = -1,
140 const iprm::IParamsSet* selectionParamsPtr = nullptr) const = 0;
141 virtual QByteArray CreateGetObjectIdsQuery(
142 int offset = 0,
143 int count = -1,
144 const iprm::IParamsSet* selectionParamsPtr = nullptr) const = 0;
145 virtual QByteArray CreateGetNodeInfoQuery(const Id& nodeId) const = 0;
146 virtual QByteArray CreateGetNodePathQuery(const Id& nodeId) const = 0;
147 virtual QByteArray CreateGetObjectParentNodeIdsQuery(const Id& objectId) const = 0;
148 virtual bool ExecuteTransaction(const QByteArray& sqlQuery) const;
149
150protected:
151 I_REF(imtdb::IDatabaseEngine, m_dbEngineCompPtr);
152};
153
154
155} // namespace imtdb
156
157
Core database engine interface for low-level SQL execution and transaction management.
Database Abstraction Layer (ORM Framework) for ImtCore applications.