我有以下要求:
startValue
、endValue
和 change
的三个字段中包含的值。change
计算为 (endValue-startValue)/startValuechange
与CSV文件中提供的change
进行比较,以备记录。如果小数位数相同,则记录警告。在任何情况下继续第 4 步。change
替换 CSV 文件中的 change
值。否则保持 CSV 文件不变。空行、行终止符、标题和所有其他字段值应保持不变。我知道两种方法。
方法 1
from("{{route.getCsvFile}}")
.unmarshal(new BindyCsvDataFormat(MyValueChange.class))`
.process(myProcessor) // calculates `change` and replaces CSV `change` value
.to("bean-validator:changeValidator") // does step 3
.marshal(new BindyCsvDataFormat(MyValueChange.class))
.to("{{route.putCsvFile}}");
问题:我不想将所有 CSV 字段解组为 Java 对象。我只需要这三个字段即可使用
change
。 CSV 文件包含 75 个其他字段。
方法 2
from("{{route.getCsvFile}}")
.unmarshal(new CsvDataFormat())
.process(myProcessor)
.marshal(new CsvDataFormat())
.to("{{route.putCsvFile}}");
问题:
myProcessor
现在必须包含代码来解析List
的String
,并且必须包含代码来验证bean(而不是使用Camel对bean验证的调用)。
有没有办法只对三个字段使用 bindy,然后使用该 bean 仅替换原始 CSV 数据中的
change
值?