default IAggregator<I, V, O, E> then(final IFunction<? super O, ? extends O, E> after) { Objects.requireNonNull(after); return (final I o, final V t) -> after.execute(aggregate(o, t)); } }
default <R> R aggregate(final R identity, final IAggregator<R, O, R, E> adder) throws E { final IIterator<O, E> iterator = this.iterator(); R result = identity; while (iterator.hasNext()) { result = adder.aggregate(result, iterator.next()); } return result; }
@Override public boolean hasNext() throws E { while (this.iterator.hasNext()) { final I i = this.iterator.next(); if (this.acceptor.accept(i) && (this.item = this.aggegator.aggregate(this.counter.next(), i)) != null) { return true; } } return false; }
@Override public IObjectTableBuilder<T> addEditableStringColumn( final String title, final IFunction<T, String, RuntimeException> provider, final IAggregator<T, String, T, RuntimeException> adaptor, final int size) { final DefaultCellEditor cellEditor = new DefaultCellEditor(new JTextField()); cellEditor.setClickCountToStart(2); this.builder.addColumnConfiguration(new ObjectListColumnConfiguration<>(title, (IColumnValueProvider<T>) object -> { if (object == null) { return null; } return provider.execute(object); }, // new ObjectTableCellRenderer(), (object, value) -> adaptor.aggregate(object, (String) value), cellEditor, size, false, null)); return this; }
new ObjectUiCellRendererConfigurationBuilder().setHorizontalAlignmentRight().build(), new ObjectUiBuilder<Integer>().text(v -> v.toString()).build(), (IColumnValueAdaptor<T>) (object, value) -> aggregator.aggregate(object, (Integer) value), editor, size,