8#include <iprm/CParamsSet.h>
11#include <imtbase/ISearchController.h>
12#include <imtbase/IObjectCollection.h>
13#include <imtbase/IObjectCollectionIterator.h>
14#include <imtbase/IOperationContext.h>
15#include <imtbase/IDocumentChangeGenerator.h>
16#include <imtbase/IOperationContextController.h>
17#include <imtbase/CComplexCollectionFilter.h>
18#include <imtservergql/CPermissibleGqlRequestHandlerComp.h>
19#include <imtgql/IGqlRequestExtractor.h>
20#include <imtbase/IComplexCollectionFilter.h>
21#include <imtbase/CMimeType.h>
22#include <imtcol/ICollectionHeadersProvider.h>
23#include <imtserverapp/CParamSetRepresentationController.h>
24#include <imtserverapp/CComplexCollectionFilterRepresentationController.h>
25#include <imtserverapp/CDocumentFilterRepresentationController.h>
26#include <imtserverapp/CDocumentIdFilterRepresentationController.h>
27#include <imtcol/CDocumentCollectionFilter.h>
28#include <imtcol/CDocumentIdFilter.h>
29#include <imtbase/CComplexCollectionFilter.h>
30#include <imtauth/IUserActionManager.h>
31#include <GeneratedFiles/imtbasesdl/SDL/1.0/CPP/ImtCollection.h>
41class CObjectCollectionControllerAttrCompBase:
42 virtual public imtgql::IGqlRequestExtractor,
43 virtual public imtbase::ISearchController,
44 public sdl::imtbase::ImtCollection::CGraphQlHandlerCompBase
47 typedef sdl::imtbase::ImtCollection::CGraphQlHandlerCompBase BaseClass;
49 I_BEGIN_BASE_COMPONENT(CObjectCollectionControllerAttrCompBase)
50 I_REGISTER_INTERFACE(imtgql::IGqlRequestExtractor)
51 I_REGISTER_INTERFACE(imtbase::ISearchController)
52 I_ASSIGN(m_collectionIdAttrPtr,
"CollectionId",
"Collection-ID",
true,
"");
53 I_ASSIGN(m_collectionNameAttrPtr,
"CollectionName",
"Collection Name",
true,
"");
57 I_ATTR(QByteArray, m_collectionIdAttrPtr);
58 I_ATTR(QString, m_collectionNameAttrPtr);
62class CObjectCollectionControllerCompBase:
public CObjectCollectionControllerAttrCompBase
65 typedef CObjectCollectionControllerAttrCompBase BaseClass;
67 I_BEGIN_COMPONENT(CObjectCollectionControllerCompBase);
68 I_ASSIGN_MULTI_0(m_replaceableFieldsAttrPtr,
"ReplaceableFilterFields",
"List of filter fields to be replaced",
false);
69 I_ASSIGN_MULTI_0(m_replacementFieldsAttrPtr,
"ReplacementFilterFields",
"List of filter fields to replace with",
false);
70 I_ASSIGN(m_objectCollectionCompPtr,
"ObjectCollection",
"Object collection",
true,
"ObjectCollection");
71 I_ASSIGN(m_userActionManagerCompPtr,
"UserActionManager",
"User action manager",
false,
"UserActionManager");
72 I_ASSIGN(m_headersProviderCompPtr,
"HeadersProvider",
"Collection headers provider",
false,
"HeadersProvider");
73 I_ASSIGN(m_operationContextControllerCompPtr,
"OperationContextController",
"Operation context controller",
false,
"OperationContextController");
74 I_ASSIGN_MULTI_0(m_objectTypeIdAttrPtr,
"ObjectTypeIds",
"Object type IDs",
false);
75 I_ASSIGN_MULTI_0(m_objectIconPathsAttrPtr,
"ObjectIconPaths",
"List of item paths related to object type-IDs",
false);
76 I_ASSIGN_MULTI_0(m_objectFactCompPtr,
"CollectionObjectFactory",
"Collection object factories",
false);
77 I_ASSIGN_MULTI_0(m_mimeTypeAttrPtr,
"MimeType",
"Mime type for the import/export object",
false);
78 I_ASSIGN_MULTI_0(m_importExportObjectFactCompPtr,
"ImportExportObjectFactory",
"Object factory for the import/export object",
false);
79 I_ASSIGN_MULTI_0(m_filePersistenceCompPtr,
"FilePersistence",
"File persistence for the import/export object",
false);
80 I_ASSIGN(m_versionInfoCompPtr,
"VersionInfo",
"Version info",
false,
"VersionInfo");
92 virtual QMap<int, QByteArray> GetSupportedCommandIds()
const;
95 virtual QByteArray GetControllerId()
const override;
96 virtual QString GetControllerName()
const override;
97 virtual const imtbase::ISearchResults* Search(
const QString& text)
const override;
100 virtual sdl::imtbase::ImtCollection::CDuplicateElementsPayload OnDuplicateElements(
101 const sdl::imtbase::ImtCollection::CDuplicateElementsGqlRequest& duplicateElementsRequest,
102 const ::imtgql::CGqlRequest& gqlRequest,
103 QString& errorMessage)
const override;
104 virtual sdl::imtbase::ImtCollection::CVisualStatus OnGetObjectVisualStatus(
105 const sdl::imtbase::ImtCollection::CGetObjectVisualStatusGqlRequest& getObjectVisualStatusRequest,
106 const ::imtgql::CGqlRequest& gqlRequest,
107 QString& errorMessage)
const override;
108 virtual sdl::imtbase::ImtCollection::CRemoveElementsPayload OnRemoveElements(
109 const sdl::imtbase::ImtCollection::CRemoveElementsGqlRequest& removeElementsRequest,
110 const ::imtgql::CGqlRequest& gqlRequest,
111 QString& errorMessage)
const override;
112 virtual sdl::imtbase::ImtCollection::CRemoveElementSetPayload OnRemoveElementSet(
113 const sdl::imtbase::ImtCollection::CRemoveElementSetGqlRequest& removeElementSetRequest,
114 const ::imtgql::CGqlRequest& gqlRequest,
115 QString& errorMessage)
const override;
116 virtual sdl::imtbase::ImtCollection::CRestoreObjectsPayload OnRestoreObjects(
117 const sdl::imtbase::ImtCollection::CRestoreObjectsGqlRequest& restoreObjectsRequest,
118 const ::imtgql::CGqlRequest& gqlRequest,
119 QString& errorMessage)
const override;
120 virtual sdl::imtbase::ImtCollection::CRestoreObjectSetPayload OnRestoreObjectSet(
121 const sdl::imtbase::ImtCollection::CRestoreObjectSetGqlRequest& restoreObjectSetRequest,
122 const ::imtgql::CGqlRequest& gqlRequest,
123 QString& errorMessage)
const override;
124 virtual sdl::imtbase::ImtCollection::CSetObjectNamePayload OnSetObjectName(
125 const sdl::imtbase::ImtCollection::CSetObjectNameGqlRequest& setObjectNameRequest,
126 const ::imtgql::CGqlRequest& gqlRequest,
127 QString& errorMessage)
const override;
128 virtual sdl::imtbase::ImtCollection::CSetObjectDescriptionPayload OnSetObjectDescription(
129 const sdl::imtbase::ImtCollection::CSetObjectDescriptionGqlRequest& setObjectDescriptionRequest,
130 const ::imtgql::CGqlRequest& gqlRequest,
131 QString& errorMessage)
const override;
132 virtual sdl::imtbase::ImtCollection::CExportObjectPayload OnExportObject(
133 const sdl::imtbase::ImtCollection::CExportObjectGqlRequest& exportObjectRequest,
134 const ::imtgql::CGqlRequest& gqlRequest,
135 QString& errorMessage)
const override;
136 virtual sdl::imtbase::ImtCollection::CImportObjectPayload OnImportObject(
137 const sdl::imtbase::ImtCollection::CImportObjectGqlRequest& importObjectRequest,
138 const ::imtgql::CGqlRequest& gqlRequest,
139 QString& errorMessage)
const override;
140 virtual sdl::imtbase::ImtCollection::CGetObjectTypeIdPayload OnGetObjectTypeId(
141 const sdl::imtbase::ImtCollection::CGetObjectTypeIdGqlRequest& getObjectTypeIdRequest,
142 const ::imtgql::CGqlRequest& gqlRequest,
143 QString& errorMessage)
const override;
144 virtual sdl::imtbase::ImtCollection::CGetCollectionHeadersPayload OnGetCollectionHeaders(
145 const sdl::imtbase::ImtCollection::CGetCollectionHeadersGqlRequest& getCollectionHeadersRequest,
146 const ::imtgql::CGqlRequest& gqlRequest,
147 QString& errorMessage)
const override;
148 virtual sdl::imtbase::ImtCollection::CGetElementsCountPayload OnGetElementsCount(
149 const sdl::imtbase::ImtCollection::CGetElementsCountGqlRequest& getElementsCountRequest,
150 const ::imtgql::CGqlRequest& gqlRequest,
151 QString& errorMessage)
const override;
152 virtual sdl::imtbase::ImtCollection::CGetElementIdsPayload OnGetElementIds(
153 const sdl::imtbase::ImtCollection::CGetElementIdsGqlRequest& getElementIdsRequest,
154 const ::imtgql::CGqlRequest& gqlRequest,
155 QString& errorMessage)
const override;
156 virtual sdl::imtbase::ImtCollection::CInsertNewObjectPayload OnInsertNewObject(
157 const sdl::imtbase::ImtCollection::CInsertNewObjectGqlRequest& insertNewObjectRequest,
158 const ::imtgql::CGqlRequest& gqlRequest,
159 QString& errorMessage)
const override;
160 virtual sdl::imtbase::ImtCollection::CSetObjectDataPayload OnSetObjectData(
161 const sdl::imtbase::ImtCollection::CSetObjectDataGqlRequest& setObjectDataRequest,
162 const ::imtgql::CGqlRequest& gqlRequest,
163 QString& errorMessage)
const override;
164 virtual sdl::imtbase::ImtCollection::CGetObjectDataPayload OnGetObjectData(
165 const sdl::imtbase::ImtCollection::CGetObjectDataGqlRequest& getObjectDataRequest,
166 const ::imtgql::CGqlRequest& gqlRequest,
167 QString& errorMessage)
const override;
168 virtual sdl::imtbase::ImtCollection::CGetDataMetaInfoPayload OnGetDataMetaInfo(
169 const sdl::imtbase::ImtCollection::CGetDataMetaInfoGqlRequest& getDataMetaInfoRequest,
170 const ::imtgql::CGqlRequest& gqlRequest,
171 QString& errorMessage)
const override;
172 virtual sdl::imtbase::ImtCollection::CGetElementInfoPayload OnGetElementInfo(
173 const sdl::imtbase::ImtCollection::CGetElementInfoGqlRequest& getElementInfoRequest,
174 const ::imtgql::CGqlRequest& gqlRequest,
175 QString& errorMessage)
const override;
176 virtual sdl::imtbase::ImtCollection::CGetElementMetaInfoPayload OnGetElementMetaInfo(
177 const sdl::imtbase::ImtCollection::CGetElementMetaInfoGqlRequest& getElementMetaInfoRequest,
178 const ::imtgql::CGqlRequest& gqlRequest,
179 QString& errorMessage)
const override;
180 virtual sdl::imtbase::ImtCollection::CCreateSubCollectionPayload OnCreateSubCollection(
181 const sdl::imtbase::ImtCollection::CCreateSubCollectionGqlRequest& createSubCollectionRequest,
182 const ::imtgql::CGqlRequest& gqlRequest,
183 QString& errorMessage)
const override;
186 virtual QJsonObject CreateInternalResponse(
const imtgql::CGqlRequest& gqlRequest, QString& errorMessage)
const override;
187 virtual bool IsRequestSupported(
const imtgql::CGqlRequest& gqlRequest)
const override;
190 virtual istd::IChangeableUniquePtr ExtractObject(
const imtgql::CGqlRequest& gqlRequest, QByteArray& newObjectId, QString& errorMessage)
const override;
196 virtual bool GetOperationFromRequest(
const imtgql::CGqlRequest& gqlRequest, imtgql::CGqlParamObject& gqlObject, QString& errorMessage,
int& operationType)
const;
197 virtual QByteArray GetObjectIdFromInputParams(
const imtgql::CGqlParamObject &inputParams)
const;
198 virtual QByteArray GetObjectIdFromRequest(
const imtgql::CGqlRequest& gqlRequest)
const;
199 virtual QJsonObject GetObject(
const imtgql::CGqlRequest& gqlRequest, QString& errorMessage)
const;
200 virtual QJsonObject InsertObject(
const imtgql::CGqlRequest& gqlRequest, QString& errorMessage)
const;
201 virtual QJsonObject UpdateObject(
const imtgql::CGqlRequest& gqlRequest, QString& errorMessage)
const;
202 virtual QJsonObject RenameObject(
const imtgql::CGqlRequest& gqlRequest, QString& errorMessage)
const;
203 virtual QJsonObject SetObjectDescription(
const imtgql::CGqlRequest& gqlRequest, QString& errorMessage)
const;
204 virtual QJsonObject ListObjects(
const imtgql::CGqlRequest& gqlRequest, QString& errorMessage)
const;
205 virtual QJsonObject GetElementsCount(
const imtgql::CGqlRequest& gqlRequest, QString& errorMessage)
const;
206 virtual QJsonObject DeleteObject(
const imtgql::CGqlRequest& gqlRequest, QString& errorMessage)
const;
208 virtual QJsonObject GetMetaInfo(
const imtgql::CGqlRequest& gqlRequest, QString& errorMessage)
const;
209 virtual QJsonObject GetInfo(
const imtgql::CGqlRequest& gqlRequest, QString& errorMessage)
const;
210 virtual QJsonObject GetDataMetaInfo(
const imtgql::CGqlRequest& gqlRequest, QString& errorMessage)
const;
211 virtual QJsonObject GetObjectTypeId(
const imtgql::CGqlRequest& gqlRequest, QString& errorMessage)
const;
212 virtual QJsonObject ImportObject(
const imtgql::CGqlRequest& gqlRequest, QString& errorMessage)
const;
213 virtual QJsonObject ExportObject(
const imtgql::CGqlRequest& gqlRequest, QString& errorMessage)
const;
215 virtual bool ConvertObject(
const istd::IChangeable& source, istd::IChangeable& target)
const;
216 virtual int GetObjectTypeIdIndex(
const QByteArray& typeId)
const;
217 virtual int GetMimeTypeIndex(
const QString& mimeType)
const;
218 virtual QString GetExtensionFromMimeType(
const imtbase::CMimeType& mimeType)
const;
219 virtual QString GetExportFileName(
const QByteArray& objectId)
const;
220 virtual bool UpdateObjectFromRequest(
const imtgql::CGqlRequest& gqlRequest, istd::IChangeable&
object, QString& errorMessage)
const;
221 virtual QVariant GetInputArgumentFromRequest(
const imtgql::CGqlRequest& gqlRequest,
const QString& argumentKey)
const;
222 virtual imtbase::ICollectionInfo::Ids ExtractObjectIdsForRemoval(
const imtgql::CGqlRequest& gqlRequest, QString& errorMessage)
const;
224 using GqlItemSetupContext = std::shared_ptr<const void>;
225 virtual GqlItemSetupContext CreateGqlItemSetupContext(
const imtgql::CGqlRequest& gqlRequest, QString& errorMessage)
const;
226 virtual bool SetupGqlItemWithContext(
227 const imtgql::CGqlRequest& gqlRequest,
228 const GqlItemSetupContext& setupContext,
229 QJsonObject& itemObj,
231 QString& errorMessage)
const;
236 virtual bool SetupGqlItem(
237 const imtgql::CGqlRequest& gqlRequest,
238 QJsonObject& itemObj,
239 const QByteArray& collectionId,
240 QString& errorMessage)
const;
242 virtual bool SetupGqlItem(
243 const imtgql::CGqlRequest& gqlRequest,
244 QJsonObject& itemObj,
246 QString& errorMessage)
const;
251 virtual QByteArrayList GetInformationIds(
const imtgql::CGqlRequest& gqlRequest,
const QByteArray& objectId)
const;
256 virtual QVariant GetObjectInformation(
const QByteArray& informationId,
const QByteArray& objectId)
const;
261 virtual QByteArray GetObjectTypeIdFromRequest(
const imtgql::CGqlRequest& gqlRequest)
const;
266 virtual bool CreateRepresentationFromObject(
267 const istd::IChangeable& data,
268 const QByteArray& objectTypeId,
269 const imtgql::CGqlRequest& gqlRequest,
270 QJsonObject& dataObj,
271 QString& errorMessage)
const;
276 [[deprecated]]
virtual istd::IChangeableUniquePtr CreateObjectFromInputParams(
const QList<imtgql::CGqlParamObject>& inputParams, QByteArray &objectId, QString& errorMessage)
const;
281 virtual istd::IChangeableUniquePtr CreateObjectFromRequest(
const imtgql::CGqlRequest& gqlRequest, QByteArray& newObjectId, QString& errorMessage)
const;
286 virtual void PrepareFilters(
const imtgql::CGqlRequest& gqlRequest,
const imtgql::CGqlParamObject& viewParamsGql, iprm::CParamsSet& filterParams)
const;
291 virtual void SetAdditionalFilters(
const imtgql::CGqlRequest& gqlRequest,
const imtgql::CGqlParamObject& viewParamsGql, iprm::CParamsSet* filterParams)
const;
295 virtual istd::IChangeableUniquePtr CreateObject(
const QByteArray& typeId)
const;
296 virtual QString GetObjectNameFromRequest(
const imtgql::CGqlRequest& gqlRequest)
const;
297 virtual bool CreateCollectionFilterFromViewParamsSdl(
298 const sdl::imtbase::ImtCollection::CCollectionViewParams::V1_0& viewParams,
301 iprm::CParamsSet& filterParams)
const;
302 virtual bool CreateCollectionFilterFromSdl(
303 sdl::imtbase::ComplexCollectionFilter::CComplexCollectionFilter::V1_0& collectionFilter,
304 iprm::CParamsSet& filterParams)
const;
305 virtual bool CreateDocumentFilterFromSdl(
306 sdl::imtbase::DocumentCollectionFilter::CDocumentCollectionFilter::V1_0& documentFilter,
307 iprm::CParamsSet& filterParams)
const;
308 virtual QString ConvertMetaInfoToString(
int infoType,
const QVariant& metaInfoValue)
const;
309 bool GetParamsSetFromRepresentation(sdl::imtbase::ImtBaseTypes::CParamsSet::V1_0& representation, iprm::IParamsSet& paramsSet)
const;
310 bool RegisterFilterToSelectionParams(
311 iser::ISerializable& filterParam,
312 const imtserverapp::IJsonRepresentationController& representationController);
315 virtual bool OnBeforeRemoveElements(
const QByteArrayList& elementIds,
const imtgql::CGqlRequest& gqlRequest, QString& errorMessage)
const;
316 virtual void OnAfterRemoveElements(
const QByteArrayList& elementIds,
const imtgql::CGqlRequest& gqlRequest)
const;
318 virtual bool OnBeforeSetObjectName(
const QByteArray& objectId, QString& newName,
const imtgql::CGqlRequest& gqlRequest, QString& errorMessage)
const;
319 virtual void OnAfterSetObjectName(
const QByteArray& objectId,
const QString& oldName,
const QString& newName,
const imtgql::CGqlRequest& gqlRequest)
const;
321 virtual bool OnBeforeSetObjectDescription(
322 const QByteArray& objectId,
323 QString& description,
324 const imtgql::CGqlRequest& gqlRequest,
325 QString& errorMessage)
const;
326 virtual void OnAfterSetObjectDescription(
327 const QByteArray& objectId,
328 const QString& description,
329 const imtgql::CGqlRequest& gqlRequest)
const;
331 QByteArray ExtractObjectIdFromGetObjectTypeIdGqlRequest(
const imtgql::CGqlRequest& gqlRequest)
const;
332 QByteArray ExtractObjectIdFromGetObjectDataGqlRequest(
const imtgql::CGqlRequest& gqlRequest)
const;
335 virtual void OnComponentCreated()
override;
338 virtual bool DoUpdateObjectFromRequest(
const imtgql::CGqlRequest& gqlRequest, istd::IChangeable&
object, QByteArray& newObjectId, QString& errorMessage)
const;
339 bool SerializeObject(istd::IChangeable&
object, QByteArray& objectData)
const;
340 bool DeSerializeObject(istd::IChangeable&
object,
const QByteArray& objectData)
const;
341 bool CreateUserActionLog(
342 const QByteArray& objectId,
343 const QByteArray& objectTypeId,
344 const QByteArray& actionTypeId,
345 const imtgql::CGqlRequest& gqlRequest)
const;
348 QMap<QByteArray, QByteArray> m_fieldReplacementMap;
351 iprm::CParamsSet m_selectionParams;
352 imtcol::CDocumentCollectionFilter m_documentCollectionFilter;
353 imtcol::CDocumentIdFilter m_documentIdFilter;
355 imtserverapp::CParamSetRepresentationController m_paramSetRepresentationController;
356 imtserverapp::CDocumentFilterRepresentationController m_documentFilterRepresentationController;
357 imtserverapp::CComplexCollectionFilterRepresentationController m_complexCollectionFilterRepresentationController;
358 imtserverapp::CDocumentIdFilterRepresentationController m_documentIdFilterRepresentationController;
361 I_MULTIATTR(QByteArray, m_replaceableFieldsAttrPtr);
362 I_MULTIATTR(QByteArray, m_replacementFieldsAttrPtr);
364 I_REF(imtcol::ICollectionHeadersProvider, m_headersProviderCompPtr);
365 I_REF(imtbase::IOperationContextController, m_operationContextControllerCompPtr);
366 I_REF(imtauth::IUserActionManager, m_userActionManagerCompPtr);
368 I_MULTIATTR(QByteArray, m_objectTypeIdAttrPtr);
369 I_MULTIATTR(QByteArray, m_objectIconPathsAttrPtr);
370 I_MULTIFACT(istd::IChangeable, m_objectFactCompPtr);
372 I_MULTIATTR(QString, m_mimeTypeAttrPtr);
373 I_MULTIFACT(istd::IChangeable, m_importExportObjectFactCompPtr);
374 I_MULTIREF(ifile::IFilePersistence, m_filePersistenceCompPtr);
375 I_REF(iser::IVersionInfo, m_versionInfoCompPtr);