reports-service добавил поддержку запуска SimpleReportCollector
This commit is contained in:
parent
324a1546c4
commit
c116c93b37
2 changed files with 54 additions and 18 deletions
|
|
@ -26,8 +26,8 @@ public class ReportsServiceApplication {
|
|||
//todo это тест. Переписать код с учётом параметров запуска - как сервис или разово все из командной строки.
|
||||
ReportsServiceCommand reportCommand = context.getBean(ReportsServiceCommand.class);
|
||||
reportCommand.writeAllXML();
|
||||
Logger log = LoggerFactory.getLogger(ReportsServiceApplication.class);
|
||||
log.info("Shutdown application after work");
|
||||
// Logger log = LoggerFactory.getLogger(ReportsServiceApplication.class);
|
||||
// log.info("Shutdown application after work");
|
||||
// context.close(); // todo если будет запущен как сервис, сделать выход опционально, по другому.
|
||||
} catch (Throwable e) {
|
||||
LoggerFactory.getLogger(ReportsServiceApplication.class).error("Report-service start failed: {} -> {}", e.getClass().getSimpleName(), ExceptionUtils.getStackTrace(e));
|
||||
|
|
|
|||
|
|
@ -30,23 +30,34 @@ public class ReportsServiceCommand implements InitializingBean {
|
|||
|
||||
protected ReportsServiceSettings settings;
|
||||
protected ImdgProvider imdg;
|
||||
protected List<ReportWithPeriodCollector> allReports; // Spring services
|
||||
private final Map<ReportId, ReportWithPeriodCollector> collectorForReportById;
|
||||
protected List<ReportWithPeriodCollector> allPeriodReports; // Spring services
|
||||
protected List<SimpleReportCollector> allSimpleReports;
|
||||
private final Map<ReportId, AbstractReportCollector> collectorForReportById;
|
||||
|
||||
@Autowired
|
||||
public ReportsServiceCommand(ImdgProvider imdg, List<ReportWithPeriodCollector> allReports, ReportsServiceSettings settings) {
|
||||
public ReportsServiceCommand(ImdgProvider imdg, List<ReportWithPeriodCollector> allPeriodReports,
|
||||
List<SimpleReportCollector> allSimpleReports,
|
||||
ReportsServiceSettings settings) {
|
||||
this.imdg = imdg;
|
||||
this.settings = settings;
|
||||
|
||||
this.allReports = allReports; // allReports = context.getBeansOfType(ReportDataCollector.class);
|
||||
this.allSimpleReports = allSimpleReports;
|
||||
this.allPeriodReports = allPeriodReports; // allReports = context.getBeansOfType(ReportDataCollector.class);
|
||||
this.collectorForReportById = new HashMap<>();
|
||||
for (ReportWithPeriodCollector<?> collector : allReports) {
|
||||
for (ReportWithPeriodCollector<?> collector : allPeriodReports) {
|
||||
ReportId rId = collector.getReportId();
|
||||
collectorForReportById.put(rId, collector);
|
||||
String idStr = rId == null ? null : rId.getKey();
|
||||
log.info("Register collector service {} (report id \"{}\")for generate {}", collector, idStr, collector.getReportClass().getSimpleName());
|
||||
log.info("Register collector service {} (period report id \"{}\")for generate {}", collector, idStr, collector.getReportClass().getSimpleName());
|
||||
}
|
||||
assert allReports.size() == collectorForReportById.size();
|
||||
assert allPeriodReports.size() == collectorForReportById.size();
|
||||
for (SimpleReportCollector<?> collector : allSimpleReports) {
|
||||
ReportId rId = collector.getReportId();
|
||||
collectorForReportById.put(rId, collector);
|
||||
String idStr = rId == null ? null : rId.getKey();
|
||||
log.info("Register collector service {} (simple report id \"{}\")for generate {}", collector, idStr, collector.getReportClass().getSimpleName());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -57,18 +68,27 @@ public class ReportsServiceCommand implements InitializingBean {
|
|||
}
|
||||
|
||||
public void generateReportAll(LocalDate startDate, LocalDate endDate) throws IOException {
|
||||
for (ReportWithPeriodCollector<?> reportDataCollector : allReports) {
|
||||
for (ReportWithPeriodCollector<?> reportDataCollector : allPeriodReports) {
|
||||
makeSingleReport(reportDataCollector, startDate, endDate);
|
||||
}
|
||||
for (SimpleReportCollector<?> reportDataCollector : allSimpleReports) {
|
||||
makeSingleReport(reportDataCollector);
|
||||
}
|
||||
}
|
||||
|
||||
public void generateReportById(String reportIdStr, LocalDate startDate, LocalDate endDate) throws IOException {
|
||||
ReportId reportId = parseReportId(reportIdStr);
|
||||
ReportWithPeriodCollector<?> reportDataCollector = collectorForReportById.get(reportId);
|
||||
AbstractReportCollector<?> reportDataCollector = collectorForReportById.get(reportId);
|
||||
if (reportDataCollector == null)
|
||||
throw new IllegalStateException("Collector for ReportID " + reportId + " not implemented yet");
|
||||
|
||||
makeSingleReport(reportDataCollector, startDate, endDate);
|
||||
if (reportDataCollector instanceof ReportWithPeriodCollector) {
|
||||
makeSingleReport((ReportWithPeriodCollector) reportDataCollector, startDate, endDate);
|
||||
} else if (reportDataCollector instanceof SimpleReportCollector) {
|
||||
makeSingleReport((SimpleReportCollector) reportDataCollector);
|
||||
} else {
|
||||
throw new IllegalArgumentException("Uncknown report class: " + reportDataCollector.getClass().getName());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -86,23 +106,39 @@ public class ReportsServiceCommand implements InitializingBean {
|
|||
File outPath = new File(settings.getReportModuleOut());
|
||||
XMLReportBuilder reportBuilder = new XMLReportBuilder(reportDataCollector.getReportClass(), outPath);
|
||||
AbstractReport report = reportDataCollector.collectReportWithPeriod(startDate, endDate);
|
||||
File reportFile = null;
|
||||
reportFile = reportBuilder.createReport(report);
|
||||
|
||||
File reportFile = reportBuilder.createReport(report);
|
||||
if (reportFile != null) {
|
||||
log.debug("New report file done: \"{}\"", reportFile);
|
||||
}
|
||||
}
|
||||
|
||||
protected void makeSingleReport(SimpleReportCollector<?> reportDataCollector) throws IOException {
|
||||
log.debug("Generate report by collector {} - {}", reportDataCollector.getClass().getSimpleName(), reportDataCollector.getReportClass().getSimpleName());
|
||||
File outPath = new File(settings.getReportModuleOut());
|
||||
XMLReportBuilder reportBuilder = new XMLReportBuilder(reportDataCollector.getReportClass(), outPath);
|
||||
AbstractReport report = reportDataCollector.collectReport();
|
||||
File reportFile = reportBuilder.createReport(report);
|
||||
if (reportFile != null) {
|
||||
log.debug("New report file done: \"{}\"", reportFile);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void writeAllXML() throws IOException {
|
||||
log.info("Report types: {}", allReports);
|
||||
for (ReportWithPeriodCollector collector : allReports) {
|
||||
log.info("Report types with data range: {}", allPeriodReports);
|
||||
for (ReportWithPeriodCollector collector : allPeriodReports) {
|
||||
log.info("Make report {}", collector);
|
||||
LocalDate date2 = LocalDate.now();
|
||||
LocalDate date1 = LocalDate.of(date2.getYear(), date2.getMonth(), 1);//date2.minusMonths(1);
|
||||
makeSingleReport(collector, date1, date2);
|
||||
}
|
||||
log.info("Shutdown application after work");
|
||||
log.info("Report types: {}", allSimpleReports);
|
||||
for (SimpleReportCollector collector : allSimpleReports) {
|
||||
log.info("Make report {}", collector);
|
||||
LocalDate date2 = LocalDate.now();
|
||||
makeSingleReport(collector);
|
||||
}
|
||||
log.info("All done");
|
||||
}
|
||||
|
||||
public void writeAllDocx() {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue