From 276733bf2433897da22abb58ed9e3f48498df1d1 Mon Sep 17 00:00:00 2001 From: Sara Perdoncin Date: Wed, 17 Mar 2021 11:24:37 +0000 Subject: [PATCH] EgtMachKernel : - correzione funzioni per importazione ed esportazione utensili. --- MachMgr.h | 6 ++-- MachMgrDBTools.cpp | 26 ++++++++--------- ToolsMgr.cpp | 70 ++++++++++++++++++++++------------------------ ToolsMgr.h | 12 ++++---- 4 files changed, 55 insertions(+), 59 deletions(-) diff --git a/MachMgr.h b/MachMgr.h index 46c17e6..555c187 100644 --- a/MachMgr.h +++ b/MachMgr.h @@ -189,9 +189,9 @@ class MachMgr : public IMachMgr bool TdbSave( void) const override ; bool TdbGetToolDir( std::string& sToolDir) const override ; bool TdbGetToolHolderDir( std::string& sTHolderDir) const override ; - bool TdbExport( STRVECTOR& vsToolsNames, std::string& sOutFile) const ; - STRVECTOR TdbToBeImported( std::string& sFile) ; - STRVECTOR TdbImport( std::string& sFile, STRVECTOR& vsToolsToImport, STRVECTOR& vsToolsNames) ; + bool TdbExport( const STRVECTOR& vsToolsNames, const std::string& sOutFile) const ; + bool TdbToBeImported( const std::string& sFile, STRVECTOR& vsToolNames) const ; + bool TdbImport( const std::string& sFile, const STRVECTOR& vsToolsToImport, const STRVECTOR& vsToolsNames, STRVECTOR& vsImported) ; // Setup int GetCurrSetup( void) const override ; bool GetDefaultSetupName( std::string& sName) const override ; diff --git a/MachMgrDBTools.cpp b/MachMgrDBTools.cpp index c387fa9..1ff0ac6 100644 --- a/MachMgrDBTools.cpp +++ b/MachMgrDBTools.cpp @@ -829,7 +829,7 @@ MachMgr::GetToolHolderPath( const string& sHeadName, int nExit, int nType) const //---------------------------------------------------------------------------- bool -MachMgr::TdbExport( STRVECTOR& vsToolsNames, string& sOutFile) const +MachMgr::TdbExport( const STRVECTOR& vsToolsNames, const string& sOutFile) const { if ( vsToolsNames.empty()) return true ; @@ -843,45 +843,45 @@ MachMgr::TdbExport( STRVECTOR& vsToolsNames, string& sOutFile) const } //---------------------------------------------------------------------------- -STRVECTOR -MachMgr::TdbToBeImported( string& sFile) +bool +MachMgr::TdbToBeImported( const string& sFile, STRVECTOR& vsToolsNames) const { if ( ! ExistsFile( sFile)){ LOG_ERROR( GetEMkLogger(), "TdbToBeImported Error : File does not exist") ; - return STRVECTOR() ; + return false ; } // recupero il gestore di utensili della macchina corrente ToolsMgr* pTsMgr = GetCurrToolsMgr() ; if ( pTsMgr == nullptr){ LOG_ERROR( GetEMkLogger(), "TdbToBeImported Error : no current ToolsMgr") ; - return STRVECTOR() ; + return false ; } - return pTsMgr->ToBeImported( sFile) ; + return pTsMgr->ToBeImported( sFile, vsToolsNames) ; } //---------------------------------------------------------------------------- -STRVECTOR -MachMgr::TdbImport( string& sFile, STRVECTOR& vsToolsToImport, STRVECTOR& vsToolsNames) +bool +MachMgr::TdbImport( const string& sFile, const STRVECTOR& vsToolsToImport, const STRVECTOR& vsToolsNames, STRVECTOR& vsImported) { if ( vsToolsToImport.empty()) - return STRVECTOR() ; + return true ; if ( ! ExistsFile( sFile)){ LOG_ERROR( GetEMkLogger(), "TdbImport Error : File does not exist") ; - return STRVECTOR() ; + return false ; } if ( vsToolsToImport.size() != vsToolsNames.size()) - return STRVECTOR() ; + return false ; ToolsMgr* pTsMgr = GetCurrToolsMgr() ; if ( pTsMgr == nullptr){ LOG_ERROR( GetEMkLogger(), "TdbImport Error : no current ToolsMgr") ; - return STRVECTOR() ; + return false ; } - return pTsMgr->Import( sFile, vsToolsToImport, vsToolsNames) ; + return pTsMgr->Import( sFile, vsToolsToImport, vsToolsNames, vsImported) ; } diff --git a/ToolsMgr.cpp b/ToolsMgr.cpp index b065aac..ac3fd48 100644 --- a/ToolsMgr.cpp +++ b/ToolsMgr.cpp @@ -792,7 +792,7 @@ ToolsMgr::GetCurrToolThLength( double& dThLen) const //---------------------------------------------------------------------------- bool -ToolsMgr::Export( STRVECTOR& vsToolsNames, string& sOutFile, bool bCompressed) +ToolsMgr::Export( const STRVECTOR& vsToolsNames, const string& sOutFile, bool bCompressed) { LOG_ERROR( GetEMkLogger(), ( "Export Tools " + sOutFile).c_str()) ; @@ -802,20 +802,13 @@ ToolsMgr::Export( STRVECTOR& vsToolsNames, string& sOutFile, bool bCompressed) return false ; string sOutDir = sOutFile.substr( 0, pos) ; - // Verifico che i tools da esportare esistano - for ( STRVECTOR::iterator it = vsToolsNames.begin() ; it != vsToolsNames.end() ; it ++) { - if ( m_suData.find( *it) == m_suData.end()){ - // se non lo trovo fra i tools lo elimino dal vettore dei ToolsNames - string sOut = "Warning Export Tool : " + *it + " not found. Tool is ignored" ; - LOG_ERROR( GetEMkLogger(), sOut.c_str()) ; - vsToolsNames.erase( it) ; - it -- ; - } + // Conto i tools da esportare + int nTools = 0 ; + for ( STRVECTOR::const_iterator it = vsToolsNames.begin() ; it != vsToolsNames.end() ; it ++) { + if ( m_suData.find( *it) != m_suData.end()) + nTools ++ ; } - // Numero tools da salvare - size_t nTools = vsToolsNames.size() ; - // inizializzo il writer Writer TheWriter ; if ( ! TheWriter.Init( sOutFile, bCompressed)) { @@ -834,7 +827,7 @@ ToolsMgr::Export( STRVECTOR& vsToolsNames, string& sOutFile, bool bCompressed) bool bOk = TheWriter.OutText( TF_HEADER) ; bOk = bOk && TheWriter.OutText( TF_VERSION + "=" + ToString( TF_CURR_VER)) ; bOk = bOk && TheWriter.OutText( TF_TOOLSIZE + "=" + ToString( ToolData::GetSize())) ; - bOk = bOk && TheWriter.OutText( TF_TOTAL + "=" + to_string( nTools)) ; + bOk = bOk && TheWriter.OutText( TF_TOTAL + "=" + ToString( nTools)) ; if ( ! bOk) { LOG_ERROR( GetEMkLogger(), "Export Tools : Error on Header") ; @@ -863,8 +856,15 @@ ToolsMgr::Export( STRVECTOR& vsToolsNames, string& sOutFile, bool bCompressed) //---------------------------------------------------------------------------- bool -ToolsMgr::ExportOneTool( string& sToolName, Writer& TheWriter, int& nCounter, string& sOutDir) +ToolsMgr::ExportOneTool( const string& sToolName, Writer& TheWriter, const int& nCounter, const string& sOutDir) { + // se il tool non esiste nel DB lo ignoro + if ( m_suData.find( sToolName) == m_suData.end()){ + string sOut = "Warning Export Tool : " + sToolName + " not found. Tool is ignored" ; + LOG_ERROR( GetEMkLogger(), sOut.c_str()) ; + return true ; + } + const ToolData * tData = GetTool( sToolName) ; string sOut ; if ( tData == nullptr){ @@ -900,16 +900,13 @@ ToolsMgr::ExportOneTool( string& sToolName, Writer& TheWriter, int& nCounter, st //---------------------------------------------------------------------------- -STRVECTOR -ToolsMgr::ToBeImported( string& sFile) +bool +ToolsMgr::ToBeImported( const string& sFile, STRVECTOR& vsToolsNames) { - // Vettore con i nomi di tutti i tools che posso importare da sFile. - STRVECTOR vsToolsNames ; - Scanner TheScanner ; if ( ! TheScanner.Init( sFile, ";")) { LOG_ERROR( GetEMkLogger(), "Tools ToBeImported : Error on Init") ; - return STRVECTOR() ; + return false ; } // leggo l'intestazione @@ -923,9 +920,9 @@ ToolsMgr::ToBeImported( string& sFile) string sLine ; if ( ! TheScanner.GetLine( sLine)) - return STRVECTOR() ; + return false ; if ( sLine.front() != '[' || sLine.back() != ']') - return STRVECTOR() ; + return false ; bool bToolName = false ; bool bRemoved = false ; @@ -951,39 +948,38 @@ ToolsMgr::ToBeImported( string& sFile) } } - return vsToolsNames ; + return true ; } //---------------------------------------------------------------------------- -STRVECTOR -ToolsMgr::Import( string& sFile, STRVECTOR& vsToolsToImport, STRVECTOR& vsToolsNames) +bool +ToolsMgr::Import( const string& sFile, const STRVECTOR& vsToolsToImport, const STRVECTOR& vsToolsNames, STRVECTOR& vsImported) { LOG_ERROR( GetEMkLogger(), ( "Import Tools : " + sFile).c_str()) ; - STRVECTOR vsImported ; // Verifico validità dei ToolsNames for ( size_t i = 0 ; i < vsToolsNames.size() ; i ++) { if ( m_suData.find( vsToolsNames[i]) != m_suData.end()){ LOG_ERROR( GetEMkLogger(), ( " Error : name \"" + vsToolsNames[i] + "\" is already used").c_str()) ; - return STRVECTOR() ; + return false ; } if ( i != vsToolsNames.size() - 1 && find( vsToolsNames.begin() + i + 1, vsToolsNames.end(), vsToolsNames[i]) != vsToolsNames.end()){ LOG_ERROR( GetEMkLogger(), ( " Error : name \"" + vsToolsNames[i] + "\" is already used").c_str()) ; - return STRVECTOR() ; + return false ; } } // sFile directory size_t pos = sFile.rfind( "\\") ; if ( pos == string::npos) - return STRVECTOR() ; + return false ; string sFileDir = sFile.substr( 0, pos) ; // Inizializzo lo scanner Scanner TheScanner ; if ( ! TheScanner.Init( sFile, ";")) { LOG_ERROR( GetEMkLogger(), " Import Tools : Error on Init") ; - return STRVECTOR() ; + return false ; } // leggo l'intestazione int nVersion = 0 ; @@ -999,9 +995,9 @@ ToolsMgr::Import( string& sFile, STRVECTOR& vsToolsToImport, STRVECTOR& vsToolsN // leggo i tool string sLine ; if( ! TheScanner.GetLine( sLine)) - return STRVECTOR() ; + return false ; if ( sLine.front() != '[' || sLine.back() != ']') - return STRVECTOR() ; + return false ; TheScanner.UngetLine( sLine) ; while ( TheScanner.GetLine( sLine)) { @@ -1009,7 +1005,7 @@ ToolsMgr::Import( string& sFile, STRVECTOR& vsToolsToImport, STRVECTOR& vsToolsN TheScanner.UngetLine( sLine) ; ToolData tData ; bOk = ReadTool( TheScanner, tData, nToolSize) ; - vector::iterator it = find( vsToolsToImport.begin(), vsToolsToImport.end(), tData.m_sName) ; + vector::const_iterator it = find( vsToolsToImport.begin(), vsToolsToImport.end(), tData.m_sName) ; // Se il tool non deve essere importato proseguo con il successivo if ( it == vsToolsToImport.end()) @@ -1057,13 +1053,13 @@ ToolsMgr::Import( string& sFile, STRVECTOR& vsToolsToImport, STRVECTOR& vsToolsN if ( ! vsImported.empty()) m_bModified = true ; - return vsImported ; + return true ; } //-------------------------------------------------------------------------- bool -ToolsMgr::ReadTool( Scanner& TheScanner, ToolData& tData, int& nToolSize) +ToolsMgr::ReadTool( Scanner& TheScanner, ToolData& tData, const int& nToolSize) const { string sLine ; TheScanner.GetLine( sLine) ; @@ -1101,7 +1097,7 @@ ToolsMgr::ReadTool( Scanner& TheScanner, ToolData& tData, int& nToolSize) //---------------------------------------------------------------------------- bool -ToolsMgr::CopyToolDraw( string& sDraw, string& sOutDraw, string& sToolName) +ToolsMgr::CopyToolDraw( const string& sDraw, const string& sOutDraw, const string& sToolName) { // se il file del disegno esiste lo copio nella nuova cartella if ( ExistsFile( sDraw)){ diff --git a/ToolsMgr.h b/ToolsMgr.h index d63b51e..08d6246 100644 --- a/ToolsMgr.h +++ b/ToolsMgr.h @@ -61,9 +61,9 @@ class ToolsMgr bool GetCurrToolThLength( double& dThLen) const ; const ToolData* GetCurrTool(void) const { return (m_bCurrTool ? &m_tdCurrTool : nullptr) ; } - bool Export( STRVECTOR& vsToolsNames, std::string& sOutFile, bool bCompressed = true) ; - STRVECTOR ToBeImported( std::string& sFile) ; - STRVECTOR Import( std::string& sFile, STRVECTOR& vsToolsToImport, STRVECTOR& vsToolsNames) ; + bool Export( const STRVECTOR& vsToolsNames, const std::string& sOutFile, bool bCompressed = true) ; + bool ToBeImported( const std::string& sFile, STRVECTOR& vsToolsNames) ; + bool Import( const std::string& sFile, const STRVECTOR& vsToolsToImport, const STRVECTOR& vsToolsNames, STRVECTOR& vsImported) ; private : bool Clear( void) ; @@ -73,9 +73,9 @@ class ToolsMgr bool SaveOneTool( const EgtUUID& Uuid, int& nCounter, Writer& TheWriter) const ; bool VerifyTool( int nFamily, std::string& sName, int& nType) const ; bool UpdateCurrToolHolderData( void) ; - bool ExportOneTool( std::string& sToolName, Writer& TheWriter, int& nCounter, std::string& sOutDir) ; - bool ReadTool( Scanner& TheScanner, ToolData& tData, int& nToolSize) ; - bool CopyToolDraw( std::string& sDraw, std::string& sOutDraw, std::string& sToolName) ; + bool ExportOneTool( const std::string& sToolName, Writer& TheWriter, const int& nCounter, const std::string& sOutDir) ; + bool ReadTool( Scanner& TheScanner, ToolData& tData, const int& nToolSize) const ; + bool CopyToolDraw( const std::string& sDraw, const std::string& sOutDraw, const std::string& sToolName) ; private : typedef std::unordered_map< EgtUUID, ToolData> UUIDTDATA_UMAP ;