6#include <ilog/TLoggerCompWrap.h>
7#include <iprm/COptionsManager.h>
10#include <imtclientgql/IGqlSubscriptionClient.h>
11#include <imtclientgql/CRemoteGqlCollectionController.h>
16 class IRevisionController;
24class CGqlObjectCollectionComp:
26 public ilog::TLoggerCompWrap<icomp::CComponentBase>,
27 virtual public CRemoteGqlCollectionController,
28 virtual public IGqlSubscriptionClient
32 typedef ilog::TLoggerCompWrap<icomp::CComponentBase> BaseClass;
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);
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;
53 virtual const iprm::IOptionsList* GetObjectTypesInfo()
const override;
56 virtual imtbase::IObjectCollection::DataPtr CreateObjectInstance(
const QByteArray& typeId)
const override;
59 virtual void OnComponentCreated()
override;
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);
69 iprm::COptionsManager m_typeInfos;