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