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


oiReturnStatusoutputinteger


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>