project BLF > class BScanDaemon > method ValidateDirectoriesLocation
Parameters
icParentRowid | input | character | |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
BLF
program code (program1/bscandaemon.p)
for each t_sScanDaemonLocation where
t_sScanDaemonLocation.tc_ParentRowid = icParentRowid and
t_sScanDaemonLocation.ScanDaemonLocationDir <> "" and
t_sScanDaemonLocation.ScanDaemonLocationDir <> ? and
t_sScanDaemonLocation.tc_Status <> "D",
first t_sfcDaemon where
t_sfcDaemon.tc_Rowid = t_sScanDaemonLocation.tc_ParentRowid:
/* If the directory didn't change, no validation is necessary */
/* except all-entity entries, these are always validated (per entity) */
if t_sScanDaemonLocation.tc_Status <> "N"
and t_sScanDaemonLocation.tcCompanyCode <> ""
then do:
find t_iScanDaemonLocation where
t_iScanDaemonLocation.tc_Rowid = t_sScanDaemonLocation.tc_Rowid
no-error.
if not available t_iScanDaemonLocation
then do:
<M-1 run SetMessage
(input trim(#T-10'Internal error: no initial record found for modified ScanDaemonLocation record.':255(998716604)T-10#) (icMessage),
input '' (icArguments),
input '' (icFieldName),
input '' (icFieldValue),
input 'E' (icType),
input 3 (iiSeverity),
input t_sScanDaemonLocation.tc_Rowid (icRowid),
input 'BLF-447':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BScanDaemon>
assign oiReturnStatus = -3.
return.
end.
if t_sScanDaemonLocation.ScanDaemonLocationDir = t_iScanDaemonLocation.ScanDaemonLocationDir
then next.
end.
assign vcDaemonAppServerURL = if t_sfcDaemon.DaemonAppserver = "" or
t_sfcDaemon.DaemonAppserver = ?
then "local"
else t_sfcDaemon.DaemonAppserver.
if vhTDUtil = ?
then do:
<M-2 run Main (input viSessionId (iiSessionId)) in TDaemonUtility>
vhTDUtil = vhFcComponent.
end.
vhFcComponent = vhTDUtil.
<M-3 run GetFileType
(input {&SCANDAEMON} (icDaemonName),
input t_sScanDaemonLocation.ScanDaemonLocationDir (icFileName),
input vcDaemonAppServerURL (icDaemonAppserverUrl),
output vcFileType (ocFileType),
output vcMessage (ocMessage),
output viFcReturnSuper (oiReturnStatus)) in TDaemonUtility>
if viFcReturnSuper <> 0
then assign oiReturnStatus = viFcReturnSuper.
if vcMessage <> ""
then do:
<M-4 run SetMessage
(input vcMessage (icMessage),
input '' (icArguments),
input 'tScanDaemonLocation.ScanDaemonLocationDir' (icFieldName),
input t_sScanDaemonLocation.ScanDaemonLocationDir (icFieldValue),
input 'E' (icType),
input 3 (iiSeverity),
input t_sScanDaemonLocation.tc_Rowid (icRowid),
input 'BLF-448':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BScanDaemon>
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-5 run SetMessage
(input trim(#T-11'The directory specified is not valid, would you like to create it?':255(998716602)T-11#) (icMessage),
input '' (icArguments),
input 'tScanDaemonLocation.ScanDaemonLocationDir' (icFieldName),
input t_sScanDaemonLocation.ScanDaemonLocationDir (icFieldValue),
input 'W' (icType),
input 4 (iiSeverity),
input t_sScanDaemonLocation.tc_Rowid (icRowid),
input 'BLF-449':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BScanDaemon>
if t_sScanDaemonLocation.tcCompanyCode = ""
then do:
<Q-40 run CompanyByAll (all) (Read) (NoCache)
(input 0, (CompanyId)
input '', (CompanyCode)
input true, (CompanyIsActive)
output dataset tqCompanyByAll) in BCompany>
for each tqCompanyByAll on error undo, throw:
create tDirectoryToCreate.
assign tDirectoryToCreate.tcDirectoryName = t_sScanDaemonLocation.ScanDaemonLocationDir
+ "/" + tqCompanyByAll.tcCompanyCode
tDirectoryToCreate.tcDaemonName = {&SCANDAEMON}
tDirectoryToCreate.tcDaemonAppserver = vcDaemonAppServerURL.
end.
end.
else do:
create tDirectoryToCreate.
assign tDirectoryToCreate.tcDirectoryName = t_sScanDaemonLocation.ScanDaemonLocationDir
tDirectoryToCreate.tcDaemonName = {&SCANDAEMON}
tDirectoryToCreate.tcDaemonAppserver = vcDaemonAppServerURL.
end.
oiReturnStatus = 1.
end.
else
/* Check if you can write to the directory */
if index(vcFileType, "W") = 0
then do:
<M-6 run SetMessage
(input trim(#T-9'You do not have write permissions for this directory.':255(9365)T-9#) (icMessage),
input '' (icArguments),
input 'tScanDaemonLocation.ScanDaemonLocationDir' (icFieldName),
input t_sScanDaemonLocation.ScanDaemonLocationDir (icFieldValue),
input 'E' (icType),
input 3 (iiSeverity),
input t_sScanDaemonLocation.tc_Rowid (icRowid),
input 'BLF-450':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BScanDaemon>
assign oiReturnStatus = -1.
end.
else
if t_sScanDaemonLocation.tcCompanyCode = ""
then do:
if vhTDUtil = ?
then do:
<M-92 run Main (input viSessionId (iiSessionId)) in TDaemonUtility>
vhTDUtil = vhFcComponent.
end.
<Q-95 run CompanyByAll (all) (Read) (NoCache)
(input 0, (CompanyId)
input '', (CompanyCode)
input true, (CompanyIsActive)
output dataset tqCompanyByAll) in BCompany>
for each tqCompanyByAll on error undo, throw:
vhFcComponent = vhTDUtil.
<M-91 run GetFileType
(input {&SCANDAEMON} (icDaemonName),
input t_sScanDaemonLocation.ScanDaemonLocationDir + '/' + tqCompanyByAll.tcCompanyCode (icFileName),
input vcDaemonAppServerURL (icDaemonAppserverUrl),
output vcFileType (ocFileType),
output vcMessage (ocMessage),
output viFcReturnSuper (oiReturnStatus)) in TDaemonUtility>
if viFcReturnSuper <> 0
then assign oiReturnStatus = viFcReturnSuper.
if vcMessage <> ""
then do:
<M-59 run SetMessage
(input vcMessage (icMessage),
input '' (icArguments),
input 'tScanDaemonLocation.ScanDaemonLocationDir' (icFieldName),
input t_sScanDaemonLocation.ScanDaemonLocationDir + '/' + tqCompanyByAll.tcCompanyCode (icFieldValue),
input 'E' (icType),
input 3 (iiSeverity),
input t_sScanDaemonLocation.tc_Rowid (icRowid),
input 'blf-557700':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BScanDaemon>
end.
if oiReturnStatus < 0
then return.
if vcFileType = ?
then do:
create tDirectoryToCreate.
assign tDirectoryToCreate.tcDirectoryName = t_sScanDaemonLocation.ScanDaemonLocationDir
+ "/" + tqCompanyByAll.tcCompanyCode
tDirectoryToCreate.tcDaemonName = {&SCANDAEMON}
tDirectoryToCreate.tcDaemonAppserver = vcDaemonAppServerURL.
end.
end.
end.
end.
finally:
if vhTDUtil <> ?
then do:
run gipr_DeleteProcedure in vhTDUtil.
delete procedure vhTDUtil.
end.
end finally.