diff --git a/TESTS/ut__foxbin2prg.prg b/TESTS/ut__foxbin2prg.prg index f8675b2..9bb4e21 100644 --- a/TESTS/ut__foxbin2prg.prg +++ b/TESTS/ut__foxbin2prg.prg @@ -21,6 +21,8 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg icObj = NULL nMouseX = 0 nMouseY = 0 + run_AfterCreate_DB2__Ejecutado = .F. + run_AfterCreateTable__Ejecutado = .F. ******************************************************************************************************************************************* @@ -1415,4 +1417,131 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg ENDFUNC + ******************************************************************************************************************************************* + FUNCTION Deberia_CrearUnArchivo_DB2_DesdeUn_DBF_Y_EjecutarElMetodo__run_AfterCreate_DB2 + LOCAL lnCodError, lnCodError_Esperado ; + , lc_File, lcFileName, lc_OutputFile, lc_OutputFileTx2, lc_OutputFileBak, lcExt2 ; + , lcParent, lcClass, lcObjName, loReg_Esperado ; + , loCtl AS f_optiongroup OF "TESTS\DATOS_READONLY\LIB_CONTROLES.VCX" ; + , loCnv AS c_foxbin2prg OF "FOXBIN2PRG.PRG" ; + , loEx AS EXCEPTION + #IF .F. + PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG' + #ENDIF + + TRY + PUBLIC goFXU AS ut__foxbin2prg OF ut__foxbin2prg.prg + goFXU = THIS + loEx = NULL + loCnv = NEWOBJECT("c_foxbin2prg", "FOXBIN2PRG.PRG") + loCnv.EvaluarConfiguracion( '', '1', '1', '1', '1', '4', '1', '0' ) + *loCnv.l_Test = .T. + loCnv.run_AfterCreate_DB2 = 'run_AfterCreate_DB2__Ejecutado' + THIS.run_AfterCreate_DB2__Ejecutado = .F. + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError, lnCodError_Esperado + + *-- Copio la librería en DATOS_TEST + lcFileName = FORCEPATH( 'FB2P_FREE.DBF', oFXU_LIB.cPathDatosReadOnly ) + lc_File = UPPER(lcFileName) + lcExt2 = loCnv.Get_Ext2FromExt( JUSTEXT( lcFileName ) ) + lc_OutputFile = FORCEPATH( lc_File, oFXU_LIB.cPathDatosTest ) + lc_OutputFileTx2 = FORCEEXT( FORCEPATH( lc_File, oFXU_LIB.cPathDatosTest ), lcExt2 ) + + oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File, '*' ) ) + + *-- Genero TX2 + loCnv.Ejecutar( lc_OutputFile, .F., .F., .F., '1', '0', '1', '', '', .T., '', SYS(5)+CURDIR() ) + + *-- Comparo resultados + THIS.messageout( "Respuesta esperada = .T." ) + THIS.asserttrue( THIS.run_AfterCreate_DB2__Ejecutado, "RESPUESTA DE run_AfterCreate_DB2__Ejecutado" ) + + + CATCH TO loEx + THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado ) + + FINALLY + * USE IN (SELECT("ARCHIVOBIN_IN")) + * USE IN (SELECT("TABLABIN")) + STORE NULL TO loCnv, loCtl, goFXU + RELEASE loCnv, loCtl, goFXU + ENDTRY + + ENDFUNC + + + ******************************************************************************************************************************************* + FUNCTION Deberia_CrearUnArchivo_DBF_DesdeUn_DB2_Y_EjecutarElMetodo__run_AfterCreateTable + LOCAL lnCodError, lnCodError_Esperado ; + , lc_File, lcFileName, lc_OutputFile, lc_OutputFileTx2, lc_OutputFileBak, lcExt2 ; + , lcParent, lcClass, lcObjName, loReg_Esperado ; + , loCtl AS f_optiongroup OF "TESTS\DATOS_READONLY\LIB_CONTROLES.VCX" ; + , loCnv AS c_foxbin2prg OF "FOXBIN2PRG.PRG" ; + , loEx AS EXCEPTION + #IF .F. + PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG' + #ENDIF + + TRY + PUBLIC goFXU AS ut__foxbin2prg OF ut__foxbin2prg.prg + goFXU = THIS + loEx = NULL + loCnv = NEWOBJECT("c_foxbin2prg", "FOXBIN2PRG.PRG") + loCnv.EvaluarConfiguracion( '', '1', '1', '1', '1', '4', '1', '0' ) + *loCnv.l_Test = .T. + loCnv.DBF_Conversion_Support = 2 + loCnv.run_AfterCreateTable = 'run_AfterCreateTable__Ejecutado' + THIS.run_AfterCreateTable__Ejecutado = .F. + + + *-- DATOS DE ENTRADA + STORE 0 TO lnCodError, lnCodError_Esperado + + *-- Copio la librería en DATOS_TEST + lcFileName = FORCEPATH( 'FB2P_FREE.DB2', oFXU_LIB.cPathDatosReadOnly ) + lc_File = UPPER(lcFileName) + lcExt2 = loCnv.Get_Ext2FromExt( JUSTEXT( lcFileName ) ) + lc_OutputFile = FORCEPATH( lc_File, oFXU_LIB.cPathDatosTest ) + lc_OutputFileTx2 = FORCEEXT( FORCEPATH( lc_File, oFXU_LIB.cPathDatosTest ), lcExt2 ) + + oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File, '*' ) ) + + *-- Genero TX2 + loCnv.Ejecutar( lc_OutputFile, .F., .F., .F., '1', '0', '1', '', '', .T., '', SYS(5)+CURDIR() ) + + *-- Comparo resultados + THIS.messageout( "Respuesta esperada = .T." ) + THIS.asserttrue( THIS.run_AfterCreateTable__Ejecutado, "RESPUESTA DE run_AfterCreateTable__Ejecutado" ) + + + CATCH TO loEx + THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado ) + + FINALLY + * USE IN (SELECT("ARCHIVOBIN_IN")) + * USE IN (SELECT("TABLABIN")) + STORE NULL TO loCnv, loCtl, goFXU + RELEASE loCnv, loCtl, goFXU + ENDTRY + + ENDFUNC + + ENDDEFINE + + +PROCEDURE run_AfterCreate_DB2__Ejecutado + LPARAMETERS tnDataSession, tcOutputFile, toTable + goFXU.run_AfterCreate_DB2__Ejecutado = .T. +ENDPROC + + +PROCEDURE run_AfterCreateTable__Ejecutado + LPARAMETERS tnDataSession, tcOutputFile, toTable + goFXU.run_AfterCreateTable__Ejecutado = .T. +ENDPROC + + diff --git a/foxbin2prg.exe b/foxbin2prg.exe index afe3773..6cc66c6 100644 Binary files a/foxbin2prg.exe and b/foxbin2prg.exe differ diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 77fcbdd..e8facfb 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -433,6 +433,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -505,6 +506,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM o_Frm_Avance = NULL o_FSO = NULL run_AfterCreateTable = '' + run_AfterCreate_DB2 = '' c_VC2 = 'VC2' && VCX c_SC2 = 'SC2' && SCX c_PJ2 = 'PJ2' && PJX @@ -2413,8 +2415,8 @@ DEFINE CLASS c_conversor_base AS SESSION lnResto = lnResto % 2**5 lnSeconds = lnResto - lcTimeStamp = STR(lnYear,4) + "/" + STR(lnMonth,2) + "/" + STR(lnDay,2) + " " ; - + STR(lnHour,2) + ":" + STR(lnMinutes,2) + ":" + STR(lnSeconds,2) + lcTimeStamp = PADL(lnYear,4,'0') + "/" + PADL(lnMonth,2,'0') + "/" + PADL(lnDay,2,'0') + " " ; + + PADL(lnHour,2,'0') + ":" + PADL(lnMinutes,2,'0') + ":" + PADL(lnSeconds,2,'0') ltTimeStamp = EVALUATE( "{^" + lcTimeStamp + "}" ) @@ -7196,6 +7198,7 @@ DEFINE CLASS c_conversor_prg_a_dbf AS c_conversor_prg_a_bin lcCreateTable = lcCreateTable + SUBSTR(lcFieldDef,3) + ')' &lcCreateTable. + *-- Hook para permitir ejecución externa (por ejemplo, para rellenar la tabla con datos) IF NOT EMPTY(toFoxBin2Prg.run_AfterCreateTable) lnSelect = SELECT() DO (toFoxBin2Prg.run_AfterCreateTable) WITH (lnDataSessionID), (.c_OutputFile), (toTable) @@ -10708,7 +10711,7 @@ DEFINE CLASS c_conversor_dbf_a_prg AS c_conversor_bin_a_prg TRY LOCAL lnCodError, laDatabases(1), lnDatabases_Count, laDatabases2(1), lnLen, lc_FileTypeDesc ; - , ln_HexFileType, ll_FileHasCDX, ll_FileHasMemo, ll_FileIsDBC, lc_DBC_Name ; + , ln_HexFileType, ll_FileHasCDX, ll_FileHasMemo, ll_FileIsDBC, lc_DBC_Name, lnDataSessionID, lnSelect ; , loTable AS CL_DBF_TABLE OF 'FOXBIN2PRG.PRG' ; , loDBFUtils AS CL_DBF_UTILS OF 'FOXBIN2PRG.PRG' STORE NULL TO loTable, loDBFUtils @@ -10721,6 +10724,7 @@ DEFINE CLASS c_conversor_dbf_a_prg AS c_conversor_bin_a_prg lnDatabases_Count = ADATABASES(laDatabases) USE (.c_InputFile) SHARED AGAIN NOUPDATE ALIAS TABLABIN + lnDataSessionID = .DATASESSIONID C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxBin2Prg.get_PROGRAM_HEADER() @@ -10745,6 +10749,15 @@ DEFINE CLASS c_conversor_dbf_a_prg AS c_conversor_bin_a_prg ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC)) ENDCASE ENDIF + + *-- Hook para permitir ejecución externa (por ejemplo, para exportar datos) + IF NOT EMPTY(toFoxBin2Prg.run_AfterCreate_DB2) + lnSelect = SELECT() + DO (toFoxBin2Prg.run_AfterCreate_DB2) WITH (lnDataSessionID), (.c_OutputFile), (loTable) + SET DATASESSION TO (lnDataSessionID) && Por las dudas externamente se cambie + SELECT (lnSelect) + ENDIF + ENDWITH && THIS @@ -10788,7 +10801,7 @@ DEFINE CLASS c_conversor_dbf_a_prg AS c_conversor_bin_a_prg STORE NULL TO loTable, loDBFUtils RELEASE lnCodError, laDatabases, lnDatabases_Count, laDatabases2, lnLen, lc_FileTypeDesc ; - , ln_HexFileType, ll_FileHasCDX, ll_FileHasMemo, ll_FileIsDBC, lc_DBC_Name ; + , ln_HexFileType, ll_FileHasCDX, ll_FileHasMemo, ll_FileIsDBC, lc_DBC_Name, lnDataSessionID, lnSelect ; , loTable, loDBFUtils ENDTRY