001// Generated by delombok at Sun Jun 30 16:31:41 CEST 2019 002package com.credibledoc.substitution.doc.module.substitution.activity.modules; 003 004import com.credibledoc.substitution.doc.module.substitution.activity.anyline.AnyLineSearchCommand; 005import com.credibledoc.substitution.doc.module.substitution.report.UmlDiagramType; 006import com.credibledoc.substitution.reporting.report.document.Document; 007import com.credibledoc.substitution.reporting.reportdocument.ReportDocument; 008import com.credibledoc.substitution.reporting.reportdocument.ReportDocumentType; 009import com.credibledoc.substitution.reporting.reportdocument.creator.ReportDocumentCreator; 010import com.credibledoc.enricher.line.LineProcessor; 011import com.credibledoc.enricher.line.LineProcessorService; 012import lombok.NonNull; 013import org.springframework.context.ApplicationContext; 014import org.springframework.stereotype.Service; 015import javax.inject.Inject; 016import java.util.ArrayList; 017import java.util.List; 018 019/** 020 * Creates document with data for dependency UML diagram. 021 * @author Kyrylo Semenko 022 */ 023@Service 024public class ModulesActivityUmlReportService implements ReportDocumentCreator { 025 @java.lang.SuppressWarnings("all") 026 private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(ModulesActivityUmlReportService.class); 027 @NonNull 028 private final ApplicationContext applicationContext; 029 030 /** 031 * Create a stateful object of {@link ReportDocument} type. 032 * 033 * @return The stateful object, which {@link ReportDocument#getCacheLines()} method 034 * will be used for generation of PlantUML activity diagram. 035 */ 036 public ReportDocument prepareReportDocument() { 037 Document document = new Document(); 038 document.setReportDocumentType(UmlDiagramType.class); 039 List<LineProcessor> lineProcessors = new ArrayList<>(); 040 lineProcessors.add(new LineProcessor(applicationContext.getBean(AnyLineSearchCommand.class), applicationContext.getBean(ModulesActivityTransformer.class), document)); 041 LineProcessorService.getInstance().getLineProcessors().addAll(lineProcessors); 042 log.info("Line processors prepared"); 043 return document; 044 } 045 046 @Override 047 public Class<? extends ReportDocumentType> getReportDocumentType() { 048 return UmlDiagramType.class; 049 } 050 051 @Inject 052 @java.lang.SuppressWarnings("all") 053 public ModulesActivityUmlReportService(@NonNull final ApplicationContext applicationContext) { 054 if (applicationContext == null) { 055 throw new java.lang.NullPointerException("applicationContext"); 056 } 057 this.applicationContext = applicationContext; 058 } 059}