@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);
 }