Code improvements

Improved Craplog methods to handle the elements of the warnlists/
blacklists
This commit is contained in:
Valentino Orlandi 2024-01-21 21:08:34 +01:00
parent e7279651d8
commit fc92115597
Signed by: elB4RTO
GPG key ID: 1719E976DB2D4E71

View file

@ -183,90 +183,58 @@ void Craplog::warnlistAdd( const unsigned& web_server_id, const int& log_field_i
void Craplog::blacklistRemove( const unsigned& web_server_id, const int& log_field_id, const std::string& item ) noexcept void Craplog::blacklistRemove( const unsigned& web_server_id, const int& log_field_id, const std::string& item ) noexcept
{ {
auto& list = this->blacklists.at( web_server_id ).at( log_field_id ).list; auto& list = this->blacklists.at( web_server_id ).at( log_field_id ).list;
// move the item to the end, then pop it if ( const auto it{ std::find( list.cbegin(), list.cend(), item ) }; it != list.cend() ) {
const size_t max{ list.size()-1ul }; list.erase( it );
for ( size_t i{0}; i<max; ++i ) {
if ( list.at( i ) == item ) {
list.at( i ) = list.at( i+1ul );
list.at( i+1ul ) = item;
}
} }
list.pop_back();
} }
void Craplog::warnlistRemove( const unsigned& web_server_id, const int& log_field_id, const std::string& item ) noexcept void Craplog::warnlistRemove( const unsigned& web_server_id, const int& log_field_id, const std::string& item ) noexcept
{ {
auto& list = this->warnlists.at( web_server_id ).at( log_field_id ).list; auto& list = this->warnlists.at( web_server_id ).at( log_field_id ).list;
// move the item to the end, then pop it if ( const auto it{ std::find( list.cbegin(), list.cend(), item ) }; it != list.cend() ) {
const size_t max{ list.size()-1ul }; list.erase( it );
for ( size_t i{0}; i<max; ++i ) {
if ( list.at( i ) == item ) {
list.at( i ) = list.at( i+1ul );
list.at( i+1ul ) = item;
}
} }
list.pop_back();
} }
int Craplog::blacklistMoveUp( const unsigned& web_server_id, const int& log_field_id, const std::string& item ) noexcept int Craplog::blacklistMoveUp( const unsigned& web_server_id, const int& log_field_id, const std::string& item ) noexcept
{ {
auto& list = this->blacklists.at( web_server_id ).at( log_field_id ).list; auto& list = this->blacklists.at( web_server_id ).at( log_field_id ).list;
size_t i{ 1 }; if ( auto it{ std::find( std::next(list.begin()), list.end(), item ) }; it != list.cend() ) {
const size_t max{ list.size() }; const int pos{ static_cast<int>( std::distance(list.begin(), it) ) - 1 };
for ( ; i<max; ++i ) { std::swap( *it, *std::prev(it) );
if ( list.at( i ) == item ) { return pos;
list.at( i ) = list.at( i-1ul );
list.at( i-1ul ) = item;
--i;
break;
}
} }
return static_cast<int>( i ); return -1;
} }
int Craplog::warnlistMoveUp( const unsigned& web_server_id, const int& log_field_id, const std::string& item ) noexcept int Craplog::warnlistMoveUp( const unsigned& web_server_id, const int& log_field_id, const std::string& item ) noexcept
{ {
auto& list = this->warnlists.at( web_server_id ).at( log_field_id ).list; auto& list = this->warnlists.at( web_server_id ).at( log_field_id ).list;
size_t i{ 1 }; if ( auto it{ std::find( std::next(list.begin()), list.end(), item ) }; it != list.cend() ) {
const size_t max{ list.size() }; const int pos{ static_cast<int>( std::distance(list.begin(), it) ) - 1 };
for ( ; i<max; ++i ) { std::swap( *it, *std::prev(it) );
if ( list.at( i ) == item ) { return pos;
list.at( i ) = list.at( i-1ul );
list.at( i-1ul ) = item;
--i;
break;
}
} }
return static_cast<int>( i ); return -1;
} }
int Craplog::blacklistMoveDown( const unsigned& web_server_id, const int& log_field_id, const std::string& item ) noexcept int Craplog::blacklistMoveDown( const unsigned& web_server_id, const int& log_field_id, const std::string& item ) noexcept
{ {
auto& list = this->blacklists.at( web_server_id ).at( log_field_id ).list; auto& list = this->blacklists.at( web_server_id ).at( log_field_id ).list;
size_t i{ 0 }; if ( auto it{ std::find( list.begin(), std::prev(list.end()), item ) }; it != list.cend() ) {
const size_t max{ list.size()-1ul }; const int pos{ static_cast<int>( std::distance(list.begin(), it) ) + 1 };
for ( ; i<max; ++i ) { std::swap( *it, *std::next(it) );
if ( list.at( i ) == item ) { return pos;
list.at( i ) = list.at( i+1ul );
list.at( i+1ul ) = item;
++i;
break;
}
} }
return static_cast<int>( i ); return -1;
} }
int Craplog::warnlistMoveDown( const unsigned& web_server_id, const int& log_field_id, const std::string& item ) noexcept int Craplog::warnlistMoveDown( const unsigned& web_server_id, const int& log_field_id, const std::string& item ) noexcept
{ {
auto& list = this->warnlists.at( web_server_id ).at( log_field_id ).list; auto& list = this->warnlists.at( web_server_id ).at( log_field_id ).list;
size_t i{ 0 }; if ( auto it{ std::find( list.begin(), std::prev(list.end()), item ) }; it != list.cend() ) {
const size_t max{ list.size()-1ul }; const int pos{ static_cast<int>( std::distance(list.begin(), it) ) + 1 };
for ( ; i<max; ++i ) { std::swap( *it, *std::next(it) );
if ( list.at( i ) == item ) { return pos;
list.at( i ) = list.at( i+1ul );
list.at( i+1ul ) = item;
++i;
break;
}
} }
return static_cast<int>( i ); return -1;
} }
std::string Craplog::sanitizeBWitem( const int& log_field_id, const std::string& new_item ) const std::string Craplog::sanitizeBWitem( const int& log_field_id, const std::string& new_item ) const