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

fun.mike.flapjack.pipeline.lab.TransformPipelineBuilder Maven / Gradle / Ivy

There is a newer version: 0.0.15
Show newest version
package fun.mike.flapjack.pipeline.lab;

import java.util.List;
import java.util.Map;
import java.util.function.BiFunction;
import java.util.function.Consumer;
import java.util.function.Function;

import fun.mike.flapjack.alpha.Format;
import fun.mike.record.alpha.Record;

public class TransformPipelineBuilder {
    private final InputContext inputContext;
    private final Transform transform;

    public TransformPipelineBuilder(InputContext inputContext, Transform transform) {
        this.inputContext = inputContext;
        this.transform = transform;
    }

    public FlatOutputFilePipelineBuilder toFile(String path, Format format) {
        return new FlatOutputFilePipelineBuilder(inputContext, transform, path, format, false);
    }

    public ListPipeline toList() {
        OutputContext> outputContext = new ListOutputContext();
        return new ListPipeline(inputContext, transform, outputContext);
    }

    public  GroupPipeline groupBy(Function groupBy) {
        OutputContext>> outputContext = new GroupOutputContext<>(groupBy);
        return new GroupPipeline<>(inputContext, transform, outputContext);
    }

    public  ReducePipeline reduce(T identityValue, BiFunction reducer) {
        ReduceOutputContext outputContext = new ReduceOutputContext<>(identityValue, reducer);
        return new ReducePipeline<>(inputContext, transform, outputContext);
    }

    public ForEachPipeline forEach(Consumer consumer) {
        OutputContext outputContext = new ForEachOutputContext(consumer);
        return new ForEachPipeline(inputContext, transform, outputContext);
    }

    public  ProcessPipeline process(Function processor) {
        OutputContext> outputContext = new ProcessOutputContext<>(processor);
        return new ProcessPipeline<>(inputContext, transform, outputContext);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy