0
DBデータに基づくフラットファイルレポートを作成するためにスプリングバッチを使用しています。 I「は、フラットファイルの形式1 フラットファイルのヘッダーに行数を入れる
以下HEADER1(ファイル名) HEADER2(レコード数が含まれています)
HEADER3(列名)に似て
RECORD1
RECORD2
RECORDN
FOOTER
FlatFileHeaderCallbackおよびFlatFileHeaderCallbackインターフェイスを使用して、ヘッダーとフッターを適切に記述します。私はフッターに行数を挿入することができるよしかし、私はヘッダーでそれを記述しようとしていますときには、returing 0
てFileWriter:
private String templateDelimiter;
private String fileName;
private int rowCount = 0;
private String headerTemplate;
private String footerTemplate;
private String columnHeaders;
private Map<String, String> templateProps;
private FlatFileItemWriter<String[]> delegate;
public void writeFooter(Writer writer) throws IOException {
if (footerTemplate != null) {
initializeTemplateProps();
templateProps.put(Constant.TEMPLATE_DELIMITER + Constant.ROWCOUNT + Constant.TEMPLATE_DELIMITER, "" + rowCount);
writer.write(TextTemplate.merge(footerTemplate, templateProps));
}
}
public void writeHeader(Writer writer) throws IOException {
if (headerTemplate != null) {
initializeTemplateProps();
writer.write(TextTemplate.merge(headerTemplate, templateProps));
}
}
protected void initializeTemplateProps() {
if (templateProps == null) {
templateProps = new HashMap<String, String>();
templateProps.put(Constant.TEMPLATE_DELIMITER + Constant.FILENAME + Constant.TEMPLATE_DELIMITER, fileName);
templateProps.put(Constant.TEMPLATE_DELIMITER + Constant.SCHEDULE_DATE + Constant.TEMPLATE_DELIMITER, System.getProperty(Constant.SCHEDULE_DATE));
templateProps.put(Constant.TEMPLATE_DELIMITER + Constant.COLUMNHEADER + Constant.TEMPLATE_DELIMITER, columnHeaders);
templateProps.put(Constant.TEMPLATE_DELIMITER + Constant.NEWLINE + Constant.TEMPLATE_DELIMITER, System.lineSeparator());
templateProps.put(Constant.TEMPLATE_DELIMITER + Constant.PSV_FILE_HEADER + Constant.TEMPLATE_DELIMITER +
Constant.TEMPLATE_DELIMITER+Constant.NEWLINE + Constant.TEMPLATE_DELIMITER+Constant.TEMPLATE_DELIMITER+Constant.COLUMNHEADER+Constant.TEMPLATE_DELIMITER,headerTemplate);
}
templateProps.put(Constant.TEMPLATE_DELIMITER + Constant.ROWCOUNT + Constant.TEMPLATE_DELIMITER, "" + rowCount);
}
public void write(List<? extends String[]> items) throws Exception {
rowCount += items.size();
delegate.write(items);
}
私は行数を挿入することができるよ