Liste von Dateinamen in den Step FTPRename einspeisen

UPDATE: Ich habe das Problem gelöst

Hallo Team,

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?

Gruß, Micha
podcomm e-commerce management

Hallo Micha,
lass uns teilhaben an deiner Lösung :wink:

Gruß Dirk

Gerne. Ich muß immer die neuesten Dateien abrufen, daher ist die Lösung:

  1. Abrufen der (aller) Dateien (nur Liste)
  2. TextHTMLWriter:
    FileName;LastModifiedAt
    <#list LOCAL_DOWLOADED_FILEMETADATA@FTPDownload_151.getRows() as row>
    ${row.get(„FileName“)!};${row.get(„LastModifiedAt“)!}
    </#list>
  3. StringToFile
  4. csvReader
  5. Mapper; für jede Datei ermitteln, ob das LastModifiedAt-Datum nach dem Prop_lastruntime-Datum liegt (${isDateAfter…), Spalte „NeueDatei“
  6. Filter: NeueDatei! == ‚true‘
  7. Mapper; Gruppieren über eine dummy-Spalte mit Inhalt 1 , Zeilen zählen der NeueDatei-Spalte
    ==> das ist die Anzahl der neuen Dateien
  8. 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>
  9. FTPDownload: In „Limit“ den Output aus Step 8 schreiben. In „sortOrder“ „Neueste zuerst“ wählen
  10. 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:
  11. 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ß
  12. FTPRename
    mit den inputFiles aus 11.

Das war’s „schon“ :smiley:

Gruß Micha
podcomm e-commerce management

P.S. Wir nehmen gerne neue Projekte an

2 „Gefällt mir“