From e6ffd7396a21d6d93a915dfa2c67a95dd29e3e05 Mon Sep 17 00:00:00 2001 From: fernando Date: Tue, 17 Dec 2013 19:10:44 +0100 Subject: [PATCH] Changeset: 94 Cambios oficina --- TESTS/DATOS_READONLY/eventsfile.prg | 2 + TESTS/DATOS_READONLY/fb2p_dbc.dbc | Bin 6657 -> 7647 bytes TESTS/DATOS_READONLY/fb2p_dbc.dct | Bin 27968 -> 29120 bytes TESTS/DATOS_READONLY/fb2p_dbc.dcx | Bin 5632 -> 5632 bytes foxbin2prg.prg | 475 ++++++++++++++++------------ 5 files changed, 283 insertions(+), 194 deletions(-) create mode 100644 TESTS/DATOS_READONLY/eventsfile.prg diff --git a/TESTS/DATOS_READONLY/eventsfile.prg b/TESTS/DATOS_READONLY/eventsfile.prg new file mode 100644 index 0000000..d9c245e --- /dev/null +++ b/TESTS/DATOS_READONLY/eventsfile.prg @@ -0,0 +1,2 @@ +LPARAMETERS p1, p2, p3, p4, p5 +RETURN diff --git a/TESTS/DATOS_READONLY/fb2p_dbc.dbc b/TESTS/DATOS_READONLY/fb2p_dbc.dbc index c72c78c6dc236ac7bfec11282bef7b53c88a5fbf..1fe1b2de5bee1ad3716f641527b9f0bce05f01da 100644 GIT binary patch delta 343 zcmZoPxo^#Cz{?}3y^-}RAJcxu&42hBStkGD6P`RlcoNe##?2}scUk2W)EF2T7=bt} zGqqd+49d#m^NSMWQ%VzaCM&X)YMlqlf&fGo%u)xEAdPOBsW~ZN@s!fs+{(!tIjT*! zf=mMfB;^`FE>=5|^YhA5^D^^`fff}Q90%(|(Wwa(0_jFrl$jC_(*<(fuO-{e|h;my4K1uT=BWrQbB5T3+znqjkw$X!+d?JW!` diff --git a/TESTS/DATOS_READONLY/fb2p_dbc.dct b/TESTS/DATOS_READONLY/fb2p_dbc.dct index 078324e3061dcad1353b30351bd34711b24d2ee1..8bb3886a7a9330c06a99a94e80c57ce44372eed5 100644 GIT binary patch delta 797 zcmX?bi}Ao?Mh*rB#^VeO3=SIwKQT^J;M~m2bVOsayI~rm!sc~`5{woM=0GJ3j0|cF z5L%Z}8q8OA_V){O_4D)(*7NWT4)G82boOW90ZaKhYZz*7uG8UUVvL;Jq30|r1{Mxa zElbTSDNf7GN!2STN}njGyqQ_wnQ3yHsh|;~EV`kdF7YrM75v zaLY{1Ndfcn@^h1lQsa~J^U6~5CLiP~W&x_!n(V-R$chJ~2W+MpKxVD9OarKrCK6|8wJf69Z*cp%+E}LT9TQMY=1^( zaY=qrW^%r<1;SA&rMbD4laKSt*=8gbmn5der=%9Aq?RS-lqM!;=I6ouVT7b5H7_wK zCpCqQK_2X42B70PC-d^@uxf}Fs7X(@;4|k0dI16^Pvl!GoKl*YQy!mRln8fL@nk#x zOPrvv!_l delta 313 zcmZqBY0%jqz$U25z`y{)`+*n)gf=U({by!Ri%&@{PD!0?$dy0Yfs0ESD5J!{z{j8f z1x6NbnW;G`U|wl)X<|`kK1?kOP_61@2kt|vtRNi>|AAluYFuFmF$V<#kEy#|~O)be!$(zN)D#Nv`fHU1Kn3R*6GP#a#?PNRt xOPnCTa|3bZW=VmU%-pJA(?Cx4oy;quIN3' #DEFINE C_DATABASE_F '' +#DEFINE C_STORED_PROC_I '' #DEFINE C_TABLE_I '' #DEFINE C_TABLE_F '
' #DEFINE C_TABLES_I '' @@ -217,8 +219,10 @@ LPARAMETERS tc_InputFile, tcType_na, tcTextName_na, tlGenText_na, tcDontShowErro #DEFINE SERVERINSTANCE_MULTIUSE 3 && Multi-use server *-- Fin / End +******************************************************************************************************************* *-- INTERNACIONALIZACIÓN / INTERNATIONALIZATION -#IF VERSION(3) == "34" && Español (Spanish) +******************************************************************************************************************* +#IF .T. &&VERSION(3) == "34" && Español (Spanish) [NO FUNCIONA MÁS ESTO :( ] #DEFINE C_FOXBIN2PRG_JUST_VFP_9_LOC '¡FOXBIN2PRG es solo para Visual FoxPro 9.0!' #DEFINE C_FOXBIN2PRG_WARN_CAPTION_LOC 'FOXBIN2PRG: ¡ATENCIÓN!' #DEFINE FOXBIN2PRG_INFO_SINTAX_LOC 'FOXBIN2PRG [cType_ND cTextName_ND cGenText_ND cNoMostrarErrores cDebug]' + CR_LF + CR_LF ; @@ -259,143 +263,12 @@ LPARAMETERS tc_InputFile, tcType_na, tcTextName_na, tlGenText_na, tcDontShowErro #DEFINE C_BACKLINK_OF_TABLE_LOC 'of table' #ENDIF -*-- +******************************************************************************************************************* -TRY - LOCAL lcSys16, I, lcPath, lnResp, lcFileSpec, lcFile, laFiles(1,5), laConfig(1), lcConfigFile, lcExt ; - , llExisteConfig, llShowProgress, lcConfData, lnFileCount ; - , loEx AS EXCEPTION - - PUBLIC goFrm_Avance AS frm_avance OF 'FOXBIN2PRG.PRG' ; - , goCnv AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' - lnResp = 0 - - SET DELETED ON - SET DATE YMD - SET HOURS TO 24 - SET CENTURY ON - SET SAFETY OFF - SET TABLEPROMPT OFF - - IF _VFP.STARTMODE > 0 - SET ESCAPE OFF - ENDIF - - DO CASE - CASE VERSION(5) < 900 - lnResp = 1 - MESSAGEBOX( C_FOXBIN2PRG_JUST_VFP_9_LOC, 0+64+4096, C_FOXBIN2PRG_WARN_CAPTION_LOC, 60000 ) - - CASE EMPTY(tc_InputFile) - lnResp = 1 - MESSAGEBOX( FOXBIN2PRG_INFO_SINTAX_LOC, 0+64+4096, 'FOXBIN2PRG: SINTAXIS INFO', 60000 ) - - OTHERWISE - lcSys16 = SYS(16) - lcPath = SET("Path") - *SET PATH TO (JUSTPATH(lcSys16)) - SET PATH TO - llShowProgress = NOT (TRANSFORM(tcDontShowProgress)=='1') - goCnv = CREATEOBJECT("c_foxbin2prg") - goCnv.l_Debug = (TRANSFORM(tcDebug)=='1') - goCnv.l_ShowErrors = NOT (TRANSFORM(tcDontShowErrors) == '1') - - IF llShowProgress - goFrm_Avance = CREATEOBJECT("frm_avance") - ENDIF - - *-- Configuración - lcConfigFile = FORCEEXT( lcSys16, 'CFG' ) - llExisteConfig = FILE( lcConfigFile ) - - IF llExisteConfig - FOR I = 1 TO ALINES( laConfig, FILETOSTR( lcConfigFile ), 1+4 ) - IF LOWER( LEFT( laConfig(I), 10 ) ) == 'extension:' - lcConfData = ALLTRIM( SUBSTR( laConfig(I), 11 ) ) - lcExt = 'c_' + ALLTRIM( GETWORDNUM( lcConfData, 1, '=' ) ) - IF PEMSTATUS( goCnv, lcExt, 5 ) - goCnv.ADDPROPERTY( lcExt, UPPER( ALLTRIM( GETWORDNUM( lcConfData, 2, '=' ) ) ) ) - ENDIF - ENDIF - ENDFOR - ENDIF - - - *-- Evaluación de FileSpec de entrada - DO CASE - CASE '*' $ JUSTEXT( tc_InputFile ) OR '?' $ JUSTEXT( tc_InputFile ) - MESSAGEBOX( ASTERISK_EXT_NOT_ALLOWED_LOC, 0+48+4096, 'FOXBIN2PRG: ERROR!!', 10000 ) - - CASE '*' $ JUSTSTEM( tc_InputFile ) - *-- Se quieren todos los archivos de una extensión - lcFileSpec = FULLPATH( tc_InputFile ) - CD (JUSTPATH(lcFileSpec)) - goCnv.c_LogFile = ADDBS( JUSTPATH( lcFileSpec ) ) + STRTRAN( JUSTFNAME( lcFileSpec ), '*', '_ALL' ) + '.LOG' - - IF goCnv.l_Debug - IF FILE( goCnv.c_LogFile ) - ERASE ( goCnv.c_LogFile ) - ENDIF - goCnv.writeLog( lcSys16 + ' - FileSpec: ' + EVL(tc_InputFile,'') ) - IF llExisteConfig - goCnv.writeLog( 'ConfigFile: ' + lcConfigFile ) - ENDIF - ENDIF - - lnFileCount = ADIR( laFiles, lcFileSpec ) - - IF llShowProgress - goFrm_Avance.nMAX_VALUE = lnFileCount - ENDIF - - FOR I = 1 TO lnFileCount - lcFile = FORCEPATH( laFiles(I,1), JUSTPATH( lcFileSpec ) ) - goFrm_Avance.lbl_TAREA.CAPTION = C_PROCESSING_LOC + lcFile + '...' - goFrm_Avance.nVALUE = I - - IF llShowProgress - goFrm_Avance.SHOW() - ENDIF - - IF FILE( lcFile ) - lnResp = goCnv.Convertir( lcFile ) - ENDIF - ENDFOR - - OTHERWISE - *-- Un archivo individual - IF FILE(tc_InputFile) - CD (JUSTPATH(tc_InputFile)) - goCnv.c_LogFile = tc_InputFile + '.LOG' - - IF goCnv.l_Debug - IF FILE( goCnv.c_LogFile ) - ERASE ( goCnv.c_LogFile ) - ENDIF - goCnv.writeLog( lcSys16 + ' - FileSpec: ' + EVL(tc_InputFile,'') ) - ENDIF - - lnResp = goCnv.Convertir( tc_InputFile ) - ENDIF - ENDCASE - - ENDCASE - -CATCH TO loEx - IF llExisteConfig - goCnv.writeLog( 'ERROR: ' + TRANSFORM(loEx.ERRORNO) + ', ' + loEx.MESSAGE + CR_LF ; - + loEx.PROCEDURE + ', line ' + TRANSFORM(loEx.LINENO) + CR_LF ; - + loEx.DETAILS ) - ENDIF - -FINALLY - goFrm_Avance.HIDE() - goFrm_Avance.RELEASE() - STORE NULL TO goCnv, goFrm_Avance - RELEASE goCnv, goFrm_Avance - CD (JUSTPATH(lcSys16)) - SET PATH TO (lcPath) -ENDTRY +PUBLIC goCnv AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' +LOCAL lnResp +goCnv = CREATEOBJECT("c_foxbin2prg") +lnResp = goCnv.ejecutar( tc_InputFile, tcType_na, tcTextName_na, tlGenText_na, tcDontShowErrors, tcDebug, tcDontShowProgress ) IF _VFP.STARTMODE > 0 QUIT @@ -411,45 +284,55 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM #ENDIF _MEMBERDATA = [] ; + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; - + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; - + [] ; - + [] ; - + [] ; - + [] ; + + [] ; + + [] ; + + [] ; + [] ; + [] ; - + [] ; - + [] ; - + [] ; - + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + [] ; + + [] ; + + [] ; + + [] ; + [] + *-- + n_FB2PRG_Version = 1.15 + *-- + c_Foxbin2prg_FullPath = '' c_CurDir = '' c_InputFile = '' c_LogFile = '' c_OutputFile = '' + lFileMode = .F. l_Debug = .F. l_Test = .F. l_ShowErrors = .F. + l_ShowProgress = .T. l_MethodSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias l_PropSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias l_ReportSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias - lFileMode = .F. nClassTimeStamp = '' - n_FB2PRG_Version = 1.15 o_Conversor = NULL + o_Frm_Avance = NULL c_VC2 = 'VC2' c_SC2 = 'SC2' c_PJ2 = 'PJ2' @@ -461,7 +344,6 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM c_DC2 = 'DC2' - ******************************************************************************************************************* PROCEDURE INIT SET DELETED ON SET DATE YMD @@ -469,10 +351,11 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM SET CENTURY ON SET SAFETY OFF SET TABLEPROMPT OFF + THIS.c_Foxbin2prg_FullPath = SUBSTR( SYS(16), AT( 'C_FOXBIN2PRG.INIT', SYS(16) ) + LEN('C_FOXBIN2PRG.INIT') + 1 ) + THIS.c_CurDir = SYS(5) + CURDIR() ENDPROC - ******************************************************************************************************************* PROCEDURE DESTROY TRY LOCAL lcFileCDX @@ -486,7 +369,142 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDPROC - ******************************************************************************************************************* + PROCEDURE Ejecutar + LPARAMETERS tc_InputFile, tcType_na, tcTextName_na, tlGenText_na, tcDontShowErrors, tcDebug, tcDontShowProgress + + TRY + LOCAL I, lcPath, lnResp, lcFileSpec, lcFile, laFiles(1,5), laConfig(1), lcConfigFile, lcExt ; + , llExisteConfig, lcConfData, lnFileCount ; + , loEx AS EXCEPTION + + lnResp = 0 + + SET DELETED ON + SET DATE YMD + SET HOURS TO 24 + SET CENTURY ON + SET SAFETY OFF + SET TABLEPROMPT OFF + + IF _VFP.STARTMODE > 0 + SET ESCAPE OFF + ENDIF + + DO CASE + CASE VERSION(5) < 900 + *-- '¡FOXBIN2PRG es solo para Visual FoxPro 9.0!' + MESSAGEBOX( C_FOXBIN2PRG_JUST_VFP_9_LOC, 0+64+4096, C_FOXBIN2PRG_WARN_CAPTION_LOC, 60000 ) + lnResp = 1 + + CASE EMPTY(tc_InputFile) + *-- (Ejemplo de sintaxis y uso) + MESSAGEBOX( FOXBIN2PRG_INFO_SINTAX_LOC, 0+64+4096, 'FOXBIN2PRG: SINTAXIS INFO', 60000 ) + lnResp = 1 + + OTHERWISE + *-- Ejecución normal + THIS.l_ShowProgress = NOT (TRANSFORM(tcDontShowProgress)=='1') + THIS.l_ShowErrors = NOT (TRANSFORM(tcDontShowErrors) == '1') + THIS.l_Debug = (TRANSFORM(tcDebug)=='1') + + IF THIS.l_ShowProgress + THIS.o_Frm_Avance = CREATEOBJECT("frm_avance") + ENDIF + + *-- Configuración + lcConfigFile = FORCEEXT( THIS.c_Foxbin2prg_FullPath, 'CFG' ) + llExisteConfig = FILE( lcConfigFile ) + + IF llExisteConfig + FOR I = 1 TO ALINES( laConfig, FILETOSTR( lcConfigFile ), 1+4 ) + IF LOWER( LEFT( laConfig(I), 10 ) ) == 'extension:' + lcConfData = ALLTRIM( SUBSTR( laConfig(I), 11 ) ) + lcExt = 'c_' + ALLTRIM( GETWORDNUM( lcConfData, 1, '=' ) ) + IF PEMSTATUS( THIS, lcExt, 5 ) + THIS.ADDPROPERTY( lcExt, UPPER( ALLTRIM( GETWORDNUM( lcConfData, 2, '=' ) ) ) ) + ENDIF + ENDIF + ENDFOR + ENDIF + + + *-- Evaluación de FileSpec de entrada + DO CASE + CASE '*' $ JUSTEXT( tc_InputFile ) OR '?' $ JUSTEXT( tc_InputFile ) + MESSAGEBOX( ASTERISK_EXT_NOT_ALLOWED_LOC, 0+48+4096, 'FOXBIN2PRG: ERROR!!', 10000 ) + + CASE '*' $ JUSTSTEM( tc_InputFile ) + *-- Se quieren todos los archivos de una extensión + lcFileSpec = FULLPATH( tc_InputFile ) + CD (JUSTPATH(lcFileSpec)) + THIS.c_LogFile = ADDBS( JUSTPATH( lcFileSpec ) ) + STRTRAN( JUSTFNAME( lcFileSpec ), '*', '_ALL' ) + '.LOG' + + IF THIS.l_Debug + IF FILE( THIS.c_LogFile ) + ERASE ( THIS.c_LogFile ) + ENDIF + THIS.writeLog( THIS.c_Foxbin2prg_FullPath + ' - FileSpec: ' + EVL(tc_InputFile,'') ) + IF llExisteConfig + THIS.writeLog( 'ConfigFile: ' + lcConfigFile ) + ENDIF + ENDIF + + lnFileCount = ADIR( laFiles, lcFileSpec ) + + IF THIS.l_ShowProgress + THIS.o_Frm_Avance.nMAX_VALUE = lnFileCount + ENDIF + + FOR I = 1 TO lnFileCount + lcFile = FORCEPATH( laFiles(I,1), JUSTPATH( lcFileSpec ) ) + THIS.o_Frm_Avance.lbl_TAREA.CAPTION = C_PROCESSING_LOC + lcFile + '...' + THIS.o_Frm_Avance.nVALUE = I + + IF THIS.l_ShowProgress + THIS.o_Frm_Avance.SHOW() + ENDIF + + IF FILE( lcFile ) + lnResp = THIS.Convertir( lcFile ) + ENDIF + ENDFOR + + OTHERWISE + *-- Un archivo individual + IF FILE(tc_InputFile) + CD (JUSTPATH(tc_InputFile)) + THIS.c_LogFile = tc_InputFile + '.LOG' + + IF THIS.l_Debug + IF FILE( THIS.c_LogFile ) + ERASE ( THIS.c_LogFile ) + ENDIF + THIS.writeLog( THIS.c_Foxbin2prg_FullPath + ' - FileSpec: ' + EVL(tc_InputFile,'') ) + ENDIF + + lnResp = THIS.Convertir( tc_InputFile ) + ENDIF + ENDCASE + + ENDCASE + + CATCH TO loEx + IF llExisteConfig + THIS.writeLog( 'ERROR: ' + TRANSFORM(loEx.ERRORNO) + ', ' + loEx.MESSAGE + CR_LF ; + + loEx.PROCEDURE + ', line ' + TRANSFORM(loEx.LINENO) + CR_LF ; + + loEx.DETAILS ) + ENDIF + + FINALLY + THIS.o_Frm_Avance.HIDE() + THIS.o_Frm_Avance.RELEASE() + STORE NULL TO THIS.o_Frm_Avance + CD (JUSTPATH(THIS.c_CurDir)) + *SET PATH TO (lcPath) + ENDTRY + ENDPROC + + PROCEDURE Convertir LPARAMETERS tc_InputFile, toModulo, toEx AS EXCEPTION, tlRelanzarError @@ -494,7 +512,6 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM LOCAL lnCodError, lcErrorInfo lnCodError = 0 THIS.c_InputFile = FULLPATH( tc_InputFile ) - THIS.c_CurDir = JUSTPATH( THIS.c_InputFile ) THIS.o_Conversor = NULL IF NOT FILE(THIS.c_InputFile) @@ -9049,6 +9066,10 @@ DEFINE CLASS CL_DBC_BASE AS CL_CUS_BASE LOCAL lnPropertyID, tcDataType, leValue, llRetorno, lnDataLen lnPropertyID = THIS.getDBCPropertyIDByName( SUBSTR(tcPropertyName,2) ) + *IF LOWER(tcPropertyName) = '_displogin' + * SET STEP ON + *ENDIF + IF lnPropertyID = -1 IF PCOUNT()=1 llRetorno = THIS.AddProperty( tcPropertyName ) @@ -9067,7 +9088,7 @@ DEFINE CLASS CL_DBC_BASE AS CL_CUS_BASE leValue = CAST( teValue AS (tcDataType) ) ENDIF - CASE tcDataType = 'N' + CASE INLIST(tcDataType, 'N', 'B') IF lnDataLen = 0 leValue = 0 ELSE @@ -9214,6 +9235,8 @@ DEFINE CLASS CL_DBC_BASE AS CL_CUS_BASE lnPropertyID = 77 CASE tcPropertyName == 'packetsize' && Undocumented lnPropertyID = 78 + CASE tcPropertyName == 'database' && Undocumented + lnPropertyID = 79 CASE tcPropertyName == 'prepared' && Undocumented lnPropertyID = 80 CASE tcPropertyName == 'comparememo' && Undocumented @@ -9228,8 +9251,8 @@ DEFINE CLASS CL_DBC_BASE AS CL_CUS_BASE lnPropertyID = 85 CASE tcPropertyName == 'dbcevents' && Undocumented lnPropertyID = 86 - CASE tcPropertyName == 'dbceventfile' && Undocumented - lnPropertyID = 88 + CASE tcPropertyName == 'dbceventfilename' && Undocumented + lnPropertyID = 87 CASE tcPropertyName == 'allowsimultaneousfetch' && Undocumented lnPropertyID = 88 CASE tcPropertyName == 'disconnectrollback' && Undocumented @@ -9256,13 +9279,13 @@ DEFINE CLASS CL_DBC_BASE AS CL_CUS_BASE lcValueType = '' DO CASE - CASE INLIST(tnPropertyID,2) + CASE INLIST(tnPropertyID,2,41,46,48,68,73) lcValueType = 'B' && Byte - CASE INLIST(tnPropertyID,36,38,40,44,45,64,65,69,80,81,82,83,88,89) + CASE INLIST(tnPropertyID,17,36,38,40,44,45,64,65,69,80,81,82,83,86,88,89) lcValueType = 'L' - CASE INLIST(tnPropertyID,17,24,28,37,39,41,46,47,48,67,68,70,71,73,75,76,78,84,85) + CASE INLIST(tnPropertyID,24,28,37,39,47,67,70,71,75,76,78,84,85) lcValueType = 'N' OTHERWISE @@ -9408,7 +9431,8 @@ DEFINE CLASS CL_DBC_BASE AS CL_CUS_BASE LOCAL lcBinRecord, lnLen, lcDataType lcBinRecord = '' - lcDataType = IIF( tnPropertyID = 2, 'B', VARTYPE(teData) ) + *lcDataType = IIF( tnPropertyID = 2, 'B', VARTYPE(teData) ) + lcDataType = THIS.getDBCPropertyValueTypeByPropertyID( tnPropertyID ) DO CASE CASE lcDataType = 'B' @@ -9427,7 +9451,9 @@ DEFINE CLASS CL_DBC_BASE AS CL_CUS_BASE lcBinRecord = BINTOC( lnLen, "4RS" ) + BINTOC( 1, "2RS" ) + CHR(tnPropertyID) + teData OTHERWISE && Asume 'C' - teData = teData + IF EMPTY(teData) + EXIT + ENDIF lnLen = 4 + 2 + 1 + LEN(teData) + 1 lcBinRecord = BINTOC( lnLen, "4RS" ) + BINTOC( 1, "2RS" ) + CHR(tnPropertyID) + teData + CHR(0) @@ -9577,6 +9603,7 @@ DEFINE CLASS CL_DBC AS CL_DBC_BASE #ENDIF _MEMBERDATA = [] ; + + [] ; + [] ; + [] ; + [] ; @@ -9586,6 +9613,7 @@ DEFINE CLASS CL_DBC AS CL_DBC_BASE + [] ; + [] ; + [] ; + + [] ; + [] ; + [] @@ -9600,12 +9628,7 @@ DEFINE CLASS CL_DBC AS CL_DBC_BASE _Version = 0 _DBCEvents = .F. _DBCEventFilename = '' - - *-- Sub-objects - *_Connections = NULL - *_Tables = NULL - *_Views = NULL - *_Relations = NULL + _StoredProcedures = '' PROCEDURE INIT @@ -9660,6 +9683,9 @@ DEFINE CLASS CL_DBC AS CL_DBC_BASE loViews = THIS._Views loViews.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines ) + CASE C_STORED_PROC_I $ tcLine + THIS.analizarBloque_SP( @tcLine, @taCodeLines, @I, tnCodeLines ) + OTHERWISE && Otro valor *-- Estructura a reconocer: * ID @@ -9687,6 +9713,38 @@ DEFINE CLASS CL_DBC AS CL_DBC_BASE ENDPROC + PROCEDURE analizarBloque_SP + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * tcLine (@! IN/OUT) Contenido de la línea en análisis + * taCodeLines (@! IN ) Array de líneas del programa analizado + * I (@! IN/OUT) Número de línea en análisis + * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + *--------------------------------------------------------------------------------------------------- + LPARAMETERS tcLine, taCodeLines, I, tnCodeLines + + IF LEFT(tcLine, LEN(C_STORED_PROC_I)) == C_STORED_PROC_I + LOCAL lcValue + lcValue = '' + llBloqueEncontrado = .T. + + FOR I = I + 1 TO tnCodeLines + THIS.set_Line( @tcLine, @taCodeLines, I ) + + DO CASE + CASE C_STORED_PROC_F $ tcLine && Fin + EXIT + + OTHERWISE && Línea de Stored Procedure + lcValue = lcValue + CR_LF + taCodeLines(I) + ENDCASE + ENDFOR + + THIS.AddProperty( '_StoredProcedures', SUBSTR(lcValue,3) ) + ENDIF + ENDPROC + + PROCEDURE updateDBC *--------------------------------------------------------------------------------------------------- * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) @@ -9713,6 +9771,17 @@ DEFINE CLASS CL_DBC AS CL_DBC_BASE THIS.setNextID(0) tnParentID = THIS.__ObjectID + lcMemoWithProperties = THIS.getBinMemoFromProperties() + UPDATE TABLABIN ; + SET Property = lcMemoWithProperties ; + WHERE STR(ParentID) + ObjectType + LOWER(ObjectName) = STR(1) + PADR('Database',10) + PADR(LOWER('Database'),128) + + IF NOT EMPTY(THIS._StoredProcedures) + UPDATE TABLABIN ; + SET Code = THIS._StoredProcedures ; + WHERE STR(ParentID) + ObjectType + LOWER(ObjectName) = STR(1) + PADR('Database',10) + PADR(LOWER('StoredProceduresSource'),128) + ENDIF + loTables.updateDBC( tc_OutputFile, @tnLastID, tnParentID ) loViews.updateDBC( tc_OutputFile, @tnLastID, tnParentID ) loConnections.updateDBC( tc_OutputFile, @tnLastID, tnParentID ) @@ -9738,7 +9807,7 @@ DEFINE CLASS CL_DBC AS CL_DBC_BASE ******************************************************************************************************************* PROCEDURE toText TRY - LOCAL I, lcText, lcDBC, loEx AS EXCEPTION + LOCAL I, lcText, lcDBC, laCode(1,1), loEx AS EXCEPTION LOCAL loConnections AS CL_DBC_CONNECTIONS OF 'FOXBIN2PRG.PRG' LOCAL loTables AS CL_DBC_TABLES OF 'FOXBIN2PRG.PRG' LOCAL loViews AS CL_DBC_VIEWS OF 'FOXBIN2PRG.PRG' @@ -9767,10 +9836,19 @@ DEFINE CLASS CL_DBC AS CL_DBC_BASE *-- Views loViews = THIS._Views lcText = lcText + loViews.toText() + + SELECT Code ; + FROM TABLABIN ; + WHERE STR(ParentID) + ObjectType + LOWER(ObjectName) = STR(1) + PADR('Database',10) + PADR(LOWER('StoredProceduresSource'),128) ; + INTO ARRAY laCode + THIS._StoredProcedures = laCode(1,1) TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <<>> + <<>> <> + <> + <<>> <> + ENDTEXT @@ -9787,6 +9865,21 @@ DEFINE CLASS CL_DBC AS CL_DBC_BASE ENDPROC + PROCEDURE getBinMemoFromProperties + LOCAL lcBinData + lcBinData = '' + + WITH THIS AS CL_DBC OF 'FOXBIN2PRG.PRG' + lcBinData = lcBinData + .getBinPropertyDataRecord( ._Version, .getDBCPropertyIDByName('Version', .T.) ) + lcBinData = lcBinData + .getBinPropertyDataRecord( ._Comment, .getDBCPropertyIDByName('Comment', .T.) ) + lcBinData = lcBinData + .getBinPropertyDataRecord( ._DBCEvents, .getDBCPropertyIDByName('DBCEvents', .T.) ) + lcBinData = lcBinData + .getBinPropertyDataRecord( ._DBCEventFilename, .getDBCPropertyIDByName('DBCEventFilename', .T.) ) + ENDWITH && THIS + + RETURN lcBinData + ENDPROC + + ENDDEFINE @@ -10061,21 +10154,23 @@ DEFINE CLASS CL_DBC_CONNECTION AS CL_DBC_BASE lcBinData = '' WITH THIS AS CL_DBC_CONNECTION OF 'FOXBIN2PRG.PRG' - lcBinData = lcBinData + .getBinPropertyDataRecord( ._Comment, .getDBCPropertyIDByName('Comment', .T.) ) - lcBinData = lcBinData + .getBinPropertyDataRecord( ._DataSource, .getDBCPropertyIDByName('DataSource', .T.) ) lcBinData = lcBinData + .getBinPropertyDataRecord( ._Asynchronous, .getDBCPropertyIDByName('Asynchronous', .T.) ) lcBinData = lcBinData + .getBinPropertyDataRecord( ._BatchMode, .getDBCPropertyIDByName('BatchMode', .T.) ) - lcBinData = lcBinData + .getBinPropertyDataRecord( ._ConnectString, .getDBCPropertyIDByName('ConnectString', .T.) ) - lcBinData = lcBinData + .getBinPropertyDataRecord( ._ConnectTimeout , .getDBCPropertyIDByName('ConnectTimeout', .T.) ) - lcBinData = lcBinData + .getBinPropertyDataRecord( ._DispLogin, .getDBCPropertyIDByName('DispLogin', .T.) ) lcBinData = lcBinData + .getBinPropertyDataRecord( ._DispWarnings, .getDBCPropertyIDByName('DispWarnings') ) - lcBinData = lcBinData + .getBinPropertyDataRecord( ._IdleTimeout, .getDBCPropertyIDByName('IdleTimeout', .T.) ) - lcBinData = lcBinData + .getBinPropertyDataRecord( ._QueryTimeout, .getDBCPropertyIDByName('QueryTimeout', .T.) ) - lcBinData = lcBinData + .getBinPropertyDataRecord( ._PassWord, .getDBCPropertyIDByName('PassWord', .T.) ) + lcBinData = lcBinData + .getBinPropertyDataRecord( ._DispLogin, .getDBCPropertyIDByName('DispLogin', .T.) ) lcBinData = lcBinData + .getBinPropertyDataRecord( ._Transactions, .getDBCPropertyIDByName('Transactions', .T.) ) - lcBinData = lcBinData + .getBinPropertyDataRecord( ._UserId, .getDBCPropertyIDByName('UserId', .T.) ) + lcBinData = lcBinData + .getBinPropertyDataRecord( ._DisconnectRollback, .getDBCPropertyIDByName('DisconnectRollback', .T.) ) && Undocumented + lcBinData = lcBinData + .getBinPropertyDataRecord( ._ConnectTimeout , .getDBCPropertyIDByName('ConnectTimeout', .T.) ) + lcBinData = lcBinData + .getBinPropertyDataRecord( ._QueryTimeout, .getDBCPropertyIDByName('QueryTimeout', .T.) ) + lcBinData = lcBinData + .getBinPropertyDataRecord( ._IdleTimeout, .getDBCPropertyIDByName('IdleTimeout', .T.) ) lcBinData = lcBinData + .getBinPropertyDataRecord( ._WaitTime, .getDBCPropertyIDByName('WaitTime', .T.) ) lcBinData = lcBinData + .getBinPropertyDataRecord( ._PacketSize, .getDBCPropertyIDByName('PacketSize', .T.) ) && Undocumented + lcBinData = lcBinData + .getBinPropertyDataRecord( ._DataSource, .getDBCPropertyIDByName('DataSource', .T.) ) + lcBinData = lcBinData + .getBinPropertyDataRecord( ._UserId, .getDBCPropertyIDByName('UserId', .T.) ) + lcBinData = lcBinData + .getBinPropertyDataRecord( ._PassWord, .getDBCPropertyIDByName('PassWord', .T.) ) + lcBinData = lcBinData + .getBinPropertyDataRecord( ._Database, .getDBCPropertyIDByName('Database', .T.) ) + lcBinData = lcBinData + .getBinPropertyDataRecord( ._ConnectString, .getDBCPropertyIDByName('ConnectString', .T.) ) + lcBinData = lcBinData + .getBinPropertyDataRecord( ._Comment, .getDBCPropertyIDByName('Comment', .T.) ) ENDWITH RETURN lcBinData @@ -10842,18 +10937,10 @@ DEFINE CLASS CL_DBC_INDEX_DB AS CL_DBC_BASE *-- Info _Name = '' - _IsUnique = 0 + _IsUnique = .F. _Comment = '' - *PROCEDURE _IsUnique_ASSIGN - * LPARAMETERS teValue - * IF VARTYPE(teValue)<>"N" - * SET STEP ON - * ENDIF - * THIS._IsUnique = teValue - *ENDPROC - PROCEDURE analizarBloque *--------------------------------------------------------------------------------------------------- * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) @@ -10923,7 +11010,7 @@ DEFINE CLASS CL_DBC_INDEX_DB AS CL_DBC_BASE <<>> <<>> <> <<>> <> - <<>> <> + <<>> <> <<>> ENDTEXT