@Override public String collectData(String idType, String id) { log.info("Start collection report data for idType: '" + idType + "' and id: '" + id + "'."); String reportId = UUID.randomUUID().toString(); StorageKey storageKey = new StorageKey(reportId, idType, id); toCollect.put(reportId, storageKey); registry.storeEventsFor(storageKey); return reportId; }
@Override public Report generateReport(String reportId) { log.info("Generate report for reportId: '" + reportId + "'."); StorageKey storageKey = toCollect.remove(reportId); if (storageKey == null) { throw new IllegalArgumentException("No report for the given report id."); } registry.stopStoringEventsFor(storageKey); List<Event> events = eventStore.getEvents(storageKey); eventStore.clearEvents(storageKey); return generateReport(events); }