From bcd97595ab2b1b02d727217026bda4e2987b087d Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sun, 15 Jun 2014 17:49:33 +0200 Subject: [PATCH] Changeset: 296 fdbozzo - 15/06/2014 16:40:43: - Nuevo evento "run_aftercreate_db2" que permite ejecutar un programa externo cuando se usa FoxBin2Prg como objeto (por ejemplo, para exportar los datos) - Nuevos tests unitarios para comprobar la nueva funcionalidad --- TESTS/ut__foxbin2prg.prg | 129 +++++++++++++++++++++++++++++++++++++++ foxbin2prg.exe | Bin 424432 -> 424765 bytes foxbin2prg.prg | 17 +++++- 3 files changed, 144 insertions(+), 2 deletions(-) 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 afe3773b2bbd7cbf4644f162515cc8cdf1625ce4..6cc66c6cbc52a3207d70310b1789ac690b494af7 100644 GIT binary patch delta 13100 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 delta 12785 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 I(~2tn4>ZkJ0ssI2 diff --git a/foxbin2prg.prg b/foxbin2prg.prg index b410c83..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 @@ -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