public FlowGrouping<K, T, B, B> each(final ConsumerWithInt<? super B> consumer) { return then(new FlowGrouping<K, T, B, B>(groups) { int index = 0; @Override public void process(B b) { consumer.consume(index++, b); FlowProcessor<B, ?> child = this.child; if (child != null) child.process(b); } }); }
public FlowGrouping<K, T, B, B> each(final ConsumerWithInt<? super B> consumer) { return then(new FlowGrouping<K, T, B, B>(groups) { int index = 0; @Override public void process(B b) { consumer.consume(index++, b); FlowProcessor<B, ?> child = this.child; if (child != null) child.process(b); } }); }
@Override public FlowGrouping<K, T, B, B> each(final Consumer<? super B> consumer) { return this.then(new FlowGrouping<K, T, B, B>(groups) { @Override public void process(B b) { consumer.consume(b); FlowProcessor<B, ?> child = this.child; if (child != null) child.process(b); } }); }
@Override public FlowGrouping<K, T, B, B> each(final Consumer<? super B> consumer) { return this.then(new FlowGrouping<K, T, B, B>(groups) { @Override public void process(B b) { consumer.consume(b); FlowProcessor<B, ?> child = this.child; if (child != null) child.process(b); } }); }
@Override public FlowGrouping<K, T, B, B> filter(final Filter<? super B> filter) { return this.then(new FlowGrouping<K, T, B, B>(new LinkedHashMap<K, FlowGroup<K, T>>()) { @Override public void process(B b) { if (filter.allow(b)) { groups.put(b.getKey(), b); child.process(b); } } }); }
@Override public FlowGrouping<K, T, B, B> filter(final Filter<? super B> filter) { return this.then(new FlowGrouping<K, T, B, B>(new LinkedHashMap<K, FlowGroup<K, T>>()) { @Override public void process(B b) { if (filter.allow(b)) { groups.put(b.getKey(), b); child.process(b); } } }); }
@Override public FlowGrouping<K, T, B, B> skip(final int number) { return this.then(new FlowGrouping<K, T, B, B>(new LinkedHashMap<K, FlowGroup<K, T>>()) { public int counter; @Override public void process(B b) { if (counter >= number) child.process(b); else counter++; } }); }
@Override public FlowGrouping<K, T, B, B> skip(final int number) { return this.then(new FlowGrouping<K, T, B, B>(new LinkedHashMap<K, FlowGroup<K, T>>()) { public int counter; @Override public void process(B b) { if (counter >= number) child.process(b); else counter++; } }); }
@Override public FlowGrouping<K, T, B, B> limit(final int number) { return this.then(new FlowGrouping<K, T, B, B>(new LinkedHashMap<K, FlowGroup<K, T>>()) { public int counter; @Override public void process(B b) { if (counter < number) { counter++; child.process(b); } } }); }
@Override public FlowGrouping<K, T, B, B> limit(final int number) { return this.then(new FlowGrouping<K, T, B, B>(new LinkedHashMap<K, FlowGroup<K, T>>()) { public int counter; @Override public void process(B b) { if (counter < number) { counter++; child.process(b); } } }); }
public Flow<T> merge() { return then(new FlowMerge<B, T>()); } }
public Flow<T> merge() { return then(new FlowMerge<B, T>()); } }
public <V> FlowToMap<K, V, B> toMap(Mapper<? super B, V> mapper) { return then(new FlowToMap<K, V, B>((Map<K, V>) groups, mapper)); }
public <V> FlowToMap<K, V, B> toMap(Mapper<? super B, V> mapper) { return then(new FlowToMap<K, V, B>((Map<K, V>) groups, mapper)); }
public <Z, V extends Flow<Z>> Flow<Z> flatMap(Mapper<? super B, ? extends V> mapper) { FlowContinue<Z> continueCommand = new FlowContinue<Z>(this); then(new FlowFlatMap<K, V, B, Z>(mapper, continueCommand)); return continueCommand; }
public <Z, V extends Flow<Z>> Flow<Z> flatMap(Mapper<? super B, ? extends V> mapper) { FlowContinue<Z> continueCommand = new FlowContinue<Z>(this); then(new FlowFlatMap<K, V, B, Z>(mapper, continueCommand)); return continueCommand; }