package org.calrissian.flowbox.support; import org.calrissian.flowbox.model.Event; import java.util.Collection; public class AggregatorWindow extends Window{ private Aggregator aggregator; public AggregatorWindow(Aggregator aggregator, String groupedIndex, long size) { super(groupedIndex, size); this.aggregator = aggregator; } public AggregatorWindow(Aggregator aggregator, String groupedIndex) { super(groupedIndex); this.aggregator = aggregator; } @Override public WindowItem add(Event event, String previousStream) { WindowItem item = super.add(event, previousStream); aggregator.added(item); return item; } @Override public WindowItem expire() { WindowItem item = super.expire(); aggregator.evicted(item); return item; } @Override public void clear() { while(size() > 0) expire(); } public Collection<AggregatedEvent> getAggregate() { return aggregator.aggregate(); } }