TestEGk 1.4a4 : sistemazioni varie per Logger, batch mode, Ini file, UTF-8.

This commit is contained in:
Dario Sassi
2013-12-11 18:33:58 +00:00
parent b69d19eb59
commit 7016ce6f87
7 changed files with 320 additions and 103 deletions
+161
View File
@@ -0,0 +1,161 @@
//----------------------------------------------------------------------------
// EgalTech 2013-2013
//----------------------------------------------------------------------------
// File : TegExecutor.cpp Data : 09.12.13 Versione : 1.4a4
// Contenuto : Implementazione della classe TegExecutor.
//
//
//
// Modifiche : 09.12.13 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
//--------------------------- Include ----------------------------------------
#include "stdafx.h"
#include "TegExecutor.h"
#include "/EgtDev/Include/EgtPointerOwner.h"
#include "/EgtDev/Include/EGnStringConverter.h"
#include "/EgtDev/Include/EgnCmdParser.h"
#include "/EgtDev/Include/EGkGeomDB.h"
#include "/EgtDev/Include/EGkGdbExecutor.h"
#include <io.h>
using namespace std ;
//----------------------------------------------------------------------------
TegExecutor::TegExecutor( void)
{
m_pLogger = nullptr ;
}
//----------------------------------------------------------------------------
TegExecutor::~TegExecutor( void)
{
}
//----------------------------------------------------------------------------
void
TegExecutor::Init( ILogger* pLogger)
{
m_pLogger = pLogger ;
}
//----------------------------------------------------------------------------
bool
TegExecutor::Execute( const string& sCmd1, const string& sCmd2, const STRVECTOR& vsParams)
{
string sOut ;
STRVECTOR::const_iterator theConstIter ;
// output di debug
sOut = "Cmd = [" + sCmd1 + "/" + sCmd2 + "] Par = [" ;
for ( theConstIter = vsParams.begin() ; theConstIter != vsParams.end() ; ++theConstIter) {
if ( theConstIter != vsParams.begin())
sOut += "/" ;
sOut += *theConstIter ;
}
sOut += "]" ;
LOG_DEBUG( m_pLogger, sOut.c_str()) ;
// esecuzione comando
if ( sCmd1 == "RUN") {
ExecuteRun( sCmd2, vsParams) ;
return true ;
}
else if ( sCmd1 == "DIR") {
ExecuteDir( sCmd2, vsParams) ;
return true ;
}
return false ;
}
//----------------------------------------------------------------------------
bool
TegExecutor::ExecuteRun( const string& sCmd2, const STRVECTOR& vsParams)
{
// analisi ed esecuzione dei comandi
if ( sCmd2 == "") {
// 1 parametro : nome file di script da eseguire
if ( vsParams.size() != 1)
return false ;
// esecuzione script
PtrOwner<IGeomDB> pGdb( CreateGeomDB()) ;
PtrOwner<IGdbExecutor> pGdbExec( CreateGdbExecutor()) ;
PtrOwner<ICmdParser> pCmdParser( CreateCmdParser()) ;
// controllo validità oggetti
if ( ! IsValid( pGdb)) {
LOG_ERROR( m_pLogger, "Error in CreateGeomDB") ;
return false ;
}
if ( ! IsValid( pGdbExec)) {
LOG_ERROR( m_pLogger, "Error in CreateGdbExecutor") ;
return false ;
}
if ( ! IsValid( pCmdParser)) {
LOG_ERROR( m_pLogger, "Error in CreateCmdParser") ;
return false ;
}
// inizializzazioni
pGdb->Init( m_pLogger) ;
pGdbExec->Init( Get( pGdb), m_pLogger) ;
if ( ! pCmdParser->Init( vsParams[0], Get( pGdbExec), m_pLogger)) {
string sOut = "Error on Parser.Init (" + vsParams[0] + ")" ;
LOG_ERROR( m_pLogger, sOut.c_str()) ;
return false ;
}
// esecuzione comandi
if ( ! pCmdParser->Run()) {
LOG_ERROR( m_pLogger, "Error on Parser.Run") ;
return false ;
}
return true ;
}
return false ;
}
//----------------------------------------------------------------------------
bool
TegExecutor::ExecuteDir( const string& sCmd2, const STRVECTOR& vsParams)
{
// analisi ed esecuzione dei comandi
if ( sCmd2 == "EMPTY") {
// 1 parametro : nome direttorio da svuotare
if ( vsParams.size() != 1)
return false ;
wstring sDir = stringtoW( vsParams[0]) ;
wstring sFile = sDir + L"\\*.*" ;
_wfinddata_t c_file ;
intptr_t hFile ;
// ciclo su tutti i file del direttorio
if ( ( hFile = _wfindfirst( sFile.c_str(), &c_file)) != -1L) {
do {
if ( c_file.attrib != _A_SUBDIR) {
sFile = sDir + L"\\" + c_file.name ;
::DeleteFileW( sFile.c_str()) ;
}
} while( _wfindnext( hFile, &c_file) == 0) ;
_findclose( hFile) ;
errno = 0 ;
}
return true ;
}
return false ;
}
+36
View File
@@ -0,0 +1,36 @@
//----------------------------------------------------------------------------
// EgalTech 2013-2013
//----------------------------------------------------------------------------
// File : GdbExecutor.h Data : 25.11.13 Versione : 1.3a1
// Contenuto : Dichiarazione della classe GdbExecutor.
//
//
//
// Modifiche : 27.03.13 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EgnCmdExecutor.h"
#include "/EgtDev/Include/EgtILogger.h"
//----------------------------------------------------------------------------
class TegExecutor : public ICmdExecutor
{
public :
virtual bool Execute( const std::string& sCmd1, const std::string& sCmd2, const STRVECTOR& vsParams) ;
public :
TegExecutor( void) ;
~TegExecutor( void) ;
void Init( ILogger* pLogger) ;
private :
bool ExecuteRun( const std::string& sCmd2, const STRVECTOR& vsParams) ;
bool ExecuteDir( const std::string& sCmd2, const STRVECTOR& vsParams) ;
private :
ILogger* m_pLogger ;
} ;
+76 -51
View File
@@ -13,27 +13,46 @@
//--------------------------- Include ----------------------------------------
#include "stdafx.h"
#include <iostream>
#include <string>
#include "\EgtDev\Include\EGnVersion.h"
#include "\EgtDev\Include\EGnStringConverter.h"
#include "\EgtDev\Include\EgnCmdParser.h"
#include "\EgtDev\Include\EGkVersion.h"
#include "TegExecutor.h"
#include "/EgtDev/Include/EgnGetModuleVer.h"
#include "/EgtDev/Include/EGnVersion.h"
#include "/EgtDev/Include/EGnStringUtils.h"
#include "/EgtDev/Include/EGnStringConverter.h"
#include "/EgtDev/Include/EgnCmdParser.h"
#include "/EgtDev/Include/EGkVersion.h"
#include "/EgtDev/Include/EGkGeomDB.h"
#include "/EgtDev/Include/EGkGdbExecutor.h"
#include "/EgtDev/Include/EgtPointerOwner.h"
#include "/EgtDev/Include/EgtLogger.h"
#include "/EgtDev/Include/EgtIniFile.h"
//--------------------------- Define -----------------------------------------
#define STR_VER "1.4a1"
#if defined( _WIN64)
#if defined( NDEBUG)
#define STR_EXE "TestEGkR64.exe"
#else
#define STR_EXE "TestEGkD64.exe"
#endif
#else
#if defined( NDEBUG)
#define STR_EXE "TestEGkR32.exe"
#else
#define STR_EXE "TestEGkD32.exe"
#endif
#endif
using namespace std ;
using namespace egtlogger ;
//----------------------------------------------------------------------------
int
wmain( int argc, wchar_t* argv[])
{
wstring sIn ;
int nErr ;
int nDebug ;
string sIn ;
string sDir ;
string sFileIni ;
// se debug, imposto stampe memory leaks all'uscita
@@ -41,66 +60,72 @@ wmain( int argc, wchar_t* argv[])
_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF) ;
#endif
// recupero il direttorio del programma e costruisco path file INI
GetModuleDirectory( NULL, sDir) ;
sFileIni = sDir + "\\TestEgk.ini" ;
// imposto direttorio di lavoro
SetCurrentDirectory( sDir) ;
// interpreto i parametri di linea
// nome file di comandi
if ( argc >= 2)
sIn = argv[1] ;
sIn = LPSTR( WtoA( argv[1])) ;
else
sIn = L"In.tsc" ;
sIn = GetPrivateProfileStringUtf8( "General", "Batch", "In.btsc", sFileIni.c_str()) ;
// livello di debug
nDebug = GetPrivateProfileInt( "General", "Debug", 0, sFileIni.c_str()) ;
// inizializzazioni del logger
Logger logger( ( nDebug > 0 ? LL_DEBUG : LL_INFO), "TestEGk") ;
logger.AddOutputStream( cout, false, LL_INFO) ;
logger.AddOutputStream( new(nothrow) ofstream( "TestEgk.log"), true) ;
// inizio programma
LOG_DATETIME( &logger, " Start Test") ;
// versione del programma
#if defined( _WIN64)
#if defined( NDEBUG)
cout << "TestEGkR64.exe v." STR_VER << endl ;
#else
cout << "TestEGkD64.exe v." STR_VER << endl ;
#endif
#else
#if defined( NDEBUG)
cout << "TestEGkR32.exe v." STR_VER << endl ;
#else
cout << "TestEGkD32.exe v." STR_VER << endl ;
#endif
#endif
{ string sVer ;
GetModuleVersion( NULL, sVer) ;
LOG_INFO( &logger, string( STR_EXE " v." + sVer).c_str()) ;
}
// versione delle librerie
cout << GetEGnVersion() << endl ;
cout << GetEGkVersion() << endl ;
LOG_INFO( &logger, GetEGnVersion()) ;
LOG_INFO( &logger, GetEGkVersion()) ;
// esecuzione script
PtrOwner<IGeomDB> pGdb( CreateGeomDB()) ;
PtrOwner<IGdbExecutor> pGdbExec( CreateGdbExecutor()) ;
// nessun errore
nErr = 0 ;
// creazione oggetti per esecuzione script
TegExecutor TegExec ;
PtrOwner<ICmdParser> pCmdParser( CreateCmdParser()) ;
// controllo validità oggetti
if ( ! IsValid( pGdb)) {
cout << "Error in CreateGeomDB" << endl ;
return 1 ;
}
if ( ! IsValid( pGdbExec)) {
cout << "Error in CreateGdbExecutor" << endl ;
return 2 ;
}
if ( ! IsValid( pCmdParser)) {
cout << "Error in CreateCmdParser" << endl ;
return 3 ;
LOG_ERROR( &logger, "Error in CreateCmdParser") ;
nErr = 1 ;
goto END ;
}
// inizializzazioni
pGdb->Init() ;
pGdbExec->Set( Get( pGdb)) ;
if ( ! pCmdParser->Initialize( sIn, Get( pGdbExec))) {
cout << "Error on Parser.Init (" << wstringtoA( sIn) << ")" << endl ;
return 4 ;
TegExec.Init( &logger) ;
if ( ! pCmdParser->Init( sIn, &TegExec, &logger)) {
string sout = "Error on Parser.Init (" + sIn + ")" ;
LOG_ERROR( &logger, sout.c_str()) ;
nErr = 2 ;
goto END ;
}
// esecuzione comandi
if ( ! pCmdParser->Run()) {
cout << "Error on Parser.Run" << endl ;
return 5 ;
LOG_ERROR( &logger, "Error on Parser.Run") ;
nErr = 3 ;
goto END ;
}
return 0 ;
}
END :
// fine programma
LOG_DATETIME( &logger, " End Test") ;
return nErr ;
}
BIN
View File
Binary file not shown.
+18 -13
View File
@@ -56,6 +56,7 @@
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<MinimalRebuild>false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
@@ -64,6 +65,9 @@
<PostBuildEvent>
<Command>copy $(TargetPath) \EgtProg\TestEGk\</Command>
</PostBuildEvent>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
@@ -84,36 +88,37 @@
<PostBuildEvent>
<Command>copy $(TargetPath) \EgtProg\TestEGk\</Command>
</PostBuildEvent>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\Include\EgkCurve.h" />
<ClInclude Include="..\Include\EgkCurveArc.h" />
<ClInclude Include="..\Include\EgkCurveBezier.h" />
<ClInclude Include="..\Include\EgkCurveComposite.h" />
<ClInclude Include="..\Include\EgkCurveLine.h" />
<ClInclude Include="..\Include\EGkFrame3d.h" />
<ClInclude Include="..\Include\EgkGdbExecutor.h" />
<ClInclude Include="..\Include\EGkGeoConst.h" />
<ClInclude Include="..\Include\EGkGeoObj.h" />
<ClInclude Include="..\Include\EGkGeoObjType.h" />
<ClInclude Include="..\Include\EGkGeoPoint3d.h" />
<ClInclude Include="..\Include\EGkGeoVector3d.h" />
<ClInclude Include="..\Include\EGkPoint3d.h" />
<ClInclude Include="..\Include\EGkVector3d.h" />
<ClInclude Include="..\Include\EGkGeomDB.h" />
<ClInclude Include="..\Include\EGkVersion.h" />
<ClInclude Include="..\Include\EgnCmdParser.h" />
<ClInclude Include="..\Include\EGnStringConverter.h" />
<ClInclude Include="..\Include\EGnStringUtils.h" />
<ClInclude Include="..\Include\EGnVersion.h" />
<ClInclude Include="..\Include\EgtILogger.h" />
<ClInclude Include="..\Include\EgtIniFile.h" />
<ClInclude Include="..\Include\EgtLogger.h" />
<ClInclude Include="..\Include\EgtPointerOwner.h" />
<ClInclude Include="resource.h" />
<ClInclude Include="stdafx.h" />
<ClInclude Include="TegExecutor.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="stdafx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="TegExecutor.cpp" />
<ClCompile Include="TestEGk.cpp" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="TestEGk.rc" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
+29 -39
View File
@@ -18,27 +18,6 @@
<ClInclude Include="stdafx.h">
<Filter>File di intestazione</Filter>
</ClInclude>
<ClInclude Include="..\Include\EGkGeoConst.h">
<Filter>File di intestazione</Filter>
</ClInclude>
<ClInclude Include="..\Include\EGkGeoObj.h">
<Filter>File di intestazione</Filter>
</ClInclude>
<ClInclude Include="..\Include\EGkGeoObjType.h">
<Filter>File di intestazione</Filter>
</ClInclude>
<ClInclude Include="..\Include\EGkGeoPoint3d.h">
<Filter>File di intestazione</Filter>
</ClInclude>
<ClInclude Include="..\Include\EGkGeoVector3d.h">
<Filter>File di intestazione</Filter>
</ClInclude>
<ClInclude Include="..\Include\EGkPoint3d.h">
<Filter>File di intestazione</Filter>
</ClInclude>
<ClInclude Include="..\Include\EGkVector3d.h">
<Filter>File di intestazione</Filter>
</ClInclude>
<ClInclude Include="..\Include\EGkVersion.h">
<Filter>File di intestazione</Filter>
</ClInclude>
@@ -48,24 +27,6 @@
<ClInclude Include="..\Include\EGnVersion.h">
<Filter>File di intestazione</Filter>
</ClInclude>
<ClInclude Include="..\Include\EGkFrame3d.h">
<Filter>File di intestazione</Filter>
</ClInclude>
<ClInclude Include="..\Include\EgkCurveLine.h">
<Filter>File di intestazione</Filter>
</ClInclude>
<ClInclude Include="..\Include\EgkCurve.h">
<Filter>File di intestazione</Filter>
</ClInclude>
<ClInclude Include="..\Include\EgkCurveArc.h">
<Filter>File di intestazione</Filter>
</ClInclude>
<ClInclude Include="..\Include\EgkCurveBezier.h">
<Filter>File di intestazione</Filter>
</ClInclude>
<ClInclude Include="..\Include\EgkCurveComposite.h">
<Filter>File di intestazione</Filter>
</ClInclude>
<ClInclude Include="..\Include\EgkGdbExecutor.h">
<Filter>File di intestazione</Filter>
</ClInclude>
@@ -75,6 +36,27 @@
<ClInclude Include="..\Include\EGnStringConverter.h">
<Filter>File di intestazione</Filter>
</ClInclude>
<ClInclude Include="..\Include\EgtLogger.h">
<Filter>File di intestazione</Filter>
</ClInclude>
<ClInclude Include="..\Include\EgtPointerOwner.h">
<Filter>File di intestazione</Filter>
</ClInclude>
<ClInclude Include="..\Include\EGkGeomDB.h">
<Filter>File di intestazione</Filter>
</ClInclude>
<ClInclude Include="TegExecutor.h">
<Filter>File di intestazione</Filter>
</ClInclude>
<ClInclude Include="..\Include\EgtILogger.h">
<Filter>File di intestazione</Filter>
</ClInclude>
<ClInclude Include="resource.h">
<Filter>File di intestazione</Filter>
</ClInclude>
<ClInclude Include="..\Include\EgtIniFile.h">
<Filter>File di intestazione</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="stdafx.cpp">
@@ -83,5 +65,13 @@
<ClCompile Include="TestEGk.cpp">
<Filter>File di origine</Filter>
</ClCompile>
<ClCompile Include="TegExecutor.cpp">
<Filter>File di origine</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="TestEGk.rc">
<Filter>File di risorse</Filter>
</ResourceCompile>
</ItemGroup>
</Project>
BIN
View File
Binary file not shown.