ImagingTools Core SDK
CStandardJobOutput.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 <imod/TModelWrap.h>
7
8// ImtCore includes
9#include <imtbase/CSimpleReferenceCollection.h>
10
11// Acula includes
12#include <imthype/IJobOutput.h>
13#include <imthype/CProcessingInfo.h>
14#include <imthype/CJobExecutionLog.h>
15
16// ACF includes
17#include <ilog/CMessageContainer.h>
18
19
20namespace imthype
21{
22
23
24class CStandardJobOutput: virtual public IJobOutput
25{
26public:
27 typedef CProcessingInfo BaseClass;
28 typedef imtbase::CSimpleReferenceCollection BaseClass2;
29
33 void SetJobName(const QString& jobName);
34
38 void SetStartTime(const QDateTime& startTime);
39
43 void SetFinishedTime(const QDateTime& finishedTime);
44
48 void SetResultCategory(istd::IInformationProvider::InformationCategory resultCategory);
49
50
51 // reimplemented (IProcessingInfo)
52 ProcessingInfo GetProcessingInfo() const override;
53 const ilog::IMessageContainer& GetProcessingLog() const override;
54
55 // reimplemented (imtbase::IReferenceCollection)
56 virtual ICollectionObjectLinkPtr GetObjectLink(const Id& objectId, const QByteArray& repositoryId = QByteArray()) const override;
57 bool InsertReference(const Id& objectId, const QByteArray& repositoryId = QByteArray()) override;
58 bool RemoveReference(const Id& objectId) override;
59 bool RemoveAllReferences() override;
60
61 // reimplemented (imtbase::IObjectCollectionInfo)
62 virtual const iprm::IOptionsList* GetObjectTypesInfo() const override;
63 virtual QByteArray GetObjectTypeId(const Id& objectId) const override;
64 virtual idoc::MetaInfoPtr GetDataMetaInfo(const Id& objectId) const override;
65
66 // reimplemented (imtbase::ICollectionInfo)
67 virtual int GetElementsCount(
68 const iprm::IParamsSet* selectionParamPtr = nullptr,
69 ilog::IMessageConsumer* logPtr = nullptr) const override;
70 virtual Ids GetElementIds(
71 int offset = 0,
72 int count = -1,
73 const iprm::IParamsSet* selectionParamsPtr = nullptr,
74 ilog::IMessageConsumer* logPtr = nullptr) const override;
75 virtual bool GetSubsetInfo(
76 ICollectionInfo& subsetInfo,
77 int offset = 0,
78 int count = -1,
79 const iprm::IParamsSet* selectionParamsPtr = nullptr,
80 ilog::IMessageConsumer* logPtr = nullptr) const override;
81 virtual QVariant GetElementInfo(const Id& elementId, int infoType, ilog::IMessageConsumer* logPtr = nullptr) const override;
82 virtual idoc::MetaInfoPtr GetElementMetaInfo(const Id& elementId, ilog::IMessageConsumer* logPtr = nullptr) const override;
83 virtual bool SetElementName(const Id& elementId, const QString& name, ilog::IMessageConsumer* logPtr = nullptr) override;
84 virtual bool SetElementDescription(const Id& elementId, const QString& description, ilog::IMessageConsumer* logPtr = nullptr) override;
85 virtual bool SetElementEnabled(const Id& elementId, bool isEnabled = true, ilog::IMessageConsumer* logPtr = nullptr) override;
86
87 // reimplemented (IJobOutput)
88 virtual void SetProcessingReport(
89 const ilog::IMessageContainer& processingLog,
90 const QDateTime& startTime,
91 const QDateTime& finishTime) override;
92 virtual ProcessingOutputType GetOutputType(const QByteArray & outputObjectId) const override;
93 virtual void SetOutputType(const QByteArray & outputObjectId, ProcessingOutputType outputType) override;
94 virtual const IJobExecutionLog* GetExecutionLog() const override;
95 virtual void SetExecutionLog(const IJobExecutionLog& executionLog) override;
96 virtual const ilog::IMessageContainer* GetProcessorLog() const override;
97 virtual void SetProcessorLog(const ilog::IMessageContainer& processorLog) override;
98
99 // reimplemented (istd::IInformationProvider)
100 virtual QDateTime GetInformationTimeStamp() const override;
101 virtual InformationCategory GetInformationCategory() const override;
102 virtual int GetInformationId() const override;
103 virtual QString GetInformationDescription() const override;
104 virtual QString GetInformationSource() const override;
105 virtual int GetInformationFlags() const override;
106
107 // reimplemented (iser::ISerializable)
108 virtual bool Serialize(iser::IArchive& archive) override;
109
110 // reimplemented (istd::IChangeable)
111 virtual bool CopyFrom(const istd::IChangeable& object, CompatibilityMode mode = CM_WITHOUT_REFS) override;
112 virtual bool IsEqual(const istd::IChangeable& object) const override;
113 virtual istd::IChangeableUniquePtr CloneMe(CompatibilityMode mode = CM_WITHOUT_REFS) const override;
114 virtual bool ResetData(CompatibilityMode mode = CM_WITHOUT_REFS) override;
115
116private:
117 QString m_jobName;
118
119 typedef QMap<QByteArray, ProcessingOutputType> ProcessingOutputTypeMap;
120 ProcessingOutputTypeMap m_outputTypeMap;
121
122 CProcessingInfo m_processingInfo;
124
125 // Separate logs for different purposes
126 CJobExecutionLog m_executionLog; // System-level controller events
127 ilog::CMessageContainer m_processorLog; // Worker processing output
128};
129
130
131} // namespace imthype
132
133
virtual bool GetSubsetInfo(ICollectionInfo &subsetInfo, int offset=0, int count=-1, const iprm::IParamsSet *selectionParamsPtr=nullptr, ilog::IMessageConsumer *logPtr=nullptr) const =0