文件处理设计建议

时间:2014-10-10 17:56:48

标签: java csv apache-camel

我正在开发一个使用apache camel处理多个csv文件的应用程序。处理涉及多次转换和验证。

文件格式可以是动态的,但我们将始终在它到达之前获取csv标头。 每次新格式到达时我都不想添加新模型,而是想创建一个带有键值对的Map。 但是对于简单的验证和复杂的规则,我不得不将它转换为bean(因为使用了drools和bean验证)。

如果我为传入文件创建了许多模型,那么camel处理器必须有很多条件语句来选择正确的处理策略。可能是(坏主意)或基于类型的策略选择。

有人可以建议我采用一种设计方法来解决这个问题。

1 个答案:

答案 0 :(得分:0)

使用Camel CSV组件获取包含键值对的地图的列表:

final CsvDataFormat format = new CsvDataFormat();
format.setUseMaps(true);
format.setDelimiter(",");

from("direct:start")
    .unmarshal(format)
    .process(new Processor() {
        @Override
        public void process(final Exchange exchange) throws Exception {
            final List<Map<String, String>> body = exchange.getIn().getBody(List.class);
            // transform and/or validate data...  
     });

处理器可以将您的数据转换为Java bean或直接验证内容。