ImagingTools Core SDK
CStructureControllerCompBase.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 <iprm/CParamsSet.h>
7
8// ImtCore includes
9#include <imtbase/IHierarchicalStructure.h>
10#include <imtbase/IDocumentChangeGenerator.h>
11#include <imtservergql/CGqlRequestHandlerCompBase.h>
12#include <imtbase/IOperationContextController.h>
13#include <imtgql/IGqlRequestExtractor.h>
14
15
16#undef GetObject
17
18
19namespace imtservergql
20{
21
22
23class CStructureControllerCompBase: public imtservergql::CGqlRequestHandlerCompBase
24{
25public:
26 typedef imtservergql::CGqlRequestHandlerCompBase BaseClass;
27
28 I_BEGIN_COMPONENT(CStructureControllerCompBase);
29 I_ASSIGN(m_collectionStructureCompPtr, "CollectionStructure", "Collection structure", true, "CollectionStructure");
30 I_ASSIGN(m_objectCollectionCompPtr, "ObjectCollection", "Object collection", true, "ObjectCollection");
31 I_ASSIGN(m_gqlRequestExtractorCompPtr, "GqlRequestExtractor", "GraphQL request extractor", true, "GqlRequestExtractor");
32 I_ASSIGN(m_operationContextControllerCompPtr, "OperationContextController", "Operation context controller", false, "OperationContextController");
33 I_ASSIGN(m_structureIdAttrPtr, "StructureId", "Structure-ID", true, "");
34 I_END_COMPONENT;
35
36 enum OperationType
37 {
38 OT_UNKNOWN,
39 OT_INSERT_NEW_NODE,
40 OT_SET_NODE_NAME,
41 OT_SET_NODE_DESCRIPTION,
42 OT_SET_NODE_METAINFO,
43 OT_MOVE_NODE,
44 OT_REMOVE_NODE,
45 OT_INSERT_NEW_OBJECT,
46 OT_MOVE_OBJECT,
47 OT_REMOVE_OBJECT,
48 OT_GET_NODE_COUNT,
49 OT_GET_NODE_IDS,
50 OT_GET_NODE_INFO,
51 OT_GET_OBJECT_PARENT_NODE_IDS,
52 OT_GET_NODES,
53 OT_GET_ELEMENTS,
54 OT_USER_OPERATION = 1000
55 };
56
57 // reimplemented (imtgql::IGqlRequestHandler)
58 virtual bool IsRequestSupported(const imtgql::CGqlRequest& gqlRequest) const override;
59
60 // reimplemented (imtservergql::CGqlRequestHandlerCompBase)
61 virtual QJsonObject CreateInternalResponse(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const override;
62
63protected:
64 virtual bool GetOperationFromRequest(const imtgql::CGqlRequest& gqlRequest, imtgql::CGqlParamObject& gqlObject, QString& errorMessage, int& operationType) const;
65 virtual QByteArray GetObjectIdFromInputParams(const QList<imtgql::CGqlParamObject>& inputParams) const;
66 virtual QJsonObject InsertNewNode(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const;
67 virtual QJsonObject SetNodeName(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const;
68 virtual QJsonObject SetNodeDescription(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const;
69 virtual QJsonObject SetNodeMetaInfo(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const;
70 virtual QJsonObject MoveNode(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const;
71 virtual QJsonObject RemoveNode(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const;
72 virtual QJsonObject InsertNewObject(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const;
73 virtual QJsonObject MoveObject(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const;
74 virtual QJsonObject RemoveObject(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const;
75 virtual QJsonObject GetNodeCount(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const;
76 virtual QJsonObject GetNodeIds(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const;
77 virtual QJsonObject GetItemInfo(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const;
78 virtual QJsonObject GetObjectParentNodeIds(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const;
79 virtual QJsonObject GetNodes(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const;
80 virtual QJsonObject GetElements(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const;
81
85 virtual bool SetupNodeItem(
86 const imtgql::CGqlRequest& gqlRequest,
87 QJsonObject& itemObj,
88 const imtbase::IHierarchicalStructureIterator* collectionStructureIterator,
89 QString& errorMessage) const;
90
94 virtual bool SetupObjectItem(
95 const imtgql::CGqlRequest& gqlRequest,
96 QJsonObject& itemObj,
97 const imtbase::IObjectCollectionIterator* objectCollectionIterator,
98 QString& errorMessage) const;
99
103 virtual QByteArrayList GetInformationIds(const imtgql::CGqlRequest& gqlRequest, const QByteArray& objectId) const;
104
105protected:
106 I_REF(imtbase::IHierarchicalStructure, m_collectionStructureCompPtr);
107 I_REF(imtbase::IObjectCollection, m_objectCollectionCompPtr);
108 I_REF(imtgql::IGqlRequestExtractor, m_gqlRequestExtractorCompPtr);
109 I_REF(imtbase::IOperationContextController, m_operationContextControllerCompPtr);
110 I_ATTR(QByteArray, m_structureIdAttrPtr);
111};
112
113
114} // namespace imtservergql
115
116