/* * Copyright 2015 Jason Fehr * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and limitations under the License. */ package org.pitest.maven.report.generator; import java.util.Arrays; import java.util.List; import org.pitest.maven.report.ReportSourceLocator; import org.pitest.util.PitError; public class ReportGenerationManager { private final ReportSourceLocator reportLocator; private final List<ReportGenerationStrategy> reportGenerationStrategyList; public ReportGenerationManager() { this(new ReportSourceLocator(), Arrays.asList(new XMLReportGenerator(), new HTMLReportGenerator())); } public ReportGenerationManager(final ReportSourceLocator reportLocator, final List<ReportGenerationStrategy> reportGenerationStrategyList) { this.reportLocator = reportLocator; this.reportGenerationStrategyList = reportGenerationStrategyList; } public void generateSiteReport(ReportGenerationContext context) { ReportGenerationResultEnum result; boolean successfulExecution = false; context.setReportsDataDirectory(this.reportLocator.locate( context.getReportsDataDirectory(), context.getLogger())); context.getLogger().debug("starting execution of report generators"); context.getLogger().debug("using report generation context: " + context); for (String dataFormat : context.getSourceDataFormats()) { context.getLogger().debug( "starting report generator for source data format [" + dataFormat + "]"); result = this.locateReportGenerationStrategy(dataFormat) .generate(context); context.getLogger().debug( "result of report generator for source data format [" + dataFormat + "] was [" + result.toString() + "]"); if (result == ReportGenerationResultEnum.SUCCESS) { successfulExecution = true; break; } } if (!successfulExecution) { throw new PitError("no report generators executed successfully"); } context.getLogger().debug("finished execution of report generators"); } private ReportGenerationStrategy locateReportGenerationStrategy( String sourceDataFormat) { for (ReportGenerationStrategy strategy : this.reportGenerationStrategyList) { if (sourceDataFormat.equalsIgnoreCase(strategy.getGeneratorDataFormat())) { return strategy; } } throw new PitError("Could not locate report generator for data source [" + sourceDataFormat + "]"); } }