ImagingTools Core SDK
imtcol.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/QList>
7
8// ImtCore includes
9#include <imtbase/IObjectCollectionIterator.h>
10
11
16namespace imtcol
17{
18
19class CCollectionRepresentationConverter
20{
21
22public:
24 [[nodiscard]] static QDateTime GetLastModiffcationDate(const imtbase::IObjectCollectionIterator& objectCollectionIterator);
25
27 [[nodiscard]] static QDateTime GetCreationDate(const imtbase::IObjectCollectionIterator& objectCollectionIterator);
28
29 template<typename RequestInfo, typename Representation>
30 static bool FillId(
31 const imtbase::IObjectCollectionIterator& objectCollectionIterator,
32 const RequestInfo& requestInfo,
33 Representation& representationObject,
34 QString& errorMessage);
35
36 template<typename RequestInfo, typename Representation>
37 static bool FillTypeId(
38 const imtbase::IObjectCollectionIterator& objectCollectionIterator,
39 const RequestInfo& requestInfo,
40 Representation& representationObject,
41 QString& errorMessage);
42
43 template<typename RequestInfo, typename Representation>
44 static bool FillName(
45 const imtbase::IObjectCollectionIterator& objectCollectionIterator,
46 const RequestInfo& requestInfo,
47 Representation& representationObject,
48 QString& errorMessage);
49
50 template<typename RequestInfo, typename Representation>
51 static bool FillAddedTime(
52 const imtbase::IObjectCollectionIterator& objectCollectionIterator,
53 const RequestInfo& requestInfo,
54 Representation& representationObject,
55 QString& errorMessage);
56
57 template<typename RequestInfo, typename Representation>
58 static bool FillLastModifiedTime(
59 const imtbase::IObjectCollectionIterator& objectCollectionIterator,
60 const RequestInfo& requestInfo,
61 Representation& representationObject,
62 QString& errorMessage);
63
64 template<typename Interface>
65 static bool GetDocument(const Interface* document, const istd::IChangeable& data, QString& errorMessage);
66
67 template<typename Interface>
68 static bool CheckArgumentsId(const Interface& arguments, QString& errorMessage);
69};
70
71
72// inline methods
73
74inline QDateTime CCollectionRepresentationConverter::GetLastModiffcationDate(const imtbase::IObjectCollectionIterator& objectCollectionIterator)
75{
76 QDateTime retVal = objectCollectionIterator.GetElementInfo(QByteArrayLiteral("TimeStamp")).toDateTime();
77 if (retVal.isValid()) {
79 retVal.setTimeSpec(Qt::UTC);
80 }
81
82 return retVal;
83}
84
85
86inline QDateTime CCollectionRepresentationConverter::GetCreationDate(const imtbase::IObjectCollectionIterator& objectCollectionIterator)
87{
88 QDateTime retVal = objectCollectionIterator.GetElementInfo(QByteArrayLiteral("Added")).toDateTime();
89 if (retVal.isValid()) {
91 retVal.setTimeSpec(Qt::UTC);
92 }
93
94 return retVal;
95}
96
97
98template<typename RequestInfo, typename Representation>
99inline bool CCollectionRepresentationConverter::FillTypeId(
100 const imtbase::IObjectCollectionIterator& objectCollectionIterator,
101 const RequestInfo& requestInfo,
102 Representation& representationObject,
103 QString& /* errorMessage */)
104{
105 if (requestInfo.items.isTypeIdRequested){
106 representationObject.typeId = objectCollectionIterator.GetObjectTypeId();
107 }
108
109 return true;
110}
111
112
113template<typename RequestInfo, typename Representation>
114inline bool CCollectionRepresentationConverter::FillId(
115 const imtbase::IObjectCollectionIterator& objectCollectionIterator,
116 const RequestInfo& requestInfo,
117 Representation& representationObject,
118 QString& /* errorMessage */)
119{
120 if (requestInfo.items.isIdRequested) {
121 representationObject.id = objectCollectionIterator.GetObjectId();
122 }
123
124 return true;
125}
126
127
128template<typename RequestInfo, typename Representation>
129inline bool CCollectionRepresentationConverter::FillName(
130 const imtbase::IObjectCollectionIterator& objectCollectionIterator,
131 const RequestInfo& requestInfo,
132 Representation& representationObject,
133 QString& /* errorMessage */)
134{
135 if (requestInfo.items.isNameRequested) {
136 representationObject.name = objectCollectionIterator.GetElementInfo("Name").toString();
137 }
138
139 return true;
140}
141
142
143template<typename RequestInfo, typename Representation>
144inline bool CCollectionRepresentationConverter::FillAddedTime(
145 const imtbase::IObjectCollectionIterator& objectCollectionIterator,
146 const RequestInfo& requestInfo,
147 Representation& representationObject,
148 QString& /* errorMessage */)
149{
150 if (requestInfo.items.isAddedRequested) {
151 QDateTime addedTime = objectCollectionIterator.GetElementInfo("Added").toDateTime();
152 addedTime.setTimeSpec(Qt::UTC);
153
154 QString added = addedTime.toLocalTime().toString("dd.MM.yyyy hh:mm:ss");
155 representationObject.added = added;
156 }
157
158 return true;
159}
160
161
162template<typename RequestInfo, typename Representation>
163inline bool CCollectionRepresentationConverter::FillLastModifiedTime(
164 const imtbase::IObjectCollectionIterator& objectCollectionIterator,
165 const RequestInfo& requestInfo,
166 Representation& representationObject,
167 QString& /* errorMessage */)
168{
169 if (requestInfo.items.isLastModifiedRequested) {
170 QDateTime lastModifiedTime = objectCollectionIterator.GetElementInfo("TimeStamp").toDateTime();
171 lastModifiedTime.setTimeSpec(Qt::UTC);
172
173 QString lastModified = lastModifiedTime.toLocalTime().toString("dd.MM.yyyy hh:mm:ss");
174 representationObject.lastModified = lastModified;
175 }
176
177 return true;
178}
179
180
181template<typename Interface>
182inline bool CCollectionRepresentationConverter::GetDocument(
183 const Interface* document,
184 const istd::IChangeable& data,
185 QString& errorMessage)
186{
187 document = dynamic_cast<const Interface*>(&data);
188
189 if (document == nullptr) {
190 errorMessage = QObject::tr("Invalid document");
191
192 return false;
193 }
194
195 return true;
196}
197
198
199template<typename Interface>
200inline bool CCollectionRepresentationConverter::CheckArgumentsId(
201 const Interface& arguments,
202 QString& errorMessage)
203{
204 if (!arguments.input.Version_1_0 || !arguments.input.Version_1_0->id) {
205 errorMessage = QObject::tr("Version 1.0 of the GQL request arguments is missing");
206
207 return false;
208 }
209
210 return true;
211}
212
213
214} // namespace imtcol
215
216
virtual QVariant GetElementInfo(int infoType) const =0
virtual QByteArray GetObjectId() const =0
virtual QByteArray GetObjectTypeId() const =0