ImagingTools Core SDK
CGqlHierarchicalStructureComp.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 <icomp/CComponentBase.h>
7#include <ilog/TLoggerCompWrap.h>
8
9// ImtCore includes
10#include <imtbase/IHierarchicalStructure.h>
11#include <imtclientgql/IGqlHierarchicalStructureDelegate.h>
12#include <imtclientgql/IGqlClient.h>
13
14
15namespace imtbase
16{
17 class IRevisionController;
18}
19
20
21namespace imtclientgql
22{
23
24
25class CGqlHierarchicalStructureComp:
26 public QObject,
27 public ilog::TLoggerCompWrap<icomp::CComponentBase>,
28 virtual public imtbase::IHierarchicalStructure
29{
30 Q_OBJECT
31public:
32 typedef ilog::TLoggerCompWrap<icomp::CComponentBase> BaseClass;
33
34 I_BEGIN_COMPONENT(CGqlHierarchicalStructureComp);
35 I_REGISTER_INTERFACE(IHierarchicalStructure);
36 I_REGISTER_INTERFACE(IHierarchicalStructureInfo);
37 I_REGISTER_INTERFACE(istd::IChangeable);
38 I_ASSIGN(m_clientCompPtr, "ApiClient", "GraphQL API client", true, "ApiClient");
39 I_ASSIGN(m_delegateCompPtr, "GqlHierarchicalStructureDelegate", "GraphQL-based hierarchical structure delegate for database CRUD operations", true, "GqlObjectCollectionDelegate");
40 I_END_COMPONENT;
41
42 // reimplemented (IHierarchicalStructure)
43 virtual Id InsertNewNode(
44 const QString& name,
45 const QString& description = QString(),
46 const Id& proposedNodeId = Id(),
47 const Id& parentNodeId = Id(),
48 const idoc::IDocumentMetaInfo* metaInfoPtr = nullptr,
49 const imtbase::IOperationContext* operationContextPtr = nullptr) override;
50 virtual bool SetNodeName(
51 const Id& nodeId,
52 const QString& name,
53 const imtbase::IOperationContext* operationContextPtr = nullptr) override;
54 virtual bool SetNodeDescription(
55 const Id& nodeId,
56 const QString& description,
57 const imtbase::IOperationContext* operationContextPtr = nullptr) override;
58 virtual bool SetNodeMetaInfo(
59 const Id& nodeId,
60 const idoc::IDocumentMetaInfo& metaInfo,
61 const imtbase::IOperationContext* operationContextPtr = nullptr) override;
62 virtual bool MoveNode(
63 const Id& nodeId,
64 const Id& parentNodeId,
65 const imtbase::IOperationContext* operationContextPtr = nullptr) override;
66 virtual bool RemoveNode(
67 const Id& nodeId,
68 const imtbase::IOperationContext* operationContextPtr = nullptr) override;
69
70 virtual bool InsertLeaf(
71 const Id& leafId,
72 const Id& nodeId,
73 const QString& leafName,
74 const imtbase::IOperationContext* operationContextPtr = nullptr) override;
75 virtual bool MoveLeaf(
76 const Id& leafId,
77 const Id& sourceNodeId,
78 const Id& targetNodeId,
79 const imtbase::IOperationContext* operationContextPtr = nullptr) override;
80 virtual bool RemoveLeaf(
81 const Id& leafId,
82 const Id& nodeId,
83 const imtbase::IOperationContext* operationContextPtr = nullptr) override;
84
85 // reimplemented (IHierarchicalStructureInfo)
86 virtual int GetItemCount(const iprm::IParamsSet* selectionParamsPtr = nullptr) const override;
87 virtual Ids GetItemIds(
88 int offset = 0,
89 int count = -1,
90 const iprm::IParamsSet* selectionParamsPtr = nullptr) const override;
91 virtual ItemInfoList GetItemInfos(const Ids& itemIds) override;
92 virtual Ids GetItemPath(const Id& itemId) const override;
93 virtual imtbase::IHierarchicalStructureIterator* CreateHierarchicalStructureIterator(
94 int offset = 0,
95 int count = -1,
96 const iprm::IParamsSet* selectionParamsPtr = nullptr) const override;
97
98 // reimplemented (icomp::CComponentBase)
99 virtual void OnComponentCreated() override;
100 virtual void OnComponentDestroyed() override;
101
102private:
103 // imtbase::IObjectCollection::DataPtr GetObject(const QByteArray& objectId, const QByteArray& typeId) const;
104 // // bool GetElementType(const QByteArray& elementId, ElementType& valueOut) const;
105 // bool GetItemInfo(const QByteArray& nodeId, imtbase::IHierarchicalStructureInfo::ItemInfo& valueOut) const;
106 // bool GetObjectInfo(const QByteArray& objectId, imtgql::IGqlStructuredCollectionResponse::ObjectInfo& valueOut) const;
107 // bool GetObjectMetaInfo(const QByteArray& objectId, idoc::MetaInfoPtr& valueOut) const;
108 // bool GetObjectDataMetaInfo(const QByteArray& objectId, idoc::MetaInfoPtr& valueOut) const;
109
110protected:
111 I_REF(IGqlClient, m_clientCompPtr);
112 I_REF(imtclientgql::IGqlHierarchicalStructureDelegate, m_delegateCompPtr);
113};
114
115
116} //namespace imtclientgql
117
118