我正在开发一个使用apache camel处理多个csv文件的应用程序。处理涉及多次转换和验证。
文件格式可以是动态的,但我们将始终在它到达之前获取csv标头。 每次新格式到达时我都不想添加新模型,而是想创建一个带有键值对的Map。 但是对于简单的验证和复杂的规则,我不得不将它转换为bean(因为使用了drools和bean验证)。
如果我为传入文件创建了许多模型,那么camel处理器必须有很多条件语句来选择正确的处理策略。可能是(坏主意)或基于类型的策略选择。
有人可以建议我采用一种设计方法来解决这个问题。
答案 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或直接验证内容。