ImagingTools Core SDK
CGqlObjectCollectionComp.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#include <iprm/COptionsManager.h>
8
9// ImtCore includes
10#include <imtclientgql/IGqlSubscriptionClient.h>
11#include <imtclientgql/CRemoteGqlCollectionController.h>
12
13
14namespace imtbase
15{
16 class IRevisionController;
17}
18
19
20namespace imtclientgql
21{
22
23
24class CGqlObjectCollectionComp:
25 public QObject,
26 public ilog::TLoggerCompWrap<icomp::CComponentBase>,
27 virtual public CRemoteGqlCollectionController,
28 virtual public IGqlSubscriptionClient
29{
30 Q_OBJECT
31public:
32 typedef ilog::TLoggerCompWrap<icomp::CComponentBase> BaseClass;
33
34 I_BEGIN_COMPONENT(CGqlObjectCollectionComp);
35 I_REGISTER_INTERFACE(IGqlSubscriptionClient);
36 I_REGISTER_INTERFACE(IObjectCollection);
37 I_REGISTER_INTERFACE(IObjectCollectionInfo);
38 I_REGISTER_INTERFACE(ICollectionInfo);
39 I_REGISTER_INTERFACE(istd::IChangeable);
40 I_ASSIGN(m_delegateCompPtr, "GqlDatabaseDelegate", "GraphQL-based document delegate for database CRUD operations", true, "GqlObjectCollectionDelegate");
41 I_ASSIGN_MULTI_0(m_typeIdsAttrPtr, "TypeIds", "List of type-ID corresponding to the registered factories", false);
42 I_ASSIGN_MULTI_0(m_typeNamesAttrPtr, "TypeNames", "List of type names corresponding to the registered factories", false);
43 I_ASSIGN_MULTI_0(m_objectFactoriesCompPtr, "ObjectFactories", "List of factories used for object creation", false);
44 I_ASSIGN(m_clientCompPtr, "ApiClient", "GraphQL API client", true, "ApiClient");
45 I_ASSIGN_MULTI_0(m_metaInfoCreatorListCompPtr, "MetaInfoCreators", "List of the meta-info creators corresponding to the reigstered type-IDs", false);
46 I_END_COMPONENT;
47
48 // reimplemented (imtgql::IGqlSubscriptionClient)
49 virtual void OnResponseReceived(const QByteArray& subscriptionId, const QByteArray& subscriptionData) override;
50 virtual void OnSubscriptionStatusChanged(const QByteArray& subscriptionId, const SubscriptionStatus& status, const QString& message) override;
51
52 // reimplemented (IObjectCollectionInfo)
53 virtual const iprm::IOptionsList* GetObjectTypesInfo() const override;
54
55protected:
56 virtual imtbase::IObjectCollection::DataPtr CreateObjectInstance(const QByteArray& typeId) const override;
57
58 // reimplemented (icomp::CComponentBase)
59 virtual void OnComponentCreated() override;
60
61protected:
62 I_REF(IGqlObjectCollectionDelegate, m_delegateCompPtr);
63 I_MULTIATTR(QByteArray, m_typeIdsAttrPtr);
64 I_MULTITEXTATTR(m_typeNamesAttrPtr);
65 I_MULTIFACT(istd::IChangeable, m_objectFactoriesCompPtr);
66 I_REF(IGqlClient, m_clientCompPtr);
67 I_MULTIREF(imtbase::IMetaInfoCreator, m_metaInfoCreatorListCompPtr);
68
69 iprm::COptionsManager m_typeInfos;
70};
71
72
73} //namespace imtclientgql
74
75