ImagingTools Core SDK
TJsonRepresentationControllerWrap.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 <iqt/ITranslationManager.h>
7
8// ImtCore includes
9#include <imtserverapp/IJsonRepresentationController.h>
10
11
12namespace imtserverapp
13{
14
15
16template<class SdlClass>
17class TJsonRepresentationControllerWrap: virtual public IJsonRepresentationController
18{
19public:
20 virtual RepresentationInfo GetRepresentationInfo() const override;
21 virtual bool GetRepresentationFromDataModel(
22 const istd::IChangeable& dataModel,
23 QJsonObject& representation,
24 const iprm::IParamsSet* paramsPtr = nullptr) const override;
25 virtual bool GetDataModelFromRepresentation(
26 const QJsonObject& representation,
27 istd::IChangeable& dataModel) const override;
28
29protected:
30 virtual bool GetSdlRepresentationFromDataModel(SdlClass& sdlRepresentation, const istd::IChangeable& dataModel, const iprm::IParamsSet* paramsPtr = nullptr) const = 0;
31 virtual bool GetDataModelFromSdlRepresentation(istd::IChangeable& dataModel, const SdlClass& sdlRepresentation) const = 0;
32
33protected:
34 QByteArray m_modelId;
35 QString m_name;
36 QString m_description;
37 iqt::ITranslationManager* m_translationManagerPtr = nullptr;
38};
39
40
41template<class SdlClass>
42IJsonRepresentationController::RepresentationInfo TJsonRepresentationControllerWrap<SdlClass>::GetRepresentationInfo() const
43{
44 RepresentationInfo representationInfo;
45 representationInfo.modelId = m_modelId;
46 representationInfo.name = m_name;
47 representationInfo.description = m_description;
48
49 return representationInfo;
50}
51
52
53template<class SdlClass>
54bool TJsonRepresentationControllerWrap<SdlClass>::GetRepresentationFromDataModel(
55 const istd::IChangeable& dataModel,
56 QJsonObject& representation,
57 const iprm::IParamsSet* paramsPtr) const
58{
59 if (!IsModelSupported(dataModel)){
60 return false;
61 }
62
63 SdlClass sdlClass;
64 if (!GetSdlRepresentationFromDataModel(sdlClass, dataModel, paramsPtr)){
65 return false;
66 }
67
68 return sdlClass.WriteToJsonObject(representation);
69}
70
71
72template<class SdlClass>
73bool TJsonRepresentationControllerWrap<SdlClass>::GetDataModelFromRepresentation(
74 const QJsonObject& representation,
75 istd::IChangeable& dataModel) const
76{
77 if (!IsModelSupported(dataModel)){
78 return false;
79 }
80
81 SdlClass sdlClass;
82 if (!sdlClass.ReadFromJsonObject(representation)){
83 return false;
84 }
85
86 return GetDataModelFromSdlRepresentation(dataModel, sdlClass);
87}
88
89
90} // namespace imtserverapp
91
92