2016-06-30 7 views
0

Ich habe eine Liste von Textdateien haben Datum in Dateiname, wie A_2016_12_30 usw. Ich benötige, um Datei nur nach Datum sortiert abzurufen.Wie polled Datei mit Dateiname Datum in Apache Kamel?

Unten finden Sie die Liste der Dateien.

enter image description here

Ich habe unten Parameter mit Dateikomponente versucht.

  1. Es funktioniert gut zum Sortieren von Datei mit Datei Zeitstempel.

    file://<some location>?sortBy=file:modified 
    
  2. Es funktioniert nicht basierend auf Dateiname. Problemstellung hier.

    file: // sortBy = date: file: YYYY-MM-DD

Gibt es eine andere Möglichkeit, diese Sortierung nach Dateidatum mit regex oder etwas zu tun?

Im Folgenden sind einige nützliche Links:

  1. http://camel.apache.org/file-language.html
  2. http://camel.apache.org/file2.html

Antwort

3

Ihre eigene Datei schreiben Logik in Java Sortieren und konfigurieren sie die sorter Option.

Die Optionen für die integrierte Sortierung sind für normale Anwendungsfälle vorgesehen. Sie haben ein spezielles Bedürfnis und müssen dann ein bisschen Code schreiben, um diese Art von Sortierung durchzuführen.

3

Es ist ein Beispiel der Sortierlogik, die Claus sagte.

package com.example; 
import java.util.Comparator; 
import org.apache.camel.component.file.GenericFile; 

public class DateFileSorter<T> implements Comparator<GenericFile<T>> { 

    @Override 
    public int compare(GenericFile<T> f1, GenericFile<T> f2) { 
     String fileDate1 = getDateFromFilename(f1.getFileName()); 
     String fileDate2 = getDateFromFilename(f2.getFileName()); 
     return fileDate1.compareTo(fileDate2); 
    } 

    /** 
    * Return date from file name between "_" and "." 
    */ 
    private String getDateFromFilename(String fileName) { 
     return fileName.substring(fileName.indexOf("_") + 1, fileName.indexOf(".")); 
    } 
} 

als diese Zeile in beans.xml Datei hinzufügen und Sortierer = # fileSorter Endpunkt Datei.

<bean id="fileSorter" class="com.example.DateFileSorter"/> 

Ihre Dateien nach dem Lesen sortiert.

: C_2016-01-14.xml 
: A_2016-01-15.xml 
: C_2016-06-01.xml 
: A_2016-06-02.xml 
: C_2016-06-02.xml 
: A_2016-06-03.xml 
: C_2016-06-03.xml 
: A_2016-06-04.xml 
: C_2016-12-29.xml 
: A_2016-12-30.xml