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}