project BLF > class BXmlDaemon > 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


unused


program code (program/bxmldaemon.p)

<ANCESTOR-CODE>

for each t_sXmlDaemon where
         t_sXmlDaemon.tc_ParentRowid      = ictcRowid and
         t_sXmlDaemon.XmlDaemonDirectory <> ""        and
        (t_sXmlDaemon.tc_Status           = "N" or
         t_sXmlDaemon.tc_Status           = "C"),
    first t_sfcDaemon where
          t_sfcDaemon.tc_Rowid = t_sXmlDaemon.tc_ParentRowid:

    if t_sXmlDaemon.tc_Status = "C"
    then do:
        find t_iXmlDaemon where
             t_iXmlDaemon.tc_Rowid = t_sXmlDaemon.tc_Rowid
             no-error.

        if not available t_iXmlDaemon
        then do:
            <M-9 run SetMessage
               (input  trim(#T-6'Failed to create socket object.':255(998716605)t-6#) (icMessage), 
                input  '' (icArguments), 
                input  '' (icFieldName), 
                input  '' (icFieldValue), 
                input  'E' (icType), 
                input  3 (iiSeverity), 
                input  ictcRowid (icRowid), 
                input  'BLF-235':U (icFcMsgNumber), 
                input  '' (icFcExplanation), 
                input  '' (icFcIdentification), 
                input  '' (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BXmlDaemon>

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

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

    if t_sXmlDaemon.tc_Status           = "N" or
       t_sXmlDaemon.tc_Status           = "C" and
       t_sXmlDaemon.XmlDaemonDirectory <> t_iXmlDaemon.XmlDaemonDirectory
    then do:
        <M-6 run Main  (input  viSessionId (iiSessionId)) in TDaemonUtility>

        <M-7 run GetFileType
           (input  {&XMLDAEMON} (icDaemonName), 
            input  t_sXmlDaemon.XmlDaemonDirectory (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-8 run SetMessage
               (input  vcMessage (icMessage), 
                input  '' (icArguments), 
                input  'tXmlDaemon.XmlDaemonDirectory' (icFieldName), 
                input  t_sXmlDaemon.XmlDaemonDirectory (icFieldValue), 
                input  'D' (icType), 
                input  3 (iiSeverity), 
                input  t_sXmlDaemon.tc_Rowid (icRowid), 
                input  'BLF-285':U (icFcMsgNumber), 
                input  '' (icFcExplanation), 
                input  '' (icFcIdentification), 
                input  '' (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BXmlDaemon>
        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-10 run SetMessage
               (input  trim(#T-7'The directory specified is not valid, would you like to create it?':255(998716602)T-7#) (icMessage), 
                input  '' (icArguments), 
                input  'tXmlDaemon.XmlDaemonDirectory' (icFieldName), 
                input  t_sXmlDaemon.XmlDaemonDirectory (icFieldValue), 
                input  'W' (icType), 
                input  4 (iiSeverity), 
                input  t_sXmlDaemon.tc_Rowid (icRowid), 
                input  'BLF-236':U (icFcMsgNumber), 
                input  '' (icFcExplanation), 
                input  '' (icFcIdentification), 
                input  '' (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BXmlDaemon>

            create tDirectoryToCreate.

            assign tDirectoryToCreate.tcDirectoryName   = t_sXmlDaemon.XmlDaemonDirectory
                   tDirectoryToCreate.tcDaemonName      = {&XMLDAEMON}
                   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-1'You do not have write permissions for this directory.':255(9365)T-1#) (icMessage), 
                input  '' (icArguments), 
                input  'tXmlDaemon.XmlDaemonDirectory' (icFieldName), 
                input  t_sXmlDaemon.XmlDaemonDirectory (icFieldValue), 
                input  'E' (icType), 
                input  3 (iiSeverity), 
                input  t_sXmlDaemon.tc_Rowid (icRowid), 
                input  'BLF-283':U (icFcMsgNumber), 
                input  '' (icFcExplanation), 
                input  '' (icFcIdentification), 
                input  '' (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BXmlDaemon>

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