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}