20template <
class ReadArchive,
class WriteArchive>
27 I_ASSIGN(m_versionInfoCompPtr,
"VersionInfo",
"Provide information about archive versions",
false,
"VersionInfo");
48 : ReadArchive(device),
49 m_loggerPtr(loggerPtr)
56 const QString& message,
57 const QString& messageSource,
60 if (m_loggerPtr !=
nullptr){
61 QString correctedMessage = message;
62 QString correctedMessageSource = messageSource;
76 const int* flagsPtr =
nullptr)
const override
80 return (m_loggerPtr !=
nullptr) && m_loggerPtr->
IsLogConsumed(&slaveCategory, flagsPtr);
93 : WriteArchive(device, infoPtr),
94 m_loggerPtr(loggerPtr)
101 const QString& message,
102 const QString& messageSource,
105 if (m_loggerPtr !=
nullptr){
106 QString correctedMessage = message;
107 QString correctedMessageSource = messageSource;
111 return m_loggerPtr->
SendLogMessage(category,
id, correctedMessage, correctedMessageSource, flags);
121 const int* flagsPtr =
nullptr)
const override
125 return (m_loggerPtr !=
nullptr) && m_loggerPtr->
IsLogConsumed(&slaveCategory, flagsPtr);
156template <
class ReadArchive,
class WriteArchive>
166template <
class ReadArchive,
class WriteArchive>
172 if (IsDeviceOperationSupported(data, device, ReadOperation)){
175 Q_ASSERT(!archive.IsStoring());
178 if (serializablePtr ==
nullptr){
179 serializablePtr = CompCastPtr<iser::ISerializable>(&data);
182 Q_ASSERT(serializablePtr !=
nullptr);
184 if (serializablePtr->
Serialize(archive)){
188 OnReadError(archive, data);
196template <
class ReadArchive,
class WriteArchive>
202 if (IsDeviceOperationSupported(data, device, WriteOperation)){
204 Q_ASSERT(archive.IsStoring());
207 if(serializablePtr ==
nullptr){
208 serializablePtr = CompCastPtr<iser::ISerializable>(&data);
210 Q_ASSERT(serializablePtr !=
nullptr);
212 if (!CheckMinimalVersion(*serializablePtr, archive.GetVersionInfo())){
213 SendWarningMessage(UnsupportedArchiveVersion, QObject::tr(
"Archive version is not supported, possible lost of data"));
220 SendInfoMessage(WriteOperationFailed, QObject::tr(
"Cannot serialize object"));
230template <
class ReadArchive,
class WriteArchive>
233 return m_versionInfoCompPtr.GetPtr();
238template <
class ReadArchive,
class WriteArchive>
243 for (iser::IVersionInfo::VersionIds::const_iterator iter = ids.begin();
248 quint32 objectMinimalVersion =
object.GetMinimalVersion(
id);
250 quint32 versionNumber;
252 if (versionNumber < objectMinimalVersion) {
262template <
class ReadArchive,
class WriteArchive>
267 SendWarningMessage(ReadOperationFailed, QString(QObject::tr(
"Cannot load object")) );
Consume information about progress of some process.
Interface providing reading and writing data objects via I/O-devices.
OperationState
Result of device-related operation.
virtual bool SendLogMessage(istd::IInformationProvider::InformationCategory category, int id, const QString &message, const QString &messageSource, int flags=0) const
ReadArchiveEx(QIODevice &device, const istd::ILogger *loggerPtr)
virtual bool IsLogConsumed(const istd::IInformationProvider::InformationCategory *, const int *flagsPtr=nullptr) const override
virtual bool IsLogConsumed(const istd::IInformationProvider::InformationCategory *, const int *flagsPtr=nullptr) const override
virtual bool SendLogMessage(istd::IInformationProvider::InformationCategory category, int id, const QString &message, const QString &messageSource, int flags=0) const
WriteArchiveEx(QIODevice &device, const iser::IVersionInfo *infoPtr, const istd::ILogger *loggerPtr)
Template implementation of file serializer using loading and storing archive implementation.
virtual const iser::IVersionInfo * GetVersionInfo() const
Get working version info.
virtual ifile::IDeviceBasedPersistence::OperationState WriteToDevice(const istd::IChangeable &data, QIODevice &device, ibase::IProgressManager *progressManagerPtr=nullptr) const override
This function writes data data to the given I/O-device device.
virtual ifile::IDeviceBasedPersistence::OperationState ReadFromDevice(istd::IChangeable &data, QIODevice &device, ibase::IProgressManager *progressManagerPtr=nullptr) const override
This function loads data data from the given I/O-device device.
ilog::CLoggerComponentBase BaseClass
bool CheckMinimalVersion(const iser::ISerializable &object, const iser::IVersionInfo &versionInfo) const
Check if the minimal version of some serializable object is supported by version info.
virtual bool IsDeviceOperationSupported(const istd::IChangeable &dataObject, const QIODevice &device, int deviceOperation) const override
Returns true if object dataObject can be processed via defined I/O-device.
virtual void OnReadError(const ReadArchive &archive, const istd::IChangeable &data) const
Called if read error is occurred.
Template wrapper adding comprehensive logging functionality to components.
virtual void DecorateMessage(istd::IInformationProvider::InformationCategory category, int id, int flags, QString &message, QString &messageSource) const override
Decorate message before sending.
Common class for all classes which objects can be archived or restored from archive.
virtual bool Serialize(IArchive &archive)=0
Load or store state of this object as a archive stream.
Provides access to version information.
virtual bool GetVersionNumber(int versionId, quint32 &result) const =0
Get version of archived stream for specific versioning type.
virtual VersionIds GetVersionIds() const =0
Get list of version ID's.
Common interface for data model objects, which can be changed.
Common interface for classes sending some log info.
virtual bool SendLogMessage(IInformationProvider::InformationCategory category, int id, const QString &message, const QString &messageSource, int flags=0) const
Send any message to log.
virtual bool IsLogConsumed(const IInformationProvider::InformationCategory *categoryPtr=NULL, const int *flagsPtr=NULL) const
Check if any log message is consumed.
Contains interfaces and implementations of file system related components.