From 07c914ab99e9031286f3e4692b59c66a5ab578af Mon Sep 17 00:00:00 2001 From: fernando Date: Thu, 12 Dec 2013 00:49:18 +0100 Subject: [PATCH] Changeset: 79 Changeset: 79 Agregado soporte TXT a DBC --- foxbin2prg.prg | 1073 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1073 insertions(+) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 809fc31..396a56f 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -9552,6 +9552,1079 @@ DEFINE CLASS CL_PROJECT AS CL_COL_BASE ENDDEFINE +******************************************************************************************************************* +DEFINE CLASS CL_DATABASE AS CL_CUS_BASE + #IF .F. + LOCAL THIS AS CL_DATABASE OF 'FOXBIN2PRG.PRG' + #ENDIF + + _MEMBERDATA = [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] + + + *-- Modulo + _Version = 0 + _SourceFile = '' + + *-- Database Info + _Name = '' + _Comment = '' + _Version = 0 + _DBCEvents = .F. + _DBCEventFilename = '' + + *-- Fields and Indexes + _Connections = NULL + _Tables = NULL + _Views = NULL + _Relations = NULL + + + ************************************************************************************************ + PROCEDURE INIT + DODEFAULT() + *-- + THIS._Fields = CREATEOBJECT("CL_DBF_FIELDS") + THIS._Indexes = CREATEOBJECT("CL_DBF_INDEXES") + ENDPROC + + + ******************************************************************************************************************* + PROCEDURE analizarBloque + LPARAMETERS tcLine, taCodeLines, I, tnCodeLines + + TRY + LOCAL loFields AS CL_DBF_FIELDS OF 'FOXBIN2PRG.PRG' + LOCAL loIndexes AS CL_DBF_INDEXES OF 'FOXBIN2PRG.PRG' + LOCAL llBloqueEncontrado, lcPropName, lcValue, loEx AS EXCEPTION + STORE '' TO lcPropName, lcValue + + IF LEFT(tcLine, LEN(C_TABLE_I)) == C_TABLE_I + llBloqueEncontrado = .T. + + FOR I = I + 1 TO tnCodeLines + THIS.set_Line( @tcLine, @taCodeLines, I ) + + DO CASE + CASE EMPTY( tcLine ) + LOOP + + CASE C_TABLE_F $ tcLine && Fin + EXIT + + CASE C_FIELDS_I $ tcLine + loFields = THIS._Fields + loFields.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines ) + + CASE C_INDEXES_I $ tcLine + loIndexes = THIS._Indexes + loIndexes.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines ) + + OTHERWISE && Otro valor + *-- Estructura a reconocer: + * ID + lcPropName = STREXTRACT( tcLine, '<', '>', 1, 0 ) + lcValue = STREXTRACT( tcLine, '<' + lcPropName + '>', '', 1, 0 ) + THIS.ADDPROPERTY( '_' + lcPropName, lcValue ) + ENDCASE + ENDFOR + ENDIF + + CATCH TO loEx + IF loEx.ERRORNO = 1470 && Incorrect property name. + loEx.USERVALUE = 'I=' + TRANSFORM(I) + ', PropName=[' + TRANSFORM(lcPropName) + '], Value=[' + TRANSFORM(lcValue) + ']' + ENDIF + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN llBloqueEncontrado + ENDPROC + + +ENDDEFINE + + +******************************************************************************************************************* +DEFINE CLASS CL_DBC_CONNECTIONS AS CL_COL_BASE + #IF .F. + LOCAL THIS AS CL_DBC_CONNECTIONS OF 'FOXBIN2PRG.PRG' + #ENDIF + + *_MEMBERDATA = [] ; + * + [] ; + * + [] + + + ******************************************************************************************************************* + PROCEDURE analizarBloque + LPARAMETERS tcLine, taCodeLines, I, tnCodeLines + + TRY + LOCAL loConnection AS CL_DBC_CONNECTION OF 'FOXBIN2PRG.PRG' + LOCAL llBloqueEncontrado, lcPropName, lcValue, loEx AS EXCEPTION + STORE '' TO lcPropName, lcValue + + IF LEFT(tcLine, LEN(C_CONNECTIONS_I)) == C_CONNECTIONS_I + llBloqueEncontrado = .T. + + FOR I = I + 1 TO tnCodeLines + THIS.set_Line( @tcLine, @taCodeLines, I ) + + DO CASE + CASE EMPTY( tcLine ) + LOOP + + CASE C_CONNECTIONS_F $ tcLine && Fin + EXIT + + CASE C_CONNECTION_I $ tcLine + loConnection = CREATEOBJECT("CL_DBC_CONNECTION") + loConnection.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines ) + THIS.ADD( loConnection, loConnection._Name ) + + OTHERWISE && Otro valor + *-- No hay otros valores + ENDCASE + ENDFOR + ENDIF + + CATCH TO loEx + IF loEx.ERRORNO = 1470 && Incorrect property name. + loEx.USERVALUE = 'I=' + TRANSFORM(I) + ', tcLine=' + TRANSFORM(tcLine) + ENDIF + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN llBloqueEncontrado + ENDPROC + + +ENDDEFINE + + +******************************************************************************************************************* +DEFINE CLASS CL_DBC_CONNECTION AS CL_CUS_BASE + #IF .F. + LOCAL THIS AS CL_DBC_CONNECTION OF 'FOXBIN2PRG.PRG' + #ENDIF + + _MEMBERDATA = [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] + + + *-- Info + _Name = '' + _Comment = '' + _DataSource = '' + _Database = '' + _ConnectString = '' + _Asynchronous = '' + _BatchMode = '' + _ConnectTimeout = '' + _DisconnectRollback = '' + _DispLogin = '' + _DispWarnings = '' + _IdleTimeout = '' + _PacketSize = '' + _PassWord = '' + _QueryTimeout = '' + _Transactions = '' + _UserId = '' + _WaitTime = '' + + + ******************************************************************************************************************* + PROCEDURE analizarBloque + LPARAMETERS tcLine, taCodeLines, I, tnCodeLines + + TRY + LOCAL llBloqueEncontrado, lcPropName, lcValue, loEx AS EXCEPTION + STORE '' TO lcPropName, lcValue + + IF LEFT(tcLine, LEN(C_CONNECTION_I)) == C_CONNECTION_I + llBloqueEncontrado = .T. + + FOR I = I + 1 TO tnCodeLines + THIS.set_Line( @tcLine, @taCodeLines, I ) + + DO CASE + CASE EMPTY( tcLine ) + LOOP + + CASE C_CONNECTION_F $ tcLine && Fin + EXIT + + OTHERWISE && Propiedad de CONNECTION + *-- Estructura a reconocer: + * NOMBRE + lcPropName = STREXTRACT( tcLine, '<', '>', 1, 0 ) + lcValue = STREXTRACT( tcLine, '<' + lcPropName + '>', '', 1, 0 ) + THIS.ADDPROPERTY( '_' + lcPropName, lcValue ) + ENDCASE + ENDFOR + ENDIF + + CATCH TO loEx + IF loEx.ERRORNO = 1470 && Incorrect property name. + loEx.USERVALUE = 'I=' + TRANSFORM(I) + ', tcLine=' + TRANSFORM(tcLine) + ', PropName=[' + TRANSFORM(lcPropName) + '], Value=[' + TRANSFORM(lcValue) + ']' + ENDIF + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN llBloqueEncontrado + ENDPROC + + +ENDDEFINE + + +******************************************************************************************************************* +DEFINE CLASS CL_DBC_TABLES AS CL_COL_BASE + #IF .F. + LOCAL THIS AS CL_DBC_TABLES OF 'FOXBIN2PRG.PRG' + #ENDIF + + *_MEMBERDATA = [] ; + * + [] ; + * + [] + + + ******************************************************************************************************************* + PROCEDURE analizarBloque + LPARAMETERS tcLine, taCodeLines, I, tnCodeLines + + TRY + LOCAL loTable AS CL_DBC_TABLE OF 'FOXBIN2PRG.PRG' + LOCAL llBloqueEncontrado, lcPropName, lcValue, loEx AS EXCEPTION + STORE '' TO lcPropName, lcValue + + IF LEFT(tcLine, LEN(C_TABLES_I)) == C_TABLES_I + llBloqueEncontrado = .T. + + FOR I = I + 1 TO tnCodeLines + THIS.set_Line( @tcLine, @taCodeLines, I ) + + DO CASE + CASE EMPTY( tcLine ) + LOOP + + CASE C_TABLES_F $ tcLine && Fin + EXIT + + CASE C_TABLE_I $ tcLine + loTable = CREATEOBJECT("CL_DBC_TABLE") + loTable.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines ) + THIS.ADD( loConnection, loConnection._Name ) + + OTHERWISE && Otro valor + *-- No hay otros valores + ENDCASE + ENDFOR + ENDIF + + CATCH TO loEx + IF loEx.ERRORNO = 1470 && Incorrect property name. + loEx.USERVALUE = 'I=' + TRANSFORM(I) + ', tcLine=' + TRANSFORM(tcLine) + ENDIF + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN llBloqueEncontrado + ENDPROC + + +ENDDEFINE + + +******************************************************************************************************************* +DEFINE CLASS CL_DBC_TABLE AS CL_CUS_BASE + #IF .F. + LOCAL THIS AS CL_DBC_TABLE OF 'FOXBIN2PRG.PRG' + #ENDIF + + _MEMBERDATA = [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] + + + *-- Info + _Name = '' + _Comment = '' + _Path = '' + _DeleteTrigger = '' + _InsertTrigger = '' + _UpdateTrigger = '' + _PrimaryKey = '' + _RuleExpression = '' + _RuleText = '' + + + ******************************************************************************************************************* + PROCEDURE analizarBloque + LPARAMETERS tcLine, taCodeLines, I, tnCodeLines + + TRY + LOCAL llBloqueEncontrado, lcPropName, lcValue, loEx AS EXCEPTION + LOCAL loFields AS CL_DBC_FIELDS_DB OF 'FOXBIN2PRG.PRG' + STORE '' TO lcPropName, lcValue + + IF LEFT(tcLine, LEN(C_TABLE_I)) == C_TABLE_I + llBloqueEncontrado = .T. + + FOR I = I + 1 TO tnCodeLines + THIS.set_Line( @tcLine, @taCodeLines, I ) + + DO CASE + CASE EMPTY( tcLine ) + LOOP + + CASE C_TABLE_F $ tcLine && Fin + EXIT + + CASE C_FIELDS_I $ tcLine + loFields = THIS._Fields + loFields.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines ) + + OTHERWISE && Propiedad de TABLE + *-- Estructura a reconocer: + * NOMBRE + lcPropName = STREXTRACT( tcLine, '<', '>', 1, 0 ) + lcValue = STREXTRACT( tcLine, '<' + lcPropName + '>', '', 1, 0 ) + THIS.ADDPROPERTY( '_' + lcPropName, lcValue ) + ENDCASE + ENDFOR + ENDIF + + CATCH TO loEx + IF loEx.ERRORNO = 1470 && Incorrect property name. + loEx.USERVALUE = 'I=' + TRANSFORM(I) + ', tcLine=' + TRANSFORM(tcLine) + ', PropName=[' + TRANSFORM(lcPropName) + '], Value=[' + TRANSFORM(lcValue) + ']' + ENDIF + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN llBloqueEncontrado + ENDPROC + + +ENDDEFINE + + +******************************************************************************************************************* +DEFINE CLASS CL_DBC_FIELDS_DB AS CL_COL_BASE + #IF .F. + LOCAL THIS AS CL_DBC_FIELDS_DB OF 'FOXBIN2PRG.PRG' + #ENDIF + + *_MEMBERDATA = [] ; + * + [] ; + * + [] + + + ******************************************************************************************************************* + PROCEDURE analizarBloque + LPARAMETERS tcLine, taCodeLines, I, tnCodeLines + + TRY + LOCAL loField AS CL_DBC_FIELD_DB OF 'FOXBIN2PRG.PRG' + *LOCAL loIndex AS CL_DBF_INDEX OF 'FOXBIN2PRG.PRG' + LOCAL llBloqueEncontrado, lcPropName, lcValue, loEx AS EXCEPTION + STORE '' TO lcPropName, lcValue + + IF LEFT(tcLine, LEN(C_FIELDS_I)) == C_FIELDS_I + llBloqueEncontrado = .T. + + FOR I = I + 1 TO tnCodeLines + THIS.set_Line( @tcLine, @taCodeLines, I ) + + DO CASE + CASE EMPTY( tcLine ) + LOOP + + CASE C_FIELDS_F $ tcLine && Fin + EXIT + + CASE C_FIELD_I $ tcLine + loField = CREATEOBJECT("CL_DBC_FIELD_DB") + loField.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines ) + THIS.ADD( loField, loField._Name ) + + OTHERWISE && Otro valor + *-- No hay otros valores + ENDCASE + ENDFOR + ENDIF + + CATCH TO loEx + IF loEx.ERRORNO = 1470 && Incorrect property name. + loEx.USERVALUE = 'I=' + TRANSFORM(I) + ', tcLine=' + TRANSFORM(tcLine) + ENDIF + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN llBloqueEncontrado + ENDPROC + + +ENDDEFINE + + +******************************************************************************************************************* +DEFINE CLASS CL_DBC_FIELD_DB AS CL_CUS_BASE + #IF .F. + LOCAL THIS AS CL_DBC_FIELD_DB OF 'FOXBIN2PRG.PRG' + #ENDIF + + _MEMBERDATA = [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] + + + *-- Info + _Name = '' + _Caption = '' + _Comment = '' + _DefaultValue = '' + _DisplayClass = '' + _DisplayClassLibrary = '' + _Format = '' + _InputMask = '' + _RuleExpression = '' + _RuleText = '' + + + ******************************************************************************************************************* + PROCEDURE analizarBloque + LPARAMETERS tcLine, taCodeLines, I, tnCodeLines + + TRY + LOCAL llBloqueEncontrado, lcPropName, lcValue, loEx AS EXCEPTION + STORE '' TO lcPropName, lcValue + + IF LEFT(tcLine, LEN(C_FIELD_I)) == C_FIELD_I + llBloqueEncontrado = .T. + + FOR I = I + 1 TO tnCodeLines + THIS.set_Line( @tcLine, @taCodeLines, I ) + + DO CASE + CASE EMPTY( tcLine ) + LOOP + + CASE C_FIELD_F $ tcLine && Fin + EXIT + + OTHERWISE && Propiedad de FIELD + *-- Estructura a reconocer: + * NOMBRE + lcPropName = STREXTRACT( tcLine, '<', '>', 1, 0 ) + lcValue = STREXTRACT( tcLine, '<' + lcPropName + '>', '', 1, 0 ) + THIS.ADDPROPERTY( '_' + lcPropName, lcValue ) + ENDCASE + ENDFOR + ENDIF + + CATCH TO loEx + IF loEx.ERRORNO = 1470 && Incorrect property name. + loEx.USERVALUE = 'I=' + TRANSFORM(I) + ', tcLine=' + TRANSFORM(tcLine) + ', PropName=[' + TRANSFORM(lcPropName) + '], Value=[' + TRANSFORM(lcValue) + ']' + ENDIF + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN llBloqueEncontrado + ENDPROC + + +ENDDEFINE + + +******************************************************************************************************************* +DEFINE CLASS CL_DBC_VIEWS AS CL_COL_BASE + #IF .F. + LOCAL THIS AS CL_DBC_VIEWS OF 'FOXBIN2PRG.PRG' + #ENDIF + + *_MEMBERDATA = [] ; + * + [] ; + * + [] + + + ******************************************************************************************************************* + PROCEDURE analizarBloque + LPARAMETERS tcLine, taCodeLines, I, tnCodeLines + + TRY + LOCAL loView AS CL_DBC_VIEW OF 'FOXBIN2PRG.PRG' + LOCAL llBloqueEncontrado, lcPropName, lcValue, loEx AS EXCEPTION + STORE '' TO lcPropName, lcValue + + IF LEFT(tcLine, LEN(C_VIEW_I)) == C_VIEW_I + llBloqueEncontrado = .T. + + FOR I = I + 1 TO tnCodeLines + THIS.set_Line( @tcLine, @taCodeLines, I ) + + DO CASE + CASE EMPTY( tcLine ) + LOOP + + CASE C_VIEW_F $ tcLine && Fin + EXIT + + CASE C_VIEW_I $ tcLine + loView = CREATEOBJECT("CL_DBC_VIEW") + loView.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines ) + THIS.ADD( loConnection, loConnection._Name ) + + OTHERWISE && Otro valor + *-- No hay otros valores + ENDCASE + ENDFOR + ENDIF + + CATCH TO loEx + IF loEx.ERRORNO = 1470 && Incorrect property name. + loEx.USERVALUE = 'I=' + TRANSFORM(I) + ', tcLine=' + TRANSFORM(tcLine) + ENDIF + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN llBloqueEncontrado + ENDPROC + + +ENDDEFINE + + +******************************************************************************************************************* +DEFINE CLASS CL_DBC_VIEW AS CL_CUS_BASE + #IF .F. + LOCAL THIS AS CL_DBC_VIEW OF 'FOXBIN2PRG.PRG' + #ENDIF + + _MEMBERDATA = [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] + + + *-- Info + _Name = '' + _Comment = '' + _Tables = '' + _SQL = '' + _AllowSimultaneousFetch = '' + _BatchUpdateCount = '' + _CompareMemo = '' + _ConnectName = '' + _FetchAsNeeded = '' + _FetchMemo = '' + _FetchSize = '' + _MaxRecords = '' + _Offline = '' + _ParameterList = '' + _Prepared = '' + _RuleExpression = '' + _RuleText = '' + _SendUpdates = '' + _ShareConnection = '' + _SourceType = '' + _UpdateType = '' + _UseMemoSize = '' + _WhereType = '' + + + ******************************************************************************************************************* + PROCEDURE analizarBloque + LPARAMETERS tcLine, taCodeLines, I, tnCodeLines + + TRY + LOCAL llBloqueEncontrado, lcPropName, lcValue, loEx AS EXCEPTION + LOCAL loFields AS CL_DBC_FIELDS_VW OF 'FOXBIN2PRG.PRG' + STORE '' TO lcPropName, lcValue + + IF LEFT(tcLine, LEN(C_VIEW_I)) == C_VIEW_I + llBloqueEncontrado = .T. + + FOR I = I + 1 TO tnCodeLines + THIS.set_Line( @tcLine, @taCodeLines, I ) + + DO CASE + CASE EMPTY( tcLine ) + LOOP + + CASE C_VIEW_F $ tcLine && Fin + EXIT + + CASE C_FIELDS_I $ tcLine + loFields = THIS._Fields + loFields.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines ) + + OTHERWISE && Propiedad de VIEW + *-- Estructura a reconocer: + * NOMBRE + lcPropName = STREXTRACT( tcLine, '<', '>', 1, 0 ) + lcValue = STREXTRACT( tcLine, '<' + lcPropName + '>', '', 1, 0 ) + THIS.ADDPROPERTY( '_' + lcPropName, lcValue ) + ENDCASE + ENDFOR + ENDIF + + CATCH TO loEx + IF loEx.ERRORNO = 1470 && Incorrect property name. + loEx.USERVALUE = 'I=' + TRANSFORM(I) + ', tcLine=' + TRANSFORM(tcLine) + ', PropName=[' + TRANSFORM(lcPropName) + '], Value=[' + TRANSFORM(lcValue) + ']' + ENDIF + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN llBloqueEncontrado + ENDPROC + + +ENDDEFINE + + +******************************************************************************************************************* +DEFINE CLASS CL_DBC_FIELDS_VW AS CL_COL_BASE + #IF .F. + LOCAL THIS AS CL_DBC_FIELDS_VW OF 'FOXBIN2PRG.PRG' + #ENDIF + + *_MEMBERDATA = [] ; + * + [] ; + * + [] + + + ******************************************************************************************************************* + PROCEDURE analizarBloque + LPARAMETERS tcLine, taCodeLines, I, tnCodeLines + + TRY + LOCAL loField AS CL_DBC_FIELD_VW OF 'FOXBIN2PRG.PRG' + *LOCAL loIndex AS CL_DBF_INDEX OF 'FOXBIN2PRG.PRG' + LOCAL llBloqueEncontrado, lcPropName, lcValue, loEx AS EXCEPTION + STORE '' TO lcPropName, lcValue + + IF LEFT(tcLine, LEN(C_FIELDS_I)) == C_FIELDS_I + llBloqueEncontrado = .T. + + FOR I = I + 1 TO tnCodeLines + THIS.set_Line( @tcLine, @taCodeLines, I ) + + DO CASE + CASE EMPTY( tcLine ) + LOOP + + CASE C_FIELDS_F $ tcLine && Fin + EXIT + + CASE C_FIELD_I $ tcLine + loField = CREATEOBJECT("CL_DBC_FIELD_VW") + loField.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines ) + THIS.ADD( loField, loField._Name ) + + OTHERWISE && Otro valor + *-- No hay otros valores + ENDCASE + ENDFOR + ENDIF + + CATCH TO loEx + IF loEx.ERRORNO = 1470 && Incorrect property name. + loEx.USERVALUE = 'I=' + TRANSFORM(I) + ', tcLine=' + TRANSFORM(tcLine) + ENDIF + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN llBloqueEncontrado + ENDPROC + + +ENDDEFINE + + +******************************************************************************************************************* +DEFINE CLASS CL_DBC_FIELD_VW AS CL_CUS_BASE + #IF .F. + LOCAL THIS AS CL_DBC_FIELD_VW OF 'FOXBIN2PRG.PRG' + #ENDIF + + _MEMBERDATA = [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] + + + *-- Info + _Name = '' + _Caption = '' + _Comment = '' + _DataType = '' + _DefaultValue = '' + _DisplayClass = '' + _DisplayClassLibrary = '' + _Format = '' + _InputMask = '' + _KeyField = '' + _RuleExpression = '' + _RuleText = '' + _Updatable = '' + _UpdateName = '' + + + ******************************************************************************************************************* + PROCEDURE analizarBloque + LPARAMETERS tcLine, taCodeLines, I, tnCodeLines + + TRY + LOCAL llBloqueEncontrado, lcPropName, lcValue, loEx AS EXCEPTION + STORE '' TO lcPropName, lcValue + + IF LEFT(tcLine, LEN(C_FIELD_I)) == C_FIELD_I + llBloqueEncontrado = .T. + + FOR I = I + 1 TO tnCodeLines + THIS.set_Line( @tcLine, @taCodeLines, I ) + + DO CASE + CASE EMPTY( tcLine ) + LOOP + + CASE C_FIELD_F $ tcLine && Fin + EXIT + + OTHERWISE && Propiedad de FIELD + *-- Estructura a reconocer: + * NOMBRE + lcPropName = STREXTRACT( tcLine, '<', '>', 1, 0 ) + lcValue = STREXTRACT( tcLine, '<' + lcPropName + '>', '', 1, 0 ) + THIS.ADDPROPERTY( '_' + lcPropName, lcValue ) + ENDCASE + ENDFOR + ENDIF + + CATCH TO loEx + IF loEx.ERRORNO = 1470 && Incorrect property name. + loEx.USERVALUE = 'I=' + TRANSFORM(I) + ', tcLine=' + TRANSFORM(tcLine) + ', PropName=[' + TRANSFORM(lcPropName) + '], Value=[' + TRANSFORM(lcValue) + ']' + ENDIF + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN llBloqueEncontrado + ENDPROC + + +ENDDEFINE + + +******************************************************************************************************************* +DEFINE CLASS CL_DBC_RELATIONS AS CL_COL_BASE + #IF .F. + LOCAL THIS AS CL_DBC_RELATIONS OF 'FOXBIN2PRG.PRG' + #ENDIF + + *_MEMBERDATA = [] ; + * + [] ; + * + [] + + + ******************************************************************************************************************* + PROCEDURE analizarBloque + LPARAMETERS tcLine, taCodeLines, I, tnCodeLines + + TRY + LOCAL loRelation AS CL_DBC_RELATION OF 'FOXBIN2PRG.PRG' + *LOCAL loIndex AS CL_DBF_INDEX OF 'FOXBIN2PRG.PRG' + LOCAL llBloqueEncontrado, lcPropName, lcValue, loEx AS EXCEPTION + STORE '' TO lcPropName, lcValue + + IF LEFT(tcLine, LEN(C_RELATIONS_I)) == C_RELATIONS_I + llBloqueEncontrado = .T. + + FOR I = I + 1 TO tnCodeLines + THIS.set_Line( @tcLine, @taCodeLines, I ) + + DO CASE + CASE EMPTY( tcLine ) + LOOP + + CASE C_RELATIONS_F $ tcLine && Fin + EXIT + + CASE C_RELATION_I $ tcLine + loRelation = CREATEOBJECT("CL_DBC_RELATION") + loRelation.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines ) + THIS.ADD( loField, loField._Name ) + + OTHERWISE && Otro valor + *-- No hay otros valores + ENDCASE + ENDFOR + ENDIF + + CATCH TO loEx + IF loEx.ERRORNO = 1470 && Incorrect property name. + loEx.USERVALUE = 'I=' + TRANSFORM(I) + ', tcLine=' + TRANSFORM(tcLine) + ENDIF + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN llBloqueEncontrado + ENDPROC + + +ENDDEFINE + + +******************************************************************************************************************* +DEFINE CLASS CL_DBC_RELATION AS CL_CUS_BASE + #IF .F. + LOCAL THIS AS CL_DBC_RELATION OF 'FOXBIN2PRG.PRG' + #ENDIF + + _MEMBERDATA = [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] + + + *-- Info + _Name = '' + _Caption = '' + _Comment = '' + _DataType = '' + _DefaultValue = '' + _DisplayClass = '' + _DisplayClassLibrary = '' + _Format = '' + _InputMask = '' + _KeyField = '' + _RuleExpression = '' + _RuleText = '' + _Updatable = '' + _UpdateName = '' + + + ******************************************************************************************************************* + PROCEDURE analizarBloque + LPARAMETERS tcLine, taCodeLines, I, tnCodeLines + + TRY + LOCAL llBloqueEncontrado, lcPropName, lcValue, loEx AS EXCEPTION + STORE '' TO lcPropName, lcValue + + IF LEFT(tcLine, LEN(C_RELATION_I)) == C_RELATION_I + llBloqueEncontrado = .T. + + FOR I = I + 1 TO tnCodeLines + THIS.set_Line( @tcLine, @taCodeLines, I ) + + DO CASE + CASE EMPTY( tcLine ) + LOOP + + CASE C_RELATION_F $ tcLine && Fin + EXIT + + OTHERWISE && Propiedad de RELATION + *-- Estructura a reconocer: + * NOMBRE + lcPropName = STREXTRACT( tcLine, '<', '>', 1, 0 ) + lcValue = STREXTRACT( tcLine, '<' + lcPropName + '>', '', 1, 0 ) + THIS.ADDPROPERTY( '_' + lcPropName, lcValue ) + ENDCASE + ENDFOR + ENDIF + + CATCH TO loEx + IF loEx.ERRORNO = 1470 && Incorrect property name. + loEx.USERVALUE = 'I=' + TRANSFORM(I) + ', tcLine=' + TRANSFORM(tcLine) + ', PropName=[' + TRANSFORM(lcPropName) + '], Value=[' + TRANSFORM(lcValue) + ']' + ENDIF + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN llBloqueEncontrado + ENDPROC + + +ENDDEFINE + + ******************************************************************************************************************* DEFINE CLASS CL_DBF_TABLE AS CL_CUS_BASE #IF .F.