ImagingTools Core SDK
CLegacyObjectCollectionControllerCompBase.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/QJsonObject>
7#include <QtCore/QJsonArray>
8
9// ACF includes
10#include <iprm/CParamsSet.h>
11
12// ImtCore includes
13#include <imtbase/IObjectCollection.h>
14#include <imtbase/IObjectCollectionIterator.h>
15#include <imtbase/IOperationContext.h>
16#include <imtbase/IDocumentChangeGenerator.h>
17#include <imtbase/IOperationContextController.h>
18#include <imtservergql/CPermissibleGqlRequestHandlerComp.h>
19#include <imtserverapp/CTimeFilterParamRepresentationController.h>
20#include <imtgql/IGqlRequestExtractor.h>
21#include <imtbase/IComplexCollectionFilter.h>
22
23
24#undef GetObject
25
26
27namespace imtservergql
28{
29
30
31class CLegacyObjectCollectionControllerCompBase:
32 public imtgql::IGqlRequestExtractor,
33 public imtservergql::CPermissibleGqlRequestHandlerComp
34{
35public:
36 typedef imtservergql::CPermissibleGqlRequestHandlerComp BaseClass;
37
38 I_BEGIN_BASE_COMPONENT(CLegacyObjectCollectionControllerCompBase);
39 I_REGISTER_INTERFACE(imtgql::IGqlRequestExtractor)
40 I_ASSIGN_MULTI_0(m_replaceableFieldsAttrPtr, "ReplaceableFilterFields", "List of filter fields to be replaced", false);
41 I_ASSIGN_MULTI_0(m_replacementFieldsAttrPtr, "ReplacementFilterFields", "List of filter fields to replace with", false);
42 I_ASSIGN(m_objectCollectionCompPtr, "ObjectCollection", "Object collection", true, "ObjectCollection");
43 I_ASSIGN(m_documentChangeGeneratorCompPtr, "DocumentChangeGenerator", "Change generator for the collection object", false, "DocumentChangeGenerator");
44 I_ASSIGN(m_headersProviderCompPtr, "HeadersProvider", "Headers provider", false, "HeadersProvider");
45 I_ASSIGN(m_translationManagerCompPtr, "TranslationManager", "Translation manager", false, "TranslationManager");
46 I_ASSIGN(m_operationContextControllerCompPtr, "OperationContextController", "Operation context controller", false, "OperationContextController");
47 I_ASSIGN_MULTI_0(m_objectTypeIdAttrPtr, "ObjectTypeIds", "Object type IDs", false);
48 I_ASSIGN_MULTI_0(m_objectFactCompPtr, "CollectionObjectFactory", "Collection object factories", false);
49 I_ASSIGN_MULTI_0(m_mimeTypeAttrPtr, "MimeType", "Mime type for the import/export object", false);
50 I_ASSIGN_MULTI_0(m_importExportObjectFactCompPtr, "ImportExportObjectFactory", "Object factory for the import/export object", false);
51 I_ASSIGN_MULTI_0(m_filePersistenceCompPtr, "FilePersistence", "File persistence for the import/export object", false);
52 I_END_COMPONENT;
53
54 enum OperationType
55 {
56 OT_UNKNOWN,
57 OT_NEW,
58 OT_GET,
59 OT_UPDATE,
60 OT_UPDATE_COLLECTION,
61 OT_DELETE,
62 OT_RENAME,
63 OT_SET_DESCRIPTION,
64 OT_LIST,
65 OT_HEADERS,
66 OT_INFO,
67 OT_METAINFO,
68 OT_DATAMETAINFO,
69 OT_ELEMENTS_COUNT,
70 OT_ELEMENT_IDS,
71 OT_ELEMENT_HISTORY,
72 OT_IMPORT,
73 OT_EXPORT,
74 OT_USER_OPERATION = 1000
75 };
76
77 // reimplemented (imtservergql::CGqlRequestHandlerCompBase)
78 virtual QJsonObject CreateInternalResponse(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const override;
79
80 // reimplemented (imtgql::IGqlRequestExtractor)
81 virtual istd::IChangeableUniquePtr ExtractObject(const imtgql::CGqlRequest& gqlRequest, QByteArray& newObjectId, QString& errorMessage) const override;
82
83protected:
84 void ReplaceComplexFilterFields(imtbase::IComplexCollectionFilter& filter) const;
85
86 virtual bool GetOperationFromRequest(const imtgql::CGqlRequest& gqlRequest, imtgql::CGqlParamObject& gqlObject, QString& errorMessage, int& operationType) const;
87 virtual QByteArray GetObjectIdFromInputParams(const imtgql::CGqlParamObject &inputParams) const;
88 virtual QByteArray GetObjectIdFromRequest(const imtgql::CGqlRequest& gqlRequest) const;
89 virtual QJsonObject GetObject(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const;
90 virtual QJsonObject InsertObject(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const;
91 virtual QJsonObject UpdateObject(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const;
92 virtual QJsonObject UpdateCollection(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const;
93 virtual QJsonObject RenameObject(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const;
94 virtual QJsonObject SetObjectDescription(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const;
95 virtual QJsonObject ListObjects(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const;
96 virtual QJsonObject GetElementsCount(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const;
97 virtual QJsonObject GetElementIds(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const;
98 virtual QJsonObject DeleteObject(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const;
99 virtual QJsonObject GetHeaders(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const;
100 virtual QJsonObject GetTreeItemModel(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const;
101 virtual QJsonObject GetDependencies(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const;
103 virtual QJsonObject GetMetaInfo(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const;
104 virtual QJsonObject GetInfo(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const;
105 virtual QJsonObject GetDataMetaInfo(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const;
106 virtual QJsonObject GetObjectHistory(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const;
107 virtual QJsonObject ImportObject(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const;
108 virtual QJsonObject ExportObject(const imtgql::CGqlRequest& gqlRequest, QString& errorMessage) const;
109
110 virtual bool ConvertObject(const istd::IChangeable& source, istd::IChangeable& target) const;
111 virtual int GetObjectTypeIdIndex(const QByteArray& typeId) const;
112 virtual int GetMimeTypeIndex(const QString& mimeType) const;
113
117 virtual bool SetupGqlItem(
118 const imtgql::CGqlRequest& gqlRequest,
119 QJsonObject& itemObj,
120 const QByteArray& collectionId,
121 QString& errorMessage) const;
122
123 virtual bool SetupGqlItem(
124 const imtgql::CGqlRequest& gqlRequest,
125 QJsonObject& itemObj,
126 const imtbase::IObjectCollectionIterator* objectCollectionIterator,
127 QString& errorMessage) const;
128
132 virtual QByteArrayList GetInformationIds(const imtgql::CGqlRequest& gqlRequest, const QByteArray& objectId) const;
133
137 virtual QVariant GetObjectInformation(const QByteArray& informationId, const QByteArray& objectId) const;
138
142 QByteArray GetObjectTypeIdFromRequest(const imtgql::CGqlRequest& gqlRequest) const;
143
147 virtual bool CreateRepresentationFromObject(
148 const istd::IChangeable& data,
149 const QByteArray& objectTypeId,
150 const imtgql::CGqlRequest& gqlRequest,
151 QJsonObject& dataObj,
152 QString& errorMessage) const;
153
157 [[deprecated]] virtual istd::IChangeableUniquePtr CreateObjectFromInputParams(const QList<imtgql::CGqlParamObject>& inputParams, QByteArray &objectId, QString &name, QString &description, QString& errorMessage) const;
158
162 virtual istd::IChangeableUniquePtr CreateObjectFromRequest(const imtgql::CGqlRequest& gqlRequest, QByteArray& newObjectId, QString& name, QString& description, QString& errorMessage) const;
163
167 virtual void PrepareFilters(const imtgql::CGqlRequest& gqlRequest, const imtgql::CGqlParamObject& viewParamsGql, iprm::CParamsSet& filterParams) const;
168
172 virtual void SetAdditionalFilters(const imtgql::CGqlRequest& gqlRequest,const imtgql::CGqlParamObject& viewParamsGql, iprm::CParamsSet* filterParams) const;
173
177 virtual void SetObjectFilter(const imtgql::CGqlRequest& gqlRequest, const imtbase::CTreeItemModel& objectFilterModel, iprm::CParamsSet& filterParams) const;
178
179 // reimplemented (icomp::CComponentBase)
180 virtual void OnComponentCreated() override;
181
182 virtual istd::IChangeableUniquePtr CreateObject(const QByteArray& typeId);
183
184protected:
185 QMap<QByteArray, QByteArray> m_fieldReplacementMap;
186
187protected:
188 I_MULTIATTR(QByteArray, m_replaceableFieldsAttrPtr);
189 I_MULTIATTR(QByteArray, m_replacementFieldsAttrPtr);
190 I_REF(imtbase::IDocumentChangeGenerator, m_documentChangeGeneratorCompPtr);
191 I_REF(imtbase::IObjectCollection, m_objectCollectionCompPtr);
192 I_REF(imtgql::IGqlRequestHandler, m_headersProviderCompPtr);
193 I_REF(imtbase::IOperationContextController, m_operationContextControllerCompPtr);
194
195 I_MULTIATTR(QByteArray, m_objectTypeIdAttrPtr);
196 I_MULTIFACT(istd::IChangeable, m_objectFactCompPtr);
197
198 I_MULTIATTR(QString, m_mimeTypeAttrPtr);
199 I_MULTIFACT(istd::IChangeable, m_importExportObjectFactCompPtr);
200 I_MULTIREF(ifile::IFilePersistence, m_filePersistenceCompPtr);
201
202 imtserverapp::CTimeFilterParamRepresentationController m_timeFilterParamRepresentationController;
203};
204
205
206} // namespace imtservergql
207
208