diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/CSVReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/CSVReportBuilder.java index 6f07fde90..53a3b4243 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/CSVReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/CSVReportBuilder.java @@ -1,12 +1,13 @@ package ru.spcex.clearing.reports.builders; -import com.opencsv.CSVWriterBuilder; +import com.opencsv.CSVWriter; import com.opencsv.ICSVWriter; import com.opencsv.bean.*; import com.opencsv.exceptions.CsvBadConverterException; import com.opencsv.exceptions.CsvChainedException; import com.opencsv.exceptions.CsvFieldAssignmentException; import com.opencsv.exceptions.CsvRequiredFieldEmptyException; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ru.clearing.classes.statics.data.misc.Session; @@ -91,23 +92,6 @@ public abstract class CSVReportBuilder
{ */ protected abstract void collect(P params); - /** - * Создает CSVWriter. Если требуется изменить параметры выходного CSV файла, этот метод следует переопределить. - * - * @param file Файл отчета - * @return Созданный CSVWriter - *
- * todo check it - */ - protected ICSVWriter createCsvWriter(File file) throws IOException { - Writer writer = new FileWriter(file); - CSVWriterBuilder csvWriterBuilder = new CSVWriterBuilder(writer) - .withLineEnd("\n") - .withSeparator(',') - .withQuoteChar('\"'); - return csvWriterBuilder.build(); - } - public File createReport(P params, File outFolder) { assert outFolder != null && outFolder.isDirectory(); @@ -118,10 +102,11 @@ public abstract class CSVReportBuilder
{
assert rows != null;
- try (Writer writer = new FileWriter(reportFile)) {
+ try (Writer writer = new FileWriter(reportFile);
+ ICSVWriter icsvWriter = new CustomCSVWriter(writer)) {
CustomStrategy {
return sessionIds.stream().toList();
}
+ static class CustomCSVWriter extends CSVWriter {
+ public CustomCSVWriter(Writer writer) {
+ super(writer);
+ }
+
+ @Override
+ protected void writeNext(String[] nextLine, boolean applyQuotesToAll, Appendable appendable) throws IOException {
+ if (nextLine != null) {
+ for (int i = 0; i < nextLine.length; i++) {
+ if (StringUtils.isEmpty(nextLine[i])) {
+ nextLine[i] = null;
+ }
+ }
+ }
+ super.writeNext(nextLine, applyQuotesToAll, appendable);
+ }
+ }
+
static class CustomStrategy