project BLF > class BTranslation > method ValidateComponent
Description
Write here all tests on database update (new / modify / delete) that cannot be coded with a validation mask.
The type of update can be found in tc_status (N/C/D).
If you find incorrect data, you must write an entry in tFcMessages (using SetMessage) and set the return status of this method to either +1 or -1.
Return status +1 = data will still be accepted.
Return status -1 = data will not be accepted.
This method is run from SetPublicTables, before transferring the received data into the class temp-tables.
Parameters
| oiReturnStatus | output | integer | |
Internal usage
unused
program code (program/btranslation.p)
/* ===================================================================== */
/* Make sure to validate tcLangCode and to set Lng_ID based on tcLngCode */
/* ===================================================================== */
<Q-7 run LanguagePrim (Start) in BLanguage >
for each t_sTranslationString where
t_sTranslationString.tc_Status = "N":U or
t_sTranslationString.tc_Status = "C":U on error undo, throw:
if t_sTranslationString.tcLngCode = "":U or
t_sTranslationString.tcLngCode = ?
then do:
assign vcMessage = trim(#T-9'You must enter the language code.':255(447)T-9#)
oiReturnStatus = -1.
<M-4 run SetMessage (input vcMessage (icMessage),
input '':U (icArguments),
input 't_sTranslationString.tcLngCode':U (icFieldName),
input t_sTranslationString.tcLngCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sTranslationString.tc_Rowid (icRowid),
input 'BLF-230':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BTranslation>
end. /* if t_sTranslationString.tcLngCode = "":U or */
else do:
if t_sTranslationString.tc_Status = "N":U or
(t_sTranslationString.tc_Status = "C":U and
can-find (t_iTranslationString where
t_iTranslationString.tc_Rowid = t_sTranslationString.tc_Rowid and
t_iTranslationString.tcLngCode <> t_sTranslationString.tcLngCode))
then do :
<Q-5 run LanguagePrim (all) (Read) (Cache)
(input t_sTranslationString.tcLngCode, (LngCode)
input ?, (LngID)
output dataset tqLanguagePrim) in BLanguage >
find first tqLanguagePrim no-lock no-error.
if not available tqLanguagePrim
then do :
assign vcMessage = trim(substitute(#T-10'Invalid language code: &1.':255(448)T-10#,t_sTranslationString.tcLngCode))
oiReturnStatus = -1.
<M-6 run SetMessage (input vcMessage (icMessage),
input '':U (icArguments),
input 't_sTranslationString.tcLngCode':U (icFieldName),
input t_sTranslationString.tcLngCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sTranslationString.tc_Rowid (icRowid),
input 'BLF-231':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BTranslation>
end. /* if not available tqLanguagePrim */
else assign t_sTranslationString.Lng_ID = tqLanguagePrim.tiLng_ID.
end. /* end if t_sTranslationString.tc_Status = "N":U or .. */
end. /* if t_sTranslationString.tcLngCode <> "":U */
end. /* for each t_sTranslationString where */
<Q-8 run LanguagePrim (Stop) in BLanguage >
<ANCESTOR-CODE>