3
我正在使用camel和smooks編寫路由,生成器作爲JPA存儲庫生成JPA對象列表,我需要將它作爲固定寬度文件發送到sftp服務器。使用apache camel,smooks和flatpack
這是我想發生
- 它使用JPA生產對象的列表(我有這個)
- 一個Smooks對扁平封裝映射這需要XML版本的庫需要這個如上所述,並將其轉換爲一個固定的寬度文件中的列表的
- 其與存儲庫開始,並以結束文件駱駝路線經由SFTP發送:
這裏是代碼我有這樣的:
public class RetirementRoute extends RouteBuilder {
@Override
public void configure() throws Exception {
onException(Throwable.class)
.maximumRedeliveries(3)
.useExponentialBackOff()
.backOffMultiplier(4)
.logRetryAttempted(true)
.handled(true)
.log(LoggingLevel.ERROR, "Error transmitting file to miliman")
.to("log:org.fuwt?level=ERROR&showAll=true");
//define the fixed width mapping
FlatpackDataFormat df = new FlatpackDataFormat();
df.setDefinition(new ClassPathResource("META-INF/smooks/fuintegration/retirement-fixed-width-mapping.xml"));
df.setFixed(true);
df.setIgnoreFirstRecord(false);
from("bean:retirementRepository?method=getRetirementMembers")
.to("log:org.fuwt?level=INFO")
.transacted("CRM_PROPAGATION_REQUIRED")
.routeId("retirement_member_exchange")
.aggregate(property("CamelCreatedTimestamp"), new RetirementAggregationStrategy()).completionFromBatchConsumer()
.marshal(df).log("log:org.fuwt?level=ERROR&showAll=true")
.to("file://Users/smohamed/tests/?fileName=marshal.test.txt");
}
}
然而,當我運行單元測試,我得到以下錯誤:
ArrayList cannot be converted to RetirementMember
我認爲這意味着扁平封裝不知道該怎麼辦該列表,並需要在每個對象的基礎上處理對象。
因此,我正在尋找的是類似freemaker的模板的Smooks映射,但不是一個freemaker的模板,我想用扁平的列定義:
<?xml version='1.0'?>
<!DOCTYPE PZMAP SYSTEM "flatpack.dtd" >
<PZMAP>
<COLUMN name="ssn" length="11" />
<COLUMN name="lastName" length="20" />
<COLUMN name="firstName" length="15" />
</PZMAP>
什麼是最好的方式去對這個?沒有太多的資料可用,我一直在尋找周
感謝
山姆