24.27. ANT パスマッチャーを使用したフィルタリング
ANT パスマッチャーは AntPathMatcher に基づいています。
ファイルパスは、次のルールに一致します。
-
?1 文字に一致 -
*0 個以上の文字に一致 -
**パス内の 0 個以上のディレクトリーに一致
antInclude および antExclude オプションを使用すると、フィルターを定義することなく、ANT スタイルの包含/除外を簡単に指定できます。詳細については、上記の URI オプションを参照してください。
以下のサンプルは、その使用方法を示しています。
24.27.1. コンパレータを使用した並べ替え リンクのコピーリンクがクリップボードにコピーされました!
Camel は、プラグイン可能な並べ替え戦略をサポートしています。この戦略は、Java の java.util.Comparator でビルドを使用することです。次に、このようなコンパレーターを使用してエンドポイントを設定し、処理する前に Camel にファイルをソートさせることができます。
サンプルでは、ファイル名でソートする独自のコンパレータを作成しました。
次に、sorter オプションを使用してルートを設定し、Spring XML ファイルで定義したソーター (mySorter) を参照できます。
URI オプションは、# 構文を使用して Bean を参照できます。
上記の Spring DSL アプリケーションでは、id の前に # を付けることで、レジストリー内の Bean を参照できます。したがって、sorter=#mySorter と記述すると、Camel はレジストリーで ID が mySorter の Bean を探すように指示されます。
24.27.2. sortBy を使用した並べ替え リンクのコピーリンクがクリップボードにコピーされました!
Camel は、プラグイン可能な並べ替え戦略をサポートしています。このストラテジーは、File 言語を使用して並べ替えを設定することです。sortBy オプションは次のように設定されます。
sortBy=group 1;group 2;group 3;...
sortBy=group 1;group 2;group 3;...
各グループはセミコロンで区切ります。単純な状況では、1 つのグループのみを使用するため、単純な例は次のようになります。
sortBy=file:name
sortBy=file:name
これはファイル名でソートされます。グループの先頭に reverse: を付けることで順序を逆にすることができるため、ソートは Z..A: になります。
sortBy=reverse:file:name
sortBy=reverse:file:name
File 言語の全機能を使用できるので、他のパラメーターの一部を使用できるので、ファイルサイズで並べ替える場合は、次のようにします。
sortBy=file:length
sortBy=file:length
文字列の比較に ignoreCase: を使用して、大文字と小文字を区別しないように設定できます。そのため、ファイル名の並べ替えを使用したいが大文字と小文字を区別したくない場合は、次のようにします。
sortBy=ignoreCase:file:name
sortBy=ignoreCase:file:name
ignore case と reverse を組み合わせることができますが、reverse を最初に指定する必要があります。
sortBy=reverse:ignoreCase:file:name
sortBy=reverse:ignoreCase:file:name
以下のサンプルでは、最後に変更されたファイルで並べ替えたいので、次のようにします。
sortBy=file:modified
sortBy=file:modified
次に、2 番目のオプションとして名前でグループ化し、同じ変更を含むファイルが名前でソートされるようにします。
sortBy=file:modified;file:name
sortBy=file:modified;file:name
ここで問題が発生しました。それを見つけることができますか?ファイルの変更されたタイムスタンプはミリ秒単位なので細かすぎますが、日付のみで並べ替えてから名前でサブグループ化したい場合はどうすればよいでしょうか?
File 言語の実際の機能で、パターンをサポートする date コマンドを使用できます。したがって、これは次のように解決できます。
sortBy=date:file:yyyyMMdd;file:name
sortBy=date:file:yyyyMMdd;file:name
ええ、それは非常に強力です。ちなみに、グループごとにリバースを使用することもできるので、ファイル名を逆にすることができます。
sortBy=date:file:yyyyMMdd;reverse:file:name
sortBy=date:file:yyyyMMdd;reverse:file:name