/******************************************************************************************************************* * * Reacts to the notification that an {@link Accounting} has been opened by populating the presentation with * the customers. * * @param event the notification event * ******************************************************************************************************************/ @VisibleForTesting void onAccountingOpenedEvent (final @Nonnull @ListensTo AccountingOpenedEvent event) { log.info("onAccountingOpenedEvent({})", event); presentation.populate(event.getAccounting().getCustomerRegistry().findCustomers().stream() .map(customer -> (CustomerSpi)customer) .sorted(comparing(CustomerSpi::getName)) .map(customer -> createPresentationModelFor(customer)) .collect(toCompositePresentationModel())); }
@Nonnull public Project.Builder toBuilder (final @Nonnull Accounting accounting) { try { final Customer customer = accounting.getCustomerRegistry().findCustomers().withId(customerXml.getId()).result(); return new Project.Builder().withId(id) .withCustomer(customer) .withName(name) .withNumber(number) .withDescription(description) .withNotes(notes) .withStatus(status) .withHourlyRate(hourlyRate) .withBudget(budget) .withStartDate(startDate) .withEndDate(endDate) .withEvents(JobEventXml.toJobEvents(jobEventsXml)); } catch (NotFoundException e) { throw new RuntimeException(e); } } }
public AccountingXml (final @Nonnull Accounting accounting) { customersXml = accounting.getCustomerRegistry().findCustomers().stream().map(customer -> new CustomerXml(customer)) .collect(toList()); projectsXml = accounting.getProjectRegistry().findProjects().stream().map(project -> new ProjectXml(project)) .collect(toList()); invoicesxml = accounting.getInvoiceRegistry().findInvoices().stream().map(invoice -> new InvoiceXml(invoice)) .collect(toList()); }