project BLF > class BBaseDaemon > method ValidateDirectories

Description

This method validates all directories defined in the daemon configuration. If the daemon is configured to run on an appserver, directory validation will be done on that appserver.


Parameters


ictcRowidinputcharacter
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


BLF
method BBaseDaemon.ValidateComponent


program code (program1/bbasedaemon.p)

find bsdaemon where
     bsdaemon.tc_Rowid = ictcRowid
     no-error.

if available bsdaemon
then do:
    if bsdaemon.tc_Status = "C"
    then do:
        find t_ifcDaemon where
             t_ifcDaemon.tc_Rowid = ictcRowid
             no-error.

        if not available t_ifcDaemon
        then do:
            <M-22 run SetMessage
               (input  trim(#T-16'Internal error: no initial record found for modified fcDaemon record.':255(998716597)T-16#) (icMessage), 
                input  '' (icArguments), 
                input  '' (icFieldName), 
                input  '' (icFieldValue), 
                input  'E' (icType), 
                input  3 (iiSeverity), 
                input  ictcRowid (icRowid), 
                input  'BLF-230':U (icFcMsgNumber), 
                input  '' (icFcExplanation), 
                input  '' (icFcIdentification), 
                input  '' (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BBaseDaemon>

            assign oiReturnStatus = -3.
            return.
        end.
    end.

    assign vcDaemonAppServerURL = if bsdaemon.DaemonAppserver = "" or
                                     bsdaemon.DaemonAppserver = ?
                                  then "local"
                                  else bsdaemon.DaemonAppserver.

    /* Validate Start Directory */
    if bsdaemon.DaemonStartDirectory <> ""  and
      (bsdaemon.tc_Status             = "N" or
       bsdaemon.tc_Status             = "C" and
       bsdaemon.DaemonStartDirectory <> t_ifcDaemon.DaemonStartDirectory)
    then do:
        <M-16 run Main  (input  viSessionId (iiSessionId)) in TDaemonUtility>

        <M-17 run GetFileType
           (input  vcFcDaemonName (icDaemonName), 
            input  bsDaemon.DaemonStartDirectory (icFileName), 
            input  vcDaemonAppServerURL (icDaemonAppserverUrl), 
            output vcFileType (ocFileType), 
            output vcMessage (ocMessage), 
            output viFcReturnSuper (oiReturnStatus)) in TDaemonUtility>

        run gipr_DeleteProcedure in vhFcComponent.
        delete procedure vhFcComponent.
        assign vhFcComponent = ?.

        if viFcReturnSuper <> 0
        then assign oiReturnStatus = viFcReturnSuper.

        if vcMessage <> ""
        then do:
            <M-21 run SetMessage
               (input  vcMessage (icMessage), 
                input  '' (icArguments), 
                input  'tfcDaemon.DaemonStartDirectory' (icFieldName), 
                input  bsdaemon.DaemonStartDirectory (icFieldValue), 
                input  'D' (icType), 
                input  3 (iiSeverity), 
                input  bsdaemon.tc_Rowid (icRowid), 
                input  'BLF-34':U (icFcMsgNumber), 
                input  '' (icFcExplanation), 
                input  '' (icFcIdentification), 
                input  '' (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BBaseDaemon>
        end.

        if oiReturnStatus < 0
        then return.

        if vcFileType = ?
        then assign vcFileType = "".

        /* Check if it really is a directory */
        if index(vcFileType, "D") = 0
        then do:
            <M-23 run SetMessage
               (input  trim(#T-24'The directory specified is not valid, would you like to create it?':255(998716602)T-24#) (icMessage), 
                input  '' (icArguments), 
                input  'tfcDaemon.DaemonStartDirectory' (icFieldName), 
                input  bsdaemon.DaemonStartDirectory (icFieldValue), 
                input  'W':U (icType), 
                input  4 (iiSeverity), 
                input  bsdaemon.tc_Rowid (icRowid), 
                input  'BLF-733744164':U (icFcMsgNumber), 
                input  '' (icFcExplanation), 
                input  '' (icFcIdentification), 
                input  '' (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BBaseDaemon>

            create tDirectoryToCreate.

            assign tDirectoryToCreate.tcDirectoryName   = bsdaemon.DaemonStartDirectory
                   tDirectoryToCreate.tcDaemonName      = bsdaemon.DaemonName
                   tDirectoryToCreate.tcDaemonAppserver = vcDaemonAppServerURL
                   oiReturnStatus                       = 1.
        end.
        else
        /* Check if you can write to the directory */
        if index(vcFileType, "W") = 0
        then do:
            <M-2 run SetMessage
               (input  trim(#T-12'You do not have write permissions for this directory.':255(9365)T-12#) (icMessage), 
                input  '' (icArguments), 
                input  'tfcDaemon.DaemonStartDirectory' (icFieldName), 
                input  bsdaemon.DaemonStartDirectory (icFieldValue), 
                input  'E':U (icType), 
                input  3 (iiSeverity), 
                input  bsdaemon.tc_Rowid (icRowid), 
                input  'BLF-29':U (icFcMsgNumber), 
                input  '' (icFcExplanation), 
                input  '' (icFcIdentification), 
                input  '' (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BBaseDaemon>

            assign oiReturnStatus = -1.
        end.
    end.
    
    if bsdaemon.DaemonLogFile <> ""  and
      (bsdaemon.tc_Status      = "N" or
       bsdaemon.tc_Status      = "C" and
       bsdaemon.DaemonLogFile <> t_ifcDaemon.DaemonStartDirectory)
    then do:
        /* Separate folder from filename */
        run adecomm/_osprefx.p
           (input bsdaemon.DaemonLogFile,
            output vcLogDir,
            output vcDummy).

        <M-18 run Main  (input  viSessionId (iiSessionId)) in TDaemonUtility>

        <M-19 run GetFileType
           (input  vcFcDaemonName (icDaemonName), 
            input  vcLogDir (icFileName), 
            input  vcDaemonAppServerURL (icDaemonAppserverUrl), 
            output vcFileType (ocFileType), 
            output vcMessage (ocMessage), 
            output viFcReturnSuper (oiReturnStatus)) in TDaemonUtility>

        run gipr_DeleteProcedure in vhFcComponent.
        delete procedure vhFcComponent.
        assign vhFcComponent = ?.
        
        if viFcReturnSuper <> 0
        then assign oiReturnStatus = viFcReturnSuper.

        if vcMessage <> ""
        then do:
            <M-20 run SetMessage
               (input  vcMessage (icMessage), 
                input  '' (icArguments), 
                input  'tfcDaemon.DaemonLogFile' (icFieldName), 
                input  bsdaemon.DaemonLogFile (icFieldValue), 
                input  'D' (icType), 
                input  3 (iiSeverity), 
                input  bsdaemon.tc_Rowid (icRowid), 
                input  'BLF-33':U (icFcMsgNumber), 
                input  '' (icFcExplanation), 
                input  '' (icFcIdentification), 
                input  '' (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BBaseDaemon>
        end.

        if oiReturnStatus < 0
        then return.

        if vcFileType = ?
        then assign vcFileType = "".

        /* Check if it really is a directory */
        if index(vcFileType, "D") = 0
        then do:
            <M-25 run SetMessage
               (input  trim(#T-26'The directory specified is not valid, would you like to create it?':255(998716602)T-26#) (icMessage), 
                input  '' (icArguments), 
                input  'tfcDaemon.DaemonLogFile' (icFieldName), 
                input  vcLogDir (icFieldValue), 
                input  'W':U (icType), 
                input  4 (iiSeverity), 
                input  bsdaemon.tc_Rowid (icRowid), 
                input  'BLF-73465552':U (icFcMsgNumber), 
                input  '' (icFcExplanation), 
                input  '' (icFcIdentification), 
                input  '' (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BBaseDaemon>

            create tDirectoryToCreate.

            assign tDirectoryToCreate.tcDirectoryName   = vcLogDir
                   tDirectoryToCreate.tcDaemonName      = bsdaemon.DaemonName
                   tDirectoryToCreate.tcDaemonAppserver = vcDaemonAppServerURL
                   oiReturnStatus                       = 1.
        end.
        else
        /* Check if you can write to the directory */
        if index(vcFileType, "W") = 0
        then do:
            <M-7 run SetMessage
               (input  trim(#T-14'You do not have write permissions for this log file.':100(5198)T-14#) (icMessage), 
                input  '' (icArguments), 
                input  'tfcDaemon.DaemonLogFile' (icFieldName), 
                input  bsdaemon.DaemonLogFile (icFieldValue), 
                input  'E':U (icType), 
                input  3 (iiSeverity), 
                input  bsdaemon.tc_Rowid (icRowid), 
                input  'BLF-31':U (icFcMsgNumber), 
                input  '' (icFcExplanation), 
                input  '' (icFcIdentification), 
                input  '' (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BBaseDaemon>

            assign oiReturnStatus = -1.
        end.
    end.
end.