diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/DOCXReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/DOCXReportBuilder.java index ab27e7d9b..ebf56d43d 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/DOCXReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/DOCXReportBuilder.java @@ -1,12 +1,16 @@ package ru.spcex.clearing.reports.services.builders; import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import ru.spcex.clearing.reports.reports.AbstractReport; +import java.io.File; import java.io.IOException; public abstract class DOCXReportBuilder extends FileReportBuilder { - protected DOCXReportBuilder(Class reportClass, Logger log, String filename) throws IOException { - super(reportClass, log, filename); + private final Logger log = LoggerFactory.getLogger(getClass()); + + protected DOCXReportBuilder(Class reportClass, File templateResource) throws IOException { + super(reportClass); } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/FileReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/FileReportBuilder.java index 01ffe19bb..ee7db9533 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/FileReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/FileReportBuilder.java @@ -1,29 +1,12 @@ package ru.spcex.clearing.reports.services.builders; -import org.slf4j.Logger; import ru.spcex.clearing.reports.reports.AbstractReport; -import java.io.File; -import java.io.IOException; - public abstract class FileReportBuilder { protected final Class reportClass; - protected final Logger log; - protected final String filename; - protected final File file; - protected FileReportBuilder(Class reportClass, Logger log, String filename) throws IOException { + protected FileReportBuilder(Class reportClass) { this.reportClass = reportClass; - this.log = log; - this.filename = filename; - this.file = new File(filename); - if (file.exists()) { - if (file.isFile()) { - log.warn("Файл {} существует и будет перезаписан", filename); - boolean deleteOk = file.delete(); - if (!deleteOk) throw new IOException("Не удалось удалить файл " + filename); - } else throw new IOException(filename + " существует, но не является файлом"); - } } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java index ce85af837..a1b2e0849 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java @@ -4,16 +4,48 @@ import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.naming.NoNameCoder; import com.thoughtworks.xstream.io.xml.XppDriver; import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import ru.spcex.clearing.reports.reports.AbstractReport; +import ru.spcex.clearing.reports.services.ReportDataCollector; +import java.io.File; +import java.io.FileOutputStream; import java.io.IOException; +import java.time.LocalDate; +import java.time.LocalDateTime; + +public class XMLReportBuilder extends FileReportBuilder { + private final Logger log = LoggerFactory.getLogger(getClass()); -public abstract class XMLReportBuilder extends FileReportBuilder { protected final XStream xStream; - protected XMLReportBuilder(Class reportClass, Logger log, String filename) throws IOException { - super(reportClass, log, filename); + protected final ReportDataCollector collector; + + public XMLReportBuilder(Class reportClass, ReportDataCollector collector) { + super(reportClass); + this.collector = collector; this.xStream = new XStream(new XppDriver(new NoNameCoder())); xStream.processAnnotations(reportClass); } + + public File createReport(LocalDate startDate, LocalDate endDate) throws IOException { + R report = collector.collectReportWithPeriod(startDate, endDate); + String reportName = report.getReportName(LocalDateTime.now()); + + if (System.getProperty("os.name").contains("windows")) reportName = reportName.replace(":", "_"); + + String reportFileName = reportName + ".xml"; + File reportFile = new File(reportFileName); + if (reportFile.exists()) { + if (reportFile.isFile()) { + log.warn("Файл {} существует и будет перезаписан", reportFileName); + boolean deleteOk = reportFile.delete(); + if (!deleteOk) throw new IOException("Не удалось удалить файл " + reportFileName); + } else throw new IOException(reportFileName + " существует, но не является файлом"); + } + try (FileOutputStream fos = new FileOutputStream(reportFile)) { + xStream.toXML(report, fos); + } + return reportFile; + } }