package org.aksw.jena_sparql_api.mapper;
import java.util.Set;
import java.util.function.Function;
import org.apache.jena.sparql.core.Var;
public class AggTransform<I, O>
implements Agg<O>
{
private Agg<I> subAgg;
private Function<I, O> transform;
public AggTransform(Agg<I> subAgg, com.google.common.base.Function<I, O> transform) {
this.subAgg = subAgg;
this.transform = (arg) -> transform.apply(arg);
}
public AggTransform(Agg<I> subAgg, Function<I, O> transform) {
this.subAgg = subAgg;
this.transform = transform;
}
@Override
public Acc<O> createAccumulator() {
Acc<I> baseAcc = subAgg.createAccumulator();
Acc<O> result = new AccTransform<I, O>(baseAcc, transform);
return result;
}
@Override
public Set<Var> getDeclaredVars() {
Set<Var> result = subAgg.getDeclaredVars();
return result;
}
public static <I, O> AggTransform<I, O> create(Agg<I> subAgg, com.google.common.base.Function<I, O> transform) {
AggTransform<I, O> result = new AggTransform<I, O>(subAgg, transform);
return result;
}
// public static <I, O> AggTransform<I, O> create(Agg<I> subAgg, Function<I, O> transform) {
// AggTransform<I, O> result = new AggTransform<I, O>(subAgg, transform);
// return result;
// }
}