ImagingTools Core SDK
CGqlObjectCollectionDelegateComp.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#include <QtCore/QJsonObject>
8#include <QtCore/QJsonArray>
9
10// ACF includes
11#include <ilog/TLoggerCompWrap.h>
12
13// ImtCore includes
14#include <imtserverapp/TJsonRepresentationControllerCompWrap.h>
15#include <imtclientgql/IGqlClient.h>
16#include <imtclientgql/IGqlObjectCollectionDelegate.h>
17#include <imtserverapp/CParamSetRepresentationController.h>
18#include <imtserverapp/CComplexCollectionFilterRepresentationController.h>
19#include <imtserverapp/CDocumentFilterRepresentationController.h>
20#include <GeneratedFiles/imtbasesdl/SDL/1.0/CPP/ImtCollection.h>
21
22
23namespace imtclientgql
24{
25
26
27class CGqlObjectCollectionDelegateComp:
28 public ilog::CLoggerComponentBase,
29 virtual public IGqlObjectCollectionDelegate
30{
31public:
32 typedef ilog::CLoggerComponentBase BaseClass;
33
34 I_BEGIN_COMPONENT(CGqlObjectCollectionDelegateComp);
35 I_REGISTER_INTERFACE(IGqlObjectCollectionDelegate);
36 I_ASSIGN(m_collectionIdAttrPtr, "CollectionId", "Collection-ID", false, "");
37 I_ASSIGN(m_versionInfoCompPtr, "VersionInfo", "Version info", false, "VersionInfo");
38 I_ASSIGN(m_objectCollectionCompPtr, "ObjectCollection", "Object collection", false, "ObjectCollection");
39 I_END_COMPONENT;
40
41 virtual imtgql::IGqlRequest* CreateGetObjectTypeIdRequest(const QByteArray& objectId) const override;
42 virtual imtgql::IGqlRequest* CreateGetObjectInfoRequest(const QByteArray& objectId) const override;
43 virtual imtgql::IGqlRequest* CreateGetObjectMetaInfoRequest(const QByteArray& objectId) const override;
44 virtual imtgql::IGqlRequest* CreateGetObjectDataMetaInfoRequest(const QByteArray& objectId) const override;
45 virtual imtgql::IGqlRequest* CreateInsertObjectRequest(
46 const QByteArray& typeId,
47 const QString& name,
48 const QString& description,
49 const istd::IChangeable* objectPtr,
50 const QString& uploadUrl = QString(),
51 const QByteArray& proposedObjectId = QByteArray(),
52 const QByteArray& nodeId = QByteArray(),
53 const idoc::IDocumentMetaInfo* dataMetaInfoPtr = nullptr,
54 const idoc::IDocumentMetaInfo* collectionItemMetaInfoPtr = nullptr,
55 const imtbase::IOperationContext* operationContextPtr = nullptr) const override;
56 virtual imtgql::IGqlRequest* CreateSetObjectNameRequest(
57 const QByteArray& objectId,
58 const QString& name,
59 int clientVersion = -1,
60 const imtbase::IOperationContext* operationContextPtr = nullptr) const override;
61 virtual imtgql::IGqlRequest* CreateSetObjectDescriptionRequest(
62 const QByteArray& objectId,
63 const QString& description,
64 int clientVersion = -1,
65 const imtbase::IOperationContext* operationContextPtr = nullptr) const override;
66 virtual imtgql::IGqlRequest* CreateGetObjectRequest(const QByteArray& objectId, const iprm::IParamsSet* paramsPtr = nullptr) const override;
67 virtual imtgql::IGqlRequest* CreateSetObjectRequest(
68 const QByteArray& objectId,
69 const QByteArray& typeId,
70 const istd::IChangeable* objectPtr,
71 const QString& uploadUrl = QString(),
72 const idoc::IDocumentMetaInfo* dataMetaInfoPtr = nullptr,
73 const idoc::IDocumentMetaInfo* collectionItemMetaInfoPtr = nullptr,
74 int clientVersion = -1,
75 const imtbase::IOperationContext* operationContextPtr = nullptr) const override;
76 virtual imtgql::IGqlRequest* CreateRemoveObjectsRequest(
77 const imtbase::ICollectionInfo::Ids& objectIds,
78 int clientElementVersion = -1,
79 const imtbase::IOperationContext* operationContextPtr = nullptr) const override;
80 virtual imtgql::IGqlRequest* CreateRemoveObjectSetRequest(
81 const iprm::IParamsSet* selectionParamsPtr = nullptr,
82 int clientElementVersion = -1,
83 const imtbase::IOperationContext* operationContextPtr = nullptr) const override;
84 virtual imtgql::IGqlRequest* CreateGetElementCountRequest(const iprm::IParamsSet* selectionParamsPtr = nullptr) const override;
85 virtual imtgql::IGqlRequest* CreateGetElementListRequest(
86 int offset = 0,
87 int count = -1,
88 const iprm::IParamsSet* selectionParamsPtr = nullptr) const override;
89 virtual imtgql::IGqlRequest* CreateGetSubCollectionRequest(
90 int offset = 0,
91 int count = -1,
92 const iprm::IParamsSet* selectionParamsPtr = nullptr) const override;
93
94 virtual bool IsValid(const imtgql::IGqlResponse& reqponse) const override;
95 virtual bool GetOperationResult(const imtgql::IGqlResponse& response, bool& out) const override;
96 virtual bool GetObjectId(const imtgql::IGqlResponse& response, Id& out) const override;
97 virtual bool GetObjectTypeId(const imtgql::IGqlResponse& response, Id& out) const override;
98 virtual bool GetObjectInfo(const imtgql::IGqlResponse& response, ObjectInfo& out) const override;
99 virtual bool GetObjectData(const imtgql::IGqlResponse& response, istd::IChangeable& out) const override;
100 virtual bool GetMetaInfo(const imtgql::IGqlResponse& response, idoc::IDocumentMetaInfo& out) const override;
101 virtual bool GetItemCount(const imtgql::IGqlResponse& response, int& out) const override;
102 virtual bool GetItemIds(const imtgql::IGqlResponse& response, Ids& out) const override;
103 virtual imtbase::IObjectCollection* GetSubCollection(
104 imtbase::IObjectCollection& collection,
105 const imtgql::IGqlResponse& response,
106 QList<imtbase::IMetaInfoCreator*> metaInfoCreatorList) const override;
107
108 // reimplemented (icomp::CComponentBase)
109 virtual void OnComponentCreated() override;
110
111private:
112 struct ResponseData
113 {
114 QJsonObject data;
115 QJsonObject errors;
116 QByteArray commandId;
117 };
118
119 ResponseData GetResponseData(const imtgql::IGqlResponse& response) const;
120 bool SerializeObject(const istd::IPolymorphic* object, QByteArray& objectData) const;
121 bool DeSerializeObject(istd::IPolymorphic* object, const QByteArray& objectData) const;
122 bool GetParamsSetRepresentation(const iprm::IParamsSet& paramsSet, sdl::imtbase::ImtBaseTypes::CParamsSet::V1_0& representation) const;
123
124 template<class Arguments,class SdlRequest>
125 istd::TUniqueInterfacePtr<imtgql::IGqlRequest> CreateGqlRequest(Arguments arguments) const;
126
127private:
128 imtserverapp::CParamSetRepresentationController m_paramSetRepresentationController;
129 imtserverapp::CDocumentFilterRepresentationController m_documentFilterRepresentationController;
130 imtserverapp::CComplexCollectionFilterRepresentationController m_complexCollectionFilterRepresentationController;
131
132private:
133 I_ATTR(QByteArray, m_collectionIdAttrPtr);
134 I_REF(iser::IVersionInfo, m_versionInfoCompPtr);
135 I_REF(imtbase::IObjectCollection, m_objectCollectionCompPtr);
136};
137
138
139} // namespace imtclientgql
140
141