ImagingTools Core SDK
CGqlCollectionImportControllerComp.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 <ifile/ITempFileManager.h>
7
8// ImtCore includes
9#include <imtservergql/ICollectionImportController.h>
10#include <imthype/IJobQueueManager.h>
11#include <GeneratedFiles/imtbasesdl/SDL/1.0/CPP/CollectionImport.h>
12
13
14namespace imtservergql
15{
16
17
18namespace collectionImport = sdl::imtbase::CollectionImport;
19
20
21class CGqlCollectionImportControllerComp: public collectionImport::CGraphQlHandlerCompBase
22{
23 Q_DECLARE_TR_FUNCTIONS(CGqlCollectionImportControllerComp)
24public:
25 typedef collectionImport::CGraphQlHandlerCompBase BaseClass;
26
27 I_BEGIN_COMPONENT(CGqlCollectionImportControllerComp);
28 I_ASSIGN(m_collectionImportControllerCompPtr, "CollectionImportController", "Collection import controller", false, "CollectionImportController");
29 I_END_COMPONENT;
30
31 template<typename GqlRequest>
32 static bool FillSessionInfo(
33 const GqlRequest& request,
34 imtservergql::ICollectionImportController::SessionInfo& sessionInfo,
35 QString& errorMessage);
36
37 template<typename GqlRequest>
38 static QByteArray GetCancelSessionId(const GqlRequest& request);
39
40protected:
41 // reimplemented (sdl::imtbase::CollectionImport::CGraphQlHandlerCompBase)
42 virtual collectionImport::CSessionStatus OnBeginCollectionImportSession(
43 const collectionImport::CBeginCollectionImportSessionGqlRequest& request,
44 const ::imtgql::CGqlRequest& gqlRequest,
45 QString& errorMessage) const override;
46 virtual collectionImport::CSessionStatus OnCancelCollectionImportSession(
47 const collectionImport::CCancelCollectionImportSessionGqlRequest& request,
48 const ::imtgql::CGqlRequest& gqlRequest,
49 QString& errorMessage) const override;
50
51private:
52 I_REF(imtservergql::ICollectionImportController, m_collectionImportControllerCompPtr);
53};
54
55
56template<typename GqlRequest>
57bool CGqlCollectionImportControllerComp::FillSessionInfo(
58 const GqlRequest& request,
59 imtservergql::ICollectionImportController::SessionInfo& sessionInfo,
60 QString& errorMessage)
61{
62 auto sdlImportParams = request.GetRequestedArguments().input;
63 if (sdlImportParams.Version_1_0){
64 auto sdlImportParamsV1_0 = *sdlImportParams.Version_1_0;
65
66 if (sdlImportParamsV1_0.sessionId && sdlImportParamsV1_0.collectionId && sdlImportParamsV1_0.fileList && sdlImportParamsV1_0.fileList->count() > 0){
67 sessionInfo.sessionId = *sdlImportParamsV1_0.sessionId;
68 sessionInfo.collectionId = *sdlImportParamsV1_0.collectionId;
69
70 for (const auto& fileInfo : *sdlImportParamsV1_0.fileList){
71 if (!fileInfo.HasValue()){
72 continue;
73 }
74 if (fileInfo->fileId && fileInfo->fileName && fileInfo->fileSize && fileInfo->objectTypeId){
75 sessionInfo.files.emplace_back();
76 sessionInfo.files.back().id = *fileInfo->fileId;
77 sessionInfo.files.back().name = *fileInfo->fileName;
78 sessionInfo.files.back().size = *fileInfo->fileSize;
79 sessionInfo.files.back().objectTypeId = *fileInfo->objectTypeId;
80 }
81 else{
82 errorMessage = tr("Invalid file info in the request");
83
84 return false;
85 }
86 }
87
88 return true;
89 }
90 else{
91 errorMessage = tr("Invalid import request");
92 }
93 }
94 else{
95 errorMessage = tr("Invalid import request");
96 }
97
98 return false;
99}
100
101
102template<typename GqlRequest>
103QByteArray CGqlCollectionImportControllerComp::GetCancelSessionId(
104 const GqlRequest& request)
105{
106 auto sdlSessionId = request.GetRequestedArguments().input;
107 if (sdlSessionId.Version_1_0 && sdlSessionId.Version_1_0->sessionId){
108 QByteArray sessionId = *sdlSessionId.Version_1_0->sessionId;
109
110 return sessionId;
111 }
112
113 return QByteArray();
114}
115
116
117} // namespace imtservergql
118
119