All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.fluxtion.compiler.builder.dataflow.JoinFlowBuilder Maven / Gradle / Ivy

There is a newer version: 9.7.9
Show newest version
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