From da5f91a0ce15351a82beb061c3ccc965164529bc Mon Sep 17 00:00:00 2001 From: claiff Date: Thu, 6 Oct 2022 12:26:45 +0300 Subject: create settings on start --- src/file/settings/checker_decorator.cpp | 12 ++++++++---- src/file/settings/checker_decorator.hpp | 10 +++++----- src/file/settings/file_decorator.cpp | 13 +++++++------ src/file/settings/file_decorator.hpp | 16 +++++++++------- src/file/settings/settings.cpp | 4 ++-- src/file/settings/settings.hpp | 12 ++++++------ src/file/settings/types/ifile_manipulator.hpp | 6 +++--- 7 files changed, 40 insertions(+), 33 deletions(-) (limited to 'src/file/settings') diff --git a/src/file/settings/checker_decorator.cpp b/src/file/settings/checker_decorator.cpp index ef560ad..a7ccda1 100644 --- a/src/file/settings/checker_decorator.cpp +++ b/src/file/settings/checker_decorator.cpp @@ -16,18 +16,22 @@ namespace smtp::file::settings //Public methods // - manage::SettingsFileDataType CheckerDecorator::Read() const + general::SettingsFileDataType CheckerDecorator::Read() const { - manage::SettingsFileDataType result; + general::SettingsFileDataType result; if(!mBase) { return result; } result = mBase->Read(); - return mRegistratorErrors.Check( result ) ? result : manage::SettingsFileDataType{}; + if(result.empty()) + { + return result; + } + return mRegistratorErrors.Check( result ) ? result : general::SettingsFileDataType{}; } - bool CheckerDecorator::Write( manage::SettingsFileDataType const& settings_fields ) const + bool CheckerDecorator::Write( general::SettingsFileDataType const& settings_fields ) const { if( !mBase ) { diff --git a/src/file/settings/checker_decorator.hpp b/src/file/settings/checker_decorator.hpp index ecaba5a..c596fb6 100644 --- a/src/file/settings/checker_decorator.hpp +++ b/src/file/settings/checker_decorator.hpp @@ -1,20 +1,20 @@ #pragma once -#include "management/general.hpp" +#include "general/struct.hpp" #include "checker/registrator_settings.hpp" #include "types/ifile_manipulator.hpp" -#include "message/builder/types/idecorator.hpp" +#include "general/idecorator.hpp" namespace smtp::file::settings { - class CheckerDecorator : public smtp::message::builder::types::IDecorator< types::IFileManipulator> + class CheckerDecorator : public general::IDecorator< types::IFileManipulator> { public: explicit CheckerDecorator( checker::RegistratorSettings const& registrator_errors ); ~CheckerDecorator() = default; - manage::SettingsFileDataType Read() const override; - bool Write( manage::SettingsFileDataType const& data ) const override; + general::SettingsFileDataType Read() const override; + bool Write( general::SettingsFileDataType const& data ) const override; private: checker::RegistratorSettings mRegistratorErrors; }; diff --git a/src/file/settings/file_decorator.cpp b/src/file/settings/file_decorator.cpp index 38b42ce..1b05f72 100644 --- a/src/file/settings/file_decorator.cpp +++ b/src/file/settings/file_decorator.cpp @@ -12,8 +12,9 @@ namespace smtp::file::settings //Constructors // - FileDecorator::FileDecorator( std::string const& path_file ) + FileDecorator::FileDecorator( std::string const& path_file, errors::Registrator const& registrator_errors ) : mPathFile( path_file ) + , mRegistratorErrors( registrator_errors ) { } @@ -22,14 +23,14 @@ namespace smtp::file::settings //Public methods // - manage::SettingsFileDataType FileDecorator::Read() const + general::SettingsFileDataType FileDecorator::Read() const { static const std::string METHOD_NAME = "Read settings"; std::ifstream settings_file{mPathFile, std::fstream::in}; if( !settings_file.is_open() ) { - logger::LoggerSet::GetInstance()->LogError( METHOD_NAME, "Unable to open file to read " + mPathFile ); + mRegistratorErrors.Process( errors::types::SettingsType::Server ); return {}; } auto result = GetDataFromFile( settings_file ); @@ -38,7 +39,7 @@ namespace smtp::file::settings return result; } - bool FileDecorator::Write( manage::SettingsFileDataType const& data ) const + bool FileDecorator::Write( general::SettingsFileDataType const& data ) const { static const std::string METHOD_NAME = "Write settings"; @@ -61,10 +62,10 @@ namespace smtp::file::settings //Private methods // - manage::SettingsFileDataType FileDecorator::GetDataFromFile( std::ifstream& settings_file ) const + general::SettingsFileDataType FileDecorator::GetDataFromFile( std::ifstream& settings_file ) const { std::string line{}; - manage::SettingsFileDataType result; + general::SettingsFileDataType result; parser::Settings parser; while( std::getline( settings_file, line )) diff --git a/src/file/settings/file_decorator.hpp b/src/file/settings/file_decorator.hpp index 5896aed..93c8c20 100644 --- a/src/file/settings/file_decorator.hpp +++ b/src/file/settings/file_decorator.hpp @@ -1,22 +1,24 @@ #pragma once -#include "management/general.hpp" +#include "general/struct.hpp" #include "types/ifile_manipulator.hpp" -#include "message/builder/types/idecorator.hpp" +#include "general/idecorator.hpp" +#include "file/errors/registrator.hpp" namespace smtp::file::settings { - class FileDecorator : public smtp::message::builder::types::IDecorator< types::IFileManipulator> + class FileDecorator : public general::IDecorator< types::IFileManipulator> { public: - explicit FileDecorator( std::string const& path_file ); + explicit FileDecorator( std::string const& path_file, errors::Registrator const& registrator_errors ); ~FileDecorator() = default; - manage::SettingsFileDataType Read() const override; - bool Write( manage::SettingsFileDataType const& data ) const override; + general::SettingsFileDataType Read() const override; + bool Write( general::SettingsFileDataType const& data ) const override; private: - manage::SettingsFileDataType GetDataFromFile( std::ifstream& settings_file ) const; + general::SettingsFileDataType GetDataFromFile( std::ifstream& settings_file ) const; std::string mPathFile; + errors::Registrator mRegistratorErrors; }; } diff --git a/src/file/settings/settings.cpp b/src/file/settings/settings.cpp index 48232e6..0815f11 100644 --- a/src/file/settings/settings.cpp +++ b/src/file/settings/settings.cpp @@ -17,13 +17,13 @@ namespace smtp::file::settings //Public methods // - manage::SettingsFields Settings::Read() const + general::SettingsFields Settings::Read() const { auto parsed_store = mFileManipulator->Read(); return converter::FileToStruct{}.Convert( parsed_store ); } - bool Settings::Write( manage::SettingsFields const& settings_fields ) const + bool Settings::Write( general::SettingsFields const& settings_fields ) const { auto parsed_data = converter::StructToFile{}.Convert( settings_fields ); return mFileManipulator->Write( parsed_data ); diff --git a/src/file/settings/settings.hpp b/src/file/settings/settings.hpp index 60634fe..9e05f24 100644 --- a/src/file/settings/settings.hpp +++ b/src/file/settings/settings.hpp @@ -1,6 +1,6 @@ #pragma once -#include "management/general.hpp" +#include "general/struct.hpp" #include "types/ifile_manipulator.hpp" namespace smtp::file::settings @@ -11,12 +11,12 @@ namespace smtp::file::settings explicit Settings( types::IFileManipulatorPtr const& file_manipulator ); ~Settings() = default; - manage::SettingsFields Read() const; - bool Write( manage::SettingsFields const& settings_fields ) const; + general::SettingsFields Read() const; + bool Write( general::SettingsFields const& settings_fields ) const; private: - manage::SettingsFileDataType GetParsedStore() const; - manage::SettingsFileDataType GetDataFromFile( std::ifstream& settings_file ) const; - bool SetParsedData( manage::SettingsFileDataType const& parsed_data ) const; + general::SettingsFileDataType GetParsedStore() const; + general::SettingsFileDataType GetDataFromFile( std::ifstream& settings_file ) const; + bool SetParsedData( general::SettingsFileDataType const& parsed_data ) const; std::string BuildParam( std::pair < std::string, std::string > const& data ) const; std::string mPathFile; diff --git a/src/file/settings/types/ifile_manipulator.hpp b/src/file/settings/types/ifile_manipulator.hpp index 6de0bf3..312aece 100644 --- a/src/file/settings/types/ifile_manipulator.hpp +++ b/src/file/settings/types/ifile_manipulator.hpp @@ -2,7 +2,7 @@ #include -#include "management/general.hpp" +#include "general/struct.hpp" namespace smtp::file::settings::types { @@ -11,8 +11,8 @@ namespace smtp::file::settings::types public: virtual ~IFileManipulator() = default; - virtual manage::SettingsFileDataType Read() const = 0; - virtual bool Write( manage::SettingsFileDataType const& data ) const = 0; + virtual general::SettingsFileDataType Read() const = 0; + virtual bool Write( general::SettingsFileDataType const& data ) const = 0; }; using IFileManipulatorPtr = std::shared_ptr; } -- cgit v1.2.3