如何处理Apache Camel Bindy中CSV文件中的不同记录?

时间:2012-01-24 12:46:18

标签: java csv apache-camel

我需要能够将以下CSV转换为对象。 Bindy有可能吗?

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

我创建了两个模型Header和Detail,最后我想要一个List: 标题,细节,细节,细节,标题,细节,细节,细节对象。

当我将这些模型放在同一个包中并运行我的测试时,似乎Bindy无法识别哪个模型是哪个并且没有说:

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

这对Bindy来说甚至可能吗?

1 个答案:

答案 0 :(得分:0)

我实际上不认为这是可能的开箱即用?因为您需要一种方法(鉴别器)来确定行是标题还是细节。这不是我们现在所掌握的功能。

您可以分割数据,因此只有一个标题+详细信息。但这需要在Camel中有多条消息。

然而,您的结构似乎相当简单。因此,只需使用一些优秀的老式Java代码就可以解决这个问题。

然而,Apache Camel项目喜欢贡献,所以随意打开这个用例的JIRA票,然后添加一个识别功能将是一个很好的补充。然后,处理因类型不同而不同的CSV记录也会更容易一些。 http://camel.apache.org/contributing.html