
com.fluxtion.runtime.dataflow.aggregate.function.AggregateToListFlowFunction Maven / Gradle / Ivy
package com.fluxtion.runtime.dataflow.aggregate.function;
import com.fluxtion.runtime.dataflow.aggregate.AggregateFlowFunction;
import java.util.ArrayList;
import java.util.List;
public class AggregateToListFlowFunction implements AggregateFlowFunction, AggregateToListFlowFunction> {
private transient final List list = new ArrayList<>();
private final int maxElementCount;
public AggregateToListFlowFunction() {
this(-1);
}
public AggregateToListFlowFunction(int maxElementCount) {
this.maxElementCount = maxElementCount;
}
@Override
public List reset() {
list.clear();
return list;
}
@Override
public void combine(AggregateToListFlowFunction add) {
list.addAll(add.list);
while (maxElementCount > 0 & list.size() > maxElementCount) {
list.remove(0);
}
}
@Override
public void deduct(AggregateToListFlowFunction add) {
list.removeAll(add.list);
}
@Override
public List get() {
return list;
}
@Override
public List aggregate(T input) {
list.add(input);
if (maxElementCount > 0 & list.size() > maxElementCount) {
list.remove(0);
}
return list;
}
public static class AggregateToListFactory {
private final int maxElementCount;
public AggregateToListFactory(int maxElementCount) {
this.maxElementCount = maxElementCount;
}
public AggregateToListFlowFunction newList() {
return new AggregateToListFlowFunction<>(maxElementCount);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy