
com.fluxtion.compiler.builder.dataflow.JoinFlowBuilder Maven / Gradle / Ivy
package com.fluxtion.compiler.builder.dataflow;
import com.fluxtion.runtime.dataflow.Tuple;
import com.fluxtion.runtime.dataflow.groupby.InnerJoin;
import com.fluxtion.runtime.dataflow.groupby.LeftJoin;
import com.fluxtion.runtime.dataflow.groupby.OuterJoin;
import com.fluxtion.runtime.dataflow.groupby.RightJoin;
import com.fluxtion.runtime.dataflow.helpers.Tuples;
import com.fluxtion.runtime.partition.LambdaReflection;
public interface JoinFlowBuilder {
static GroupByFlowBuilder> innerJoin(
GroupByFlowBuilder leftGroupBy,
GroupByFlowBuilder rightGroupBy) {
return leftGroupBy.mapBiFunction(new InnerJoin()::join, rightGroupBy);
}
static GroupByFlowBuilder innerJoin(
GroupByFlowBuilder leftGroupBy,
GroupByFlowBuilder rightGroupBy,
LambdaReflection.SerializableBiFunction mergeFunction) {
return leftGroupBy.mapBiFunction(new InnerJoin()::join, rightGroupBy).mapValues(Tuples.mapTuple(mergeFunction));
}
static GroupByFlowBuilder> outerJoin(
GroupByFlowBuilder leftGroupBy,
GroupByFlowBuilder rightGroupBy) {
return leftGroupBy.mapBiFunction(new OuterJoin()::join, rightGroupBy);
}
static GroupByFlowBuilder outerJoin(
GroupByFlowBuilder leftGroupBy,
GroupByFlowBuilder rightGroupBy,
LambdaReflection.SerializableBiFunction mergeFunction) {
return leftGroupBy.mapBiFunction(new OuterJoin()::join, rightGroupBy).mapValues(Tuples.mapTuple(mergeFunction));
}
static GroupByFlowBuilder> leftJoin(
GroupByFlowBuilder leftGroupBy,
GroupByFlowBuilder rightGroupBy) {
return leftGroupBy.mapBiFunction(new LeftJoin()::join, rightGroupBy);
}
static GroupByFlowBuilder leftJoin(
GroupByFlowBuilder leftGroupBy,
GroupByFlowBuilder rightGroupBy,
LambdaReflection.SerializableBiFunction mergeFunction) {
return leftGroupBy.mapBiFunction(new LeftJoin()::join, rightGroupBy).mapValues(Tuples.mapTuple(mergeFunction));
}
static GroupByFlowBuilder> rightJoin(
GroupByFlowBuilder leftGroupBy,
GroupByFlowBuilder rightGroupBy) {
return leftGroupBy.mapBiFunction(new RightJoin()::join, rightGroupBy);
}
static GroupByFlowBuilder rightJoin(
GroupByFlowBuilder leftGroupBy,
GroupByFlowBuilder rightGroupBy,
LambdaReflection.SerializableBiFunction mergeFunction) {
return leftGroupBy.mapBiFunction(new RightJoin()::join, rightGroupBy).mapValues(Tuples.mapTuple(mergeFunction));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy