Я новичок в мире Spring-Batch и пытаюсь сделать следующее:
Чтение из файла, который внутри чего-то похожего:
65198;4
65257;9
66745;14
67091;3
64206;10
112233;8
и один из этих кодов не существует.
Моя цель - записать в файл с именем «Exist.txt» существующие коды и в другой файл с именем «NoExist.txt» другие.
У меня естьтолько один процессор, который делает эту работу.Здесь процессор
@Bean
@StepScope
public ItemProcessor<HanaskaAssitedRequestSendedFileVO,AssitedRequestFileVO> processor(IHorecaAssistedRequestProcessorGestor horecaAssistedRequestProcessorGestor){
return new ItemProcessor<HanaskaAssitedRequestSendedFileVO,AssitedRequestFileVO>() {
@Override
public AssitedRequestFileVO process(HanaskaAssitedRequestSendedFileVO item) throws Exception {
AssitedRequestFileVO assitedRequestFileVO = new AssitedRequestFileVO();
Set<String> itemsBarCode = new HashSet<>();
BusquedaArticulosRequestVO busquedaArticulosRequestVO = new BusquedaArticulosRequestVO();
return horecaAssistedRequestProcessorGestor.getDataToWrite(item,assitedRequestFileVO, itemsBarCode,
busquedaArticulosRequestVO);
}
};
}
и она - это жест, который возвращает данные для записи в файл
@Override
public AssitedRequestFileVO getDataToWrite(HanaskaAssitedRequestSendedFileVO item,
AssitedRequestFileVO assitedRequestFileVO, Set<String> itemsBarCode,
BusquedaArticulosRequestVO busquedaArticulosRequestVO) {
this.validateData(busquedaArticulosRequestVO, item, itemsBarCode, assitedRequestFileVO);
return assitedRequestFileVO;
}
private void validateData(BusquedaArticulosRequestVO busquedaArticulosRequestVO,
HanaskaAssitedRequestSendedFileVO item, Set<String> itemsBarCode,
AssitedRequestFileVO assitedRequestFileVO) {
try {
this.setDataToBusquedaArticulosRequestVO(busquedaArticulosRequestVO, item, itemsBarCode);
Map<String, ArticuloVentaVO> mapItem = horecaAssistedRequestSpirngBatchService
.getDataItem(busquedaArticulosRequestVO).getMapArticuloVentaVO();
Optional<Entry<String, ArticuloVentaVO>> optItem = mapItem.entrySet().stream().findAny();
ArticuloVentaVO articuloVentaVO = null;
if (optItem.isPresent()) {
articuloVentaVO = optItem.get().getValue();
assitedRequestFileVO.setItemCode(this.addDigitsToData(articuloVentaVO.getCodigoBarras(),12));
assitedRequestFileVO.setItemPresent(true);
assitedRequestFileVO.setMeasureUnit(this.addDigitsToData(articuloVentaVO.getUnidadManejoVenta().toString(),3));
assitedRequestFileVO.setRequestedQuantity(this.addDigitsToData(item.getCantidadPedida(),3));
assitedRequestFileVO.setStoreCode("711");
assitedRequestFileVO.setStoreCode("096");
}
} catch (Exception e) {
assitedRequestFileVO.setItemCode(item.getCodigoBarras());
assitedRequestFileVO.setItemPresent(false);
logger.info("Error->"+e.getMessage());
}
}
Код выше возвращает, если код существует или нет.
Так как мне написать два разных файла с разными именами, отфильтровывая и записывая коды, которые существуют или отсутствуют в соответствующих файлах в java-config?
Заранее спасибо !!!