/*
# Licensed Materials - Property of IBM
# Copyright IBM Corp. 2015
*/
package com.ibm.streamsx.topology.internal.functional.ops;
import com.ibm.streams.operator.Tuple;
import com.ibm.streams.operator.model.Icons;
import com.ibm.streams.operator.model.PrimitiveOperator;
import com.ibm.streams.operator.window.StreamWindow;
import com.ibm.streams.operator.window.StreamWindow.Policy;
import com.ibm.streamsx.topology.internal.functional.window.ContinuousAggregatorCountEvict;
import com.ibm.streamsx.topology.internal.functional.window.ContinuousAggregatorTimeEvict;
import com.ibm.streamsx.topology.internal.functional.window.PeriodicAggregator;
@PrimitiveOperator
@Icons(location16 = "opt/icons/aggregate_16.gif", location32 = "opt/icons/aggregate_32.gif")
public class FunctionAggregate<T, A> extends FunctionWindow {
@Override
void createWindowListener(StreamWindow<Tuple> window)
throws Exception {
if (window.getTriggerPolicy() == Policy.TIME)
new PeriodicAggregator<T,A>(this, window);
else if (window.getEvictionPolicy() == Policy.TIME)
new ContinuousAggregatorTimeEvict<T,A>(this, window);
else
new ContinuousAggregatorCountEvict<T,A>(this, window);
}
}