/*
# Licensed Materials - Property of IBM
# Copyright IBM Corp. 2015
*/
package com.ibm.streamsx.topology.internal.functional.window;
import com.ibm.streams.operator.Tuple;
import com.ibm.streams.operator.window.StreamWindowPartitioner;
import com.ibm.streamsx.topology.function.Function;
import com.ibm.streamsx.topology.internal.spljava.SPLMapping;
/**
* Partition a tuple for a window using a function.
*
*/
public class KeyPartitioner implements
StreamWindowPartitioner<Tuple,Object> {
private final SPLMapping<Object> mapping;
private final Function<Object,Object> keyGetter;
public KeyPartitioner(SPLMapping<Object> mapping, Function<Object,Object> keyGetter) {
this.mapping = mapping;
this.keyGetter = keyGetter;
}
@Override
public Object getPartition(Tuple tuple) {
return keyGetter.apply(mapping.convertFrom(tuple));
}
}