package bbejeck.chapter_6.processor;

import org.apache.kafka.streams.processor.AbstractProcessor;
import org.apache.kafka.streams.processor.Processor;
import org.apache.kafka.streams.processor.ProcessorSupplier;


public class KStreamPrinter implements ProcessorSupplier {
    private String name;


    public KStreamPrinter(String name) {
        this.name = name;
    }


    @Override
    public Processor get() {
        return new PrintingProcessor(this.name);
    }


    private class PrintingProcessor extends AbstractProcessor {
        private String name;


         PrintingProcessor(String name) {
            this.name = name;
        }

        @Override
        public void process(Object key, Object value) {
            System.out.println(String.format("[%s] Key [%s] Value[%s]", name, key, value));
            this.context().forward(key, value);
        }
    }
}