ImagingTools Core SDK
CSqlStructureDelegateComp.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// Qt includes
6#include <QtCore/QJsonDocument>
7
8// ImtCore includes
9#include <imtdb/CSqlStructureDelegateCompBase.h>
10#include <imtbase/ICollectionFilter.h>
11#include <imtbase/IMetaInfoCreator.h>
12
13
14namespace imtdb
15{
16
17
18class CSqlStructureDelegateComp:
19 public CSqlStructureDelegateCompBase
20{
21public:
22 typedef CSqlStructureDelegateCompBase BaseClass;
23
24 I_BEGIN_COMPONENT(CSqlStructureDelegateComp);
25 I_ASSIGN(m_objectCollectionCompPtr, "ObjectCollection", "Object collection", true, "ObjectCollection");
26 I_ASSIGN(m_metaInfoCreatorCompPtr, "MetaInfoCreator", "Meta-info creator", true, "MetaInfoCreator");
27 I_END_COMPONENT;
28
29protected:
30 virtual QByteArray CreateInsertNewNodeQuery(
31 const QString& name,
32 const QString& description = QString(),
33 const Id& proposedNodeId = Id(),
34 const Id& parentNodeId = Id(),
35 const idoc::IDocumentMetaInfo* metaInfoPtr = nullptr,
36 const imtbase::IOperationContext* operationContextPtr = nullptr) override;
37 virtual QByteArray CreateSetNodeNameQuery(
38 const Id& nodeId,
39 const QString& name,
40 const imtbase::IOperationContext* operationContextPtr = nullptr) override;
41 virtual QByteArray CreateSetNodeDescriptionQuery(
42 const Id& nodeId,
43 const QString& description,
44 const imtbase::IOperationContext* operationContextPtr = nullptr) override;
45 virtual QByteArray CreateSetNodeMetaInfoQuery(
46 const Id& nodeId,
47 const idoc::IDocumentMetaInfo *metaInfoPtr,
48 const imtbase::IOperationContext* operationContextPtr = nullptr) override;
49 virtual QByteArray CreateMoveNodeQuery(
50 const Id& nodeId,
51 const Id& parentNodeId,
52 const imtbase::IOperationContext* operationContextPtr = nullptr) override;
53 virtual QByteArray CreateRemoveNodeQuery(
54 const Id& nodeId,
55 const imtbase::IOperationContext* operationContextPtr = nullptr) override;
56
57 virtual QByteArray CreateInsertNewObjectQuery(
58 const Id& objectId,
59 const Id& nodeId,
60 const imtbase::IOperationContext* operationContextPtr = nullptr) override;
61 virtual QByteArray CreateMoveObjectQuery(
62 const Id& objectId,
63 const Id& sourceNodeId,
64 const Id& targetNodeId,
65 const imtbase::IOperationContext* operationContextPtr = nullptr) override;
66 virtual QByteArray CreateRemoveObjectQuery(
67 const Id& objectId,
68 const Id& nodeId,
69 const imtbase::IOperationContext* operationContextPtr = nullptr) override;
70
71 virtual QByteArray CreateGetNodeCountQuery(const iprm::IParamsSet* selectionParamsPtr = nullptr) const override;
72 virtual QByteArray CreateGetNodeIdsQuery(
73 int offset = 0,
74 int count = -1,
75 const iprm::IParamsSet* selectionParamsPtr = nullptr) const override;
76 virtual QByteArray CreateGetObjectIdsQuery(
77 int offset = 0,
78 int count = -1,
79 const iprm::IParamsSet* selectionParamsPtr = nullptr) const override;
80 virtual QByteArray CreateGetNodeInfoQuery(const Id& nodeId) const override;
81 virtual QByteArray CreateGetNodePathQuery(const Id& nodeId) const override;
82 virtual QByteArray CreateGetObjectParentNodeIdsQuery(const Id& objectId) const override;
83
84private:
85 virtual QJsonArray CtreateJsonFromMetaInfo(const idoc::IDocumentMetaInfo* metaInfoPtr);
86 virtual bool CreatePaginationQuery(int offset, int count, QByteArray& paginationQuery) const;
87 virtual bool CreateFilterQuery(const iprm::IParamsSet& filterParams, QString& filterQuery) const;
88 virtual bool CreateObjectFilterQuery(
89 const iprm::IParamsSet& filterParams,
90 QString& filterQuery) const;
91 virtual bool CreateTextFilterQuery(
92 const imtbase::ICollectionFilter& collectionFilter,
93 QString& textFilterQuery) const;
94 virtual bool CreateSortQuery(
95 const imtbase::ICollectionFilter& collectionFilter,
96 QString& sortQuery) const;
97protected:
98 I_REF(imtbase::IObjectCollection, m_objectCollectionCompPtr);
99 I_REF(imtbase::IMetaInfoCreator, m_metaInfoCreatorCompPtr);
100
101};
102
103
104} // namespace imtdb
105
106
Database Abstraction Layer (ORM Framework) for ImtCore applications.