001package com.credibledoc.substitution.doc.module.substitution.activity.modules; 002 003import com.credibledoc.substitution.doc.module.substitution.activity.AnyLineSearchCommand; 004import com.credibledoc.substitution.reporting.reportdocument.ReportDocument; 005import com.credibledoc.substitution.reporting.reportdocument.ReportDocumentType; 006import com.credibledoc.substitution.reporting.reportdocument.creator.ReportDocumentCreator; 007import com.credibledoc.enricher.line.LineProcessor; 008import com.credibledoc.enricher.line.LineProcessorService; 009import lombok.NonNull; 010import lombok.RequiredArgsConstructor; 011import lombok.extern.slf4j.Slf4j; 012import org.springframework.context.ApplicationContext; 013import org.springframework.stereotype.Service; 014 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 024@RequiredArgsConstructor(onConstructor = @__(@Inject)) 025@Slf4j 026public class ModulesActivityUmlReportService implements ReportDocumentCreator { 027 028 @NonNull 029 private final ApplicationContext applicationContext; 030 031 /** 032 * Create a stateful object of {@link ReportDocument} type. 033 * 034 * @return The stateful object, which {@link ReportDocument#getCacheLines()} method 035 * will be used for generation of PlantUML activity diagram. 036 */ 037 public ReportDocument prepareReportDocument() { 038 ReportDocument reportDocument = new ReportDocument(); 039 reportDocument.setReportDocumentType(ReportDocumentType.DOCUMENT_PART_UML); 040 041 List<LineProcessor> lineProcessors = new ArrayList<>(); 042 lineProcessors.add( 043 new LineProcessor( 044 applicationContext.getBean(AnyLineSearchCommand.class), 045 applicationContext.getBean(ModulesActivityTransformer.class), 046 reportDocument)); 047 048 LineProcessorService.getInstance().getLineProcessors().addAll(lineProcessors); 049 log.info("Line processors prepared"); 050 return reportDocument; 051 } 052 053 @Override 054 public ReportDocumentType getReportDocumentType() { 055 return ReportDocumentType.DOCUMENT_PART_UML; 056 } 057 058}