2012-01-24 10 views
1

以下のCSVをオブジェクトに変換できる必要があります。 これはBindyでも可能ですか?Apache Camel BindyでCSVファイル内のさまざまなレコードを処理する方法は?

H,header1,01/01/2012 
D,test11,1.00,10.00 
D,test12,2.00,20.00 
D,test13,3.00,30.00 
H,header2,01/02/2012 
D,test21,1.00,10.00 
D,test22,2.00,20.00 
D,test23,3.00,30.00 

私は2つのモデルのヘッダーと詳細を作成し、最後に私は、一覧がしたい: ヘッダー、詳細、詳細、詳細、ヘッダー、詳細、詳細、詳細オブジェクトを。

は、私は同じパッケージにこれらのモデルを入れて、それがBindyのように言って失敗していると、どのモデルを認識することができていないようです、私のテストを実行すると:

java.lang.AssertionError: mock://queue.csv Received message count. Expected: <1> but was: <0> 

はBindyでこれでも可能ですか?

答えて

0

実際にはこれは箱から出ることができないと思いますか?行がヘッダーかディテールかを判断するための方法(弁別子)が必要です。それは今私たちが持っている機能ではありません。

データを分割することもできますので、1つのヘッダ+詳細数があります。しかし、これはCamelに複数のメッセージがあることを必然的に伴います。

しかし、あなたの構造はかなりシンプルなようです。だからちょうど良い古き良きJavaコードを使用して、しばしばトリックを行います。

しかし、Apache Camelプロジェクトでは寄稿が大好きなので、このユースケースでJIRAチケットを開いて差別化機能を追加するといいでしょう。次に、タイプによって異なるCSVレコードを処理するのが少し簡単です。 http://camel.apache.org/contributing.html

+1

実際、この問題に対する答えは、BindyではなくBeanIO.orgフレームワークを使用していました。これは、このシナリオをそのままの状態でサポートします。 – goe

+0

ニース、ビーニオは良いライブラリのように見えます。 XMLマッピングファイルではなく、より簡単なマッピングのための@ annotation configsでうまくいくでしょう。 –

関連する問題