001package com.credibledoc.substitution.doc.module.substitution.empty;
002
003import com.credibledoc.combiner.application.Application;
004import com.credibledoc.combiner.application.ApplicationService;
005import com.credibledoc.combiner.log.buffered.LogBufferedReader;
006import com.credibledoc.combiner.node.log.NodeLogService;
007import com.credibledoc.enricher.deriving.Deriving;
008import com.credibledoc.enricher.transformer.Transformer;
009import lombok.RequiredArgsConstructor;
010import org.apache.commons.lang3.StringEscapeUtils;
011import org.springframework.stereotype.Component;
012
013import javax.inject.Inject;
014import java.util.List;
015
016/**
017 * Escapes the multiLine obtained in the
018 * {@link Transformer#transform(Deriving, List, LogBufferedReader)} method
019 * by applying the
020 * {@link StringEscapeUtils#escapeHtml4(String)} method.
021 * 
022 * @author Kyrylo Semenko
023 */
024@Component
025@RequiredArgsConstructor(onConstructor = @__(@Inject))
026public class EmptyHtmlTransformer implements Transformer {
027
028    @Override
029    public String transform(Deriving deriving, List<String> multiLine, LogBufferedReader logBufferedReader) {
030        String line = multiLine.get(0);
031        if (deriving.getCacheLines().size() < EmptyTransformer.MIN_LINES_COUNT_FOR_DECISION) {
032            deriving.getCacheLines().add(line);
033        }
034        String joined = String.join(System.lineSeparator(), multiLine);
035        String nodeName = NodeLogService.getInstance().findNodeName(logBufferedReader);
036        Application application = ApplicationService.getInstance().findApplication(logBufferedReader);
037        return StringEscapeUtils.escapeHtml4(nodeName + " " + application.getShortName() + " " + joined);
038    }
039
040}