ich habe in mehreren Schritten ermittelt, wieviele Dateien ich von einem FTP-Verzeichnis holen will. Davon müssen später EINIGE umbenannt werden, aber eben nicht alle. Daher kann ich dem Rename-Step nicht einfach die Outputlist des FTP-Downloadsteps geben. Meine Versuche, irgendeine Liste mit den Dateinamen zu erstellen, die der Step dann umbenennt, sind alle fehlgeschlagen. Wie mache ich das am besten?
Gerne. Ich muß immer die neuesten Dateien abrufen, daher ist die Lösung:
Abrufen der (aller) Dateien (nur Liste)
TextHTMLWriter:
FileName;LastModifiedAt
<#list LOCAL_DOWLOADED_FILEMETADATA@FTPDownload_151.getRows() as row>
${row.get(„FileName“)!};${row.get(„LastModifiedAt“)!}
</#list>
StringToFile
csvReader
Mapper; für jede Datei ermitteln, ob das LastModifiedAt-Datum nach dem Prop_lastruntime-Datum liegt (${isDateAfter…), Spalte „NeueDatei“
Filter: NeueDatei! == ‚true‘
Mapper; Gruppieren über eine dummy-Spalte mit Inhalt 1 , Zeilen zählen der NeueDatei-Spalte
==> das ist die Anzahl der neuen Dateien
TextHtmlWriter mit …firstRow auf den Output dieses Mappers, dabei die aggregierte Spalte referenzieren. Hier mache ich es aber so - der Flow läuft sonst in einen Error, wenn er KEINE neuen Dateien findet. Daher lasse ich in dem Fall eine 1 setzen:
<#if !(output@SpreadsheetFilter_156?? && output@SpreadsheetFilter_156.hasRows())>1<#else>${spreadsheet@SpreadsheetMapper_157.firstRow(„NeueDateiAnzahl“)}</#if>
FTPDownload: In „Limit“ den Output aus Step 8 schreiben. In „sortOrder“ „Neueste zuerst“ wählen
Jetzt die Flowsteps laufen lassen. In meinem Fall werden die runtergeladenen Dateien erstmal durch einen XMLReader geschickt - da muß man beim Parsen dann den Dateinamen jeweils reinschreiben lassen (${row.addCol(„filename“, _inputFilename!)}) und diesen immer durchschleifen. Der Step, der nun darüber entscheidet, ob die Datei umbenannt werden kann, ist einer, der ggf. nach einigen Filter usw. liegt. Wichtig ist jetzt, daß man danach noch die Spalte mit den Filenames hat. Die hält man mit einem Append-Step gegen die ursprüngliche Dateiliste, filtert, welche auf beiden Seiten vorhanden sind, und jetzt kommt das Entscheidende, für das ich erst keine Lösung gefunden hatte:
FTPDownloadList
Als Input gibt man hier den Output des Filters rein. Leider muß man hier die Dateien selbst runterladen, vielleicht gibt es dafür auch noch eine elegantere Lösung. Jedenfalls kommt im Anschluß