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

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

The newest version!
package fun.mike.flapjack.pipeline.lab;

import fun.mike.flapjack.alpha.Format;
import fun.mike.flapjack.lab.FormatExplainer;

public class OutputContextExplainer implements OutputContextVisitor {
    private String explanation;

    public OutputContextExplainer() {
        explanation = "Nothing.";
    }

    public String explain() {
        return explanation;
    }

    @Override
    public void accept(FlatFileOutputContext outputContext) {
        String path = outputContext.getPath();
        Format format = outputContext.getFormat();
        explanation = String.join("\n",
                                  "Writing to a flat file.",
                                  "File path: " + path,
                                  "Format: " + formatSummary(outputContext));
    }

    private String formatSummary(FlatFileOutputContext outputContext) {
        Format format = outputContext.getFormat();
        boolean logFormat = outputContext.logFormat();
        return logFormat ? FormatExplainer.explain(format) : format.getId();
    }

    @Override
    public void accept(ListOutputContext outputContext) {
        explanation = "A list.";
    }

    @Override
    public void accept(ForEachOutputContext outputContext) {
        explanation = "A custom consumer.";
    }

    @Override
    public void accept(ReduceOutputContext outputContext) {
        explanation = "A reduction.";
    }

    @Override
    public void accept(ProcessOutputContext outputContext) {
        explanation = "A process.";
    }

    @Override
    public void accept(GroupOutputContext outputContext) {
        explanation = "A group.";
    }

    @Override
    public  void accept(ConstantOutputContext outputContext) {
        explanation = "A value.";
    }

    @Override
    public void accept(SetOutputContext setOutputContext) {
        explanation = "A set.";
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy