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
This commit is contained in:
@@ -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<65>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<65>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
|
||||
|
||||
|
||||
|
||||
BIN
foxbin2prg.exe
BIN
foxbin2prg.exe
Binary file not shown.
@@ -433,6 +433,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
|
||||
+ [<memberdata name="get_program_header" display="get_PROGRAM_HEADER"/>] ;
|
||||
+ [<memberdata name="getnext_bak" display="getNext_BAK"/>] ;
|
||||
+ [<memberdata name="run_aftercreatetable" display="run_AfterCreateTable"/>] ;
|
||||
+ [<memberdata name="run_aftercreate_db2" display="run_AfterCreate_DB2"/>] ;
|
||||
+ [<memberdata name="lfilemode" display="lFileMode"/>] ;
|
||||
+ [<memberdata name="l_clearuniqueid" display="l_ClearUniqueID"/>] ;
|
||||
+ [<memberdata name="l_configevaluated" display="l_ConfigEvaluated"/>] ;
|
||||
@@ -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<63>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<63>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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user