Index: BL/Sys/FOP/Test.cls.xml =================================================================== diff -u -r2337 -r3196 --- BL/Sys/FOP/Test.cls.xml (.../Test.cls.xml) (revision 2337) +++ BL/Sys/FOP/Test.cls.xml (.../Test.cls.xml) (revision 3196) @@ -634,7 +634,23 @@ If DebugFtp Do . If 'Ftp.GetDirectory(.CurDir) Do WL^vhDBG("FTP: Can not get current dir!") Quit . Do WL^vhDBG("CurDir is now: "_CurDir) + + ; De placeholder vervangen + Set NaamMetPlaceholder=DestFName + Set NaamMetWildcard=##class(BL.Sys.FOP.CommonTasks).VervangPlaceholderZTSDoorWaarde(NaamMetPlaceholder,"*") + Set NaamZonderPlaceholder=##class(BL.Sys.FOP.CommonTasks).VervangPlaceholderZTSDoorWaarde(NaamMetPlaceholder) + Set DestFName=NaamZonderPlaceholder + Set IsPlaceholderVervangen = (NaamMetWildcard'=NaamZonderPlaceholder) + + d WLIP^vhDBG(97,"FTP before Delete Files") + d WLIP^vhDBG(97,NaamMetWildcard) + ; if placeholder, then kill previous files with similar name + Set MagFilesVerwijderen=(IsPlaceholderVervangen)&&(NaamMetWildcard["*") + If MagFilesVerwijderen { + Set scDelete=##class(BL.Sys.FOP.Test).VerwijderFilesViaPatternOnFtp(NaamMetWildcard,Ftp,0) ; Alternatieve methode is minder efficient, maar werkt wel + } + ; Send File to FTP If ('Ftp.Store(DestFName,SrcStream)) Do Quit sc . Set sc=$$$ERROR($$$GeneralError,"FTP: Failed to store file on FTP Server") @@ -667,6 +683,84 @@ ]]> + + +Bestanden op de FTP-site verwijderen volgens NaamMetWildcard +Dit is MDelete: een lijst ophalen via wildcard (pattern) + de files hiervan één voor één verwijderen via Ftp.Delete +Het ophalen van de lijst verloopt in-line, het verwijderen kan ge-jobbed worden (TO DO) +1 +NaamMetWildcard:%String,FtpClient:%Net.FtpSession,RunInNewJob:%Boolean=0 +%Status + + + + + +Geeft een lijst met bestanden terug die voldoen aan de opgegeven pattern (NaamMetWildcard) + +BELANGRIJK !!! +========== +Er zijn 2 veronderstellingen : + - er mogen geen spaties in de filenames staan (op de ftp-server) + - in de lijst die FTP teruggeeft staat de bestandsnaam in de laatste kolom; OPGELET : als dit verschillend is op andere systeem/omgeving, dan moet de code meer generiek gemaakt worden. + +Een alternatieve methode is Ftp.NameList(Path) , maar deze ondersteunt geen "wildcard matching". +1 +NaamMetWildcard:%String,FtpClient:%Net.FtpSession +%ListOfDataTypes + + + + +1 +LijstBestandenTeVerwijderen:%ListOfDataTypes,FtpClient:%Net.FtpSession +%Status + + + s sc=##class(BL.Sys.FOP.Test).SimulateAll() w $$ParseStatus^vhLib(sc)