ImagingTools Core SDK
CRemoteGqlCollectionController.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 <istd/TComposedFactory.h>
7
8// ImtCore includes
9#include <imtbase/IObjectCollection.h>
10#include <imtbase/IMetaInfoCreator.h>
11#include <imtclientgql/IGqlObjectCollectionDelegate.h>
12#include <imtclientgql/IGqlClient.h>
13
14
15namespace imtbase
16{
17 class IRevisionController;
18}
19
20
21namespace imtclientgql
22{
23
24
25class CRemoteGqlCollectionController:
26 virtual public imtbase::IObjectCollection,
27 public istd::TComposedFactory<istd::IChangeable>
28{
29public:
30 typedef istd::TComposedFactory<istd::IChangeable> BaseClass;
31
32 CRemoteGqlCollectionController();
33
34 // reimplemented (IObjectCollection)
35 virtual const imtbase::IRevisionController* GetRevisionController() const override;
36 virtual const imtbase::ICollectionDataController* GetDataController() const override;
37 virtual int GetOperationFlags(const Id& elementId = Id()) const override;
38 virtual QByteArray InsertNewObject(
39 const QByteArray& typeId,
40 const QString& name,
41 const QString& description,
42 const istd::IChangeable* defaultValuePtr = nullptr,
43 const QByteArray& proposedObjectId = QByteArray(),
44 const idoc::IDocumentMetaInfo* dataMetaInfoPtr = nullptr,
45 const idoc::IDocumentMetaInfo* collectionItemMetaInfoPtr = nullptr,
46 const imtbase::IOperationContext* operationContextPtr = nullptr) override;
47 virtual bool RemoveElements(const Ids& elementIds, const imtbase::IOperationContext* operationContextPtr = nullptr) override;
48 virtual bool RemoveElementSet(
49 const iprm::IParamsSet* selectionParamsPtr = nullptr,
50 const imtbase::IOperationContext* operationContextPtr = nullptr) override;
51 virtual bool RestoreObjects(
52 const Ids& objectIds,
53 const imtbase::IOperationContext* operationContextPtr = nullptr) override;
54 virtual bool RestoreObjectSet(
55 const iprm::IParamsSet* selectionParamsPtr = nullptr,
56 const imtbase::IOperationContext* operationContextPtr = nullptr) override;
57 virtual const istd::IChangeable* GetObjectPtr(const Id& objectId) const override;
58 virtual bool GetObjectData(const Id& objectId, DataPtr& dataPtr, const iprm::IParamsSet* dataConfigurationPtr = nullptr) const override;
59 virtual bool SetObjectData(const Id& objectId, const istd::IChangeable& object, CompatibilityMode mode = CM_WITHOUT_REFS, const imtbase::IOperationContext* operationContextPtr = nullptr) override;
60 virtual imtbase::IObjectCollectionUniquePtr CreateSubCollection(
61 int offset = 0,
62 int count = -1,
63 const iprm::IParamsSet* selectionParamsPtr = nullptr) const override;
64 virtual imtbase::IObjectCollectionIterator* CreateObjectCollectionIterator(
65 const QByteArray& objectId = QByteArray(),
66 int offset = 0,
67 int count = -1,
68 const iprm::IParamsSet* selectionParamsPtr = nullptr) const override;
69
70 // reimplemented (IObjectCollectionInfo)
71 virtual const iprm::IOptionsList* GetObjectTypesInfo() const override;
72 virtual QByteArray GetObjectTypeId(const Id& objectId) const override;
73 virtual idoc::MetaInfoPtr GetDataMetaInfo(const Id& objectId) const override;
74
75 // reimplemented (ICollectionInfo)
76 virtual int GetElementsCount(
77 const iprm::IParamsSet* selectionParamsPtr = nullptr,
78 ilog::IMessageConsumer* logPtr = nullptr) const override;
79 virtual Ids GetElementIds(
80 int offset = 0,
81 int count = -1,
82 const iprm::IParamsSet* selectionParamsPtr = nullptr,
83 ilog::IMessageConsumer* logPtr = nullptr) const override;
84 virtual bool GetSubsetInfo(
85 imtbase::ICollectionInfo& subsetInfo,
86 int offset = 0,
87 int count = -1,
88 const iprm::IParamsSet* selectionParamsPtr = nullptr,
89 ilog::IMessageConsumer* logPtr = nullptr) const override;
90 virtual QVariant GetElementInfo(const QByteArray& elementId, int infoType, ilog::IMessageConsumer* logPtr = nullptr) const override;
91 virtual idoc::MetaInfoPtr GetElementMetaInfo(const Id& elementId, ilog::IMessageConsumer* logPtr = nullptr) const override;
92 virtual bool SetElementName(const Id& elementId, const QString& name, ilog::IMessageConsumer* logPtr = nullptr) override;
93 virtual bool SetElementDescription(const Id& elementId, const QString& description, ilog::IMessageConsumer* logPtr = nullptr) override;
94 virtual bool SetElementEnabled(const Id& elementId, bool isEnabled = true, ilog::IMessageConsumer* logPtr = nullptr) override;
95
96protected:
97 virtual DataPtr CreateObjectInstance(const QByteArray& typeId) const;
98
99private:
100 bool GetObjectInfo(const QByteArray& objectId, imtclientgql::IGqlObjectCollectionDelegate::ObjectInfo& valueOut) const;
101 bool GetObjectMetaInfo(const QByteArray& objectId, idoc::MetaInfoPtr& valueOut) const;
102
103protected:
104 const IGqlClient* m_gqlClientPtr;
105 const IGqlObjectCollectionDelegate* m_gqlObjectCollectionDelegatePtr;
106
107 typedef QMap<QByteArray, imtbase::IMetaInfoCreator*> MetaInfoCreatorMap;
108 MetaInfoCreatorMap m_metaInfoCreatorMap;
109};
110
111
112} //namespace imtclientgql
113
114