Создание нескольких файлов после получения сообщения очереди - PullRequest
0 голосов
/ 01 марта 2019

У меня есть проект, который читает из mongodb и отправляет эту информацию в очередь.мой слушатель получает сообщение об очереди из облака.Я могу создать файл .txt, который вводит всю информацию из очереди.Моя проблема, которую я искал, заключается в следующем: как я могу отсортировать определенное поле внутри POJO (IBusiness1, IBusiness2, IBusiness3) и создать файл для каждого из них?Следующий код позволяет мне создать только 1 текстовый файл, и он не сортирует поле:

    public static void main(String[] args) {
        SpringApplication.run(PaymentPortalBatchListenerApplication.class, args);
    }

    private class MessageHandler implements IMessageHandler {
        private final Logger logger = LoggerFactory.getLogger(MessageHandler.class);

        public CompletableFuture<Void> onMessageAsync(IMessage message) {
            System.out.println("received "+message.getBody());
            ObjectMapper om = new ObjectMapper();
            PortalList auditList = null;

            try {
                auditList = om.readValue( message.getBody(), PortalList.class );
                System.out.println( "**Audit Message   " + auditList );
                logger.info( "Creating file");
                String exportFilePath = "C:\\filewriter\\IBusiness1 " + 
                LocalDateTime.now().format(formatter) + ".txt";
                File file = new File(exportFilePath);
                FileWriter writeToFile = new FileWriter(file);
                String exportFileHeader = "CREATE_DTTM|FNAME|LNAME|IBusiness";
                StringHeaderWriter headerWriter = new 
                StringHeaderWriter(exportFileHeader);
                writeToFile.write(exportFileHeader);
                writeToFile.write( String.valueOf( headerWriter));
                writeToFile.write( String.valueOf(auditList));
                writeToFile.flush();

            } catch (IOException e) {
                e.printStackTrace();
            }

//          System.out.println(auditList);
            return CompletableFuture.completedFuture(null);
        }

1 Ответ

0 голосов
/ 04 марта 2019

Вот что я сделал:

PaymentPortalBean = контрольный список POJO = предварительная копия PPB

PortalList =

    import lombok.Data;

import java.util.List;

@Data
public class PortalList{

    private List<PaymentPortalBean> portalList;
}

ответ на создание файлов:

         for(PaymentPortalBean bean: auditList.getPortalList()) {
                if(bean.RxBusiness().contains( "IBusiness")){
                    File file = new File( exportFilePath );
                    FileWriter writeToFile = new FileWriter( file );
                    String exportFileHeader = CREATE_DTTM|FNAME|LNAME|IBusiness";
                    writeToFile.write( exportFileHeader );
                    writeToFile.write( String.valueOf(bean));
                    writeToFile.flush();
                }

, который работал, чтобы найти IBusiness, я создал еще два условных оператора для нужных мне типов.работает нормально.Mongo db смог отделить нужные мне поля.

...