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

kr.jm.metric.output.subscriber.OutputSubscriber Maven / Gradle / Ivy

There is a newer version: 0.2.7.3
Show newest version
package kr.jm.metric.output.subscriber;

import kr.jm.metric.data.Transfer;
import kr.jm.metric.output.OutputInterface;
import kr.jm.utils.exception.JMExceptionManager;
import kr.jm.utils.flow.subscriber.JMSubscriber;
import kr.jm.utils.helper.JMLog;
import kr.jm.utils.helper.JMString;
import lombok.Getter;

import java.util.List;
import java.util.Map;

public class OutputSubscriber extends JMSubscriber>>> implements AutoCloseable {

    @Getter
    protected String outputId;
    private OutputInterface output;

    public OutputSubscriber(OutputInterface output) {
        super();
        this.outputId = output.getOutputId();
        this.output = output;
        setDataConsumer(this::output);
        JMLog.debug(log, "OutputSubscriber", outputId, output);
    }

    @Override
    public void close() {
        JMLog.info(log, "close", outputId);
        try {
            output.close();
        } catch (Exception e) {
            JMExceptionManager.handleException(log, e, "close", outputId);
        }
    }

    private void output(List>> dataList) {
        JMLog.debug(log, "output", dataList.size() > 0 ? dataList.get(0).getInputId() : JMString.EMPTY, outputId,
                dataList.size());
        try {
            this.output.writeData(dataList);
        } catch (Exception e) {
            JMExceptionManager.handleException(log, e, "output", outputId, dataList);
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy