2016-06-30 11 views
0

私はA_2016_12_30などのようなファイル名の日付を持つテキストファイルのリストを持っています。私は日付だけでファイルをポーリングする必要があります。ファイル名を使用してファイルをポーリングする方法apache camelの日付?

以下はファイルの一覧です。

enter image description here

私は、ファイルの構成要素とパラメータの下に試してみました。

  1. ファイルのタイムスタンプを使用してファイルをソートするには問題ありません。

    file://<some location>?sortBy=file:modified 
    
  2. ファイル名に基づいて動作しません。ここで問題に直面する。

    ファイル:// SORTBY =日付:?ファイル:YYYY-MM-DD

正規表現か何かを使用してファイルの日付によって、このソートを行う別の方法はありますか?

以下はいくつかの有用なリンクです:

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

答えて

3

は、Javaのロジックをソートする独自のファイルを作成し、sorterオプションを使用して設定します。

オプションによる組み込みソートは、通常のソートユースケース用です。あなたには特別な必要があり、この種の並べ替えを行うためのコードを書く必要があります。

3

これは、Clausが言ったソートロジックの例です。

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(".")); 
    } 
} 

この行をbeans.xmlファイルに追加し、sorter =#fileSorter to Fileエンドポイントを追加します。

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

ファイルは読んだ後に注文します。

: 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 
関連する問題