@Override @Nonnull public PresentationModel createPresentationModel (final @Nonnull Object... instanceRoles) { final Styleable styleable = new DefaultStyleable(getStyles()); return jobEvent.findChildren() .stream() .map(jobEvent -> (JobEventSpi)jobEvent) .sorted(comparing(JobEventSpi::getDateTime)) .map(jobEvent -> jobEvent.as(Presentable).createPresentationModel()) .collect(toCompositePresentationModel(aggregateBuilder().create(), styleable)); // FIXME: use SimpleCompositePresentable? }
@Override public PresentationModel createPresentationModel (final @Nonnull Object... instanceRoles) { final Styleable styleable = new DefaultStyleable(getStyles()); return new DefaultPresentationModel("", aggregateBuilder().create(), styleable); }
@Override @Nonnull protected AggregatePresentationModelBuilder aggregateBuilder() { return super.aggregateBuilder() .with(DATE, (Displayable) () -> DATE_FORMATTER.format(jobEvent.getDate())) .with(TIME, new DefaultDisplayable("")) .with(HOURLY_RATE, new DefaultDisplayable("")) .with(AMOUNT , (Displayable) () -> MONEY_FORMATTER.format(jobEvent.getEarnings()), new DefaultStyleable("right-aligned"), new RedStyleForNegativeMoney(jobEvent::getEarnings)); }
.with("Name", (Displayable) () -> project.getName()) .with("Start Date", (Displayable) () -> DATE_FORMATTER.format(project.getStartDate()), new DefaultStyleable("right-aligned")) .with("Due Date", (Displayable) () -> DATE_FORMATTER.format(project.getEndDate()), new DefaultStyleable("right-aligned")) .with("Notes", (Displayable) () -> project.getNotes()) .with("Budget", (Displayable) () -> MONEY_FORMATTER.format(budget), new DefaultStyleable("right-aligned", budget.isEqualTo(Money.ZERO) ? "alerted" : "")) .with("Earnings", (Displayable) () -> MONEY_FORMATTER.format(earnings), new DefaultStyleable("right-aligned", earnings.greaterThan(budget) ? "alerted" : "", earnings.isEqualTo(budget) ? "green" : "")) .with("Time", (Displayable) () -> DURATION_FORMATTER.format(project.getDuration()), new DefaultStyleable("right-aligned")) .with("Invoiced", (Displayable) () -> MONEY_FORMATTER.format(invoicedEarnings), new DefaultStyleable("right-aligned", invoicedEarnings.greaterThan(earnings) ? "alerted" : "", invoicedEarnings.isEqualTo(earnings) ? "green" : ""))