Package com.buschmais.jqassistant.mojo

Source Code of com.buschmais.jqassistant.mojo.ReportMojo

package com.buschmais.jqassistant.mojo;

import java.io.File;
import java.io.StringWriter;
import java.util.Locale;

import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

import org.apache.maven.doxia.siterenderer.Renderer;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugins.annotations.Component;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.project.MavenProject;
import org.apache.maven.reporting.AbstractMavenReport;
import org.apache.maven.reporting.MavenReportException;

import com.buschmais.jqassistant.core.report.api.ReportTransformer;
import com.buschmais.jqassistant.core.report.api.ReportTransformerException;
import com.buschmais.jqassistant.core.report.impl.HtmlReportTransformer;

/**
* Generates a HTML reports based on analysis results.
*/
@Mojo(name = "report", defaultPhase = LifecyclePhase.SITE)
public class ReportMojo extends AbstractMavenReport {

  /**
   * Directory where reports will go.
   */
  @Parameter(property = "project.reporting.outputDirectory")
  protected String outputDirectory;
  /**
   * The file to write the XML report to.
   */
  @Parameter(property = "jqassistant.report.xml")
  protected File xmlReportFile;
  /**
   * The Maven project.
   */
  @Parameter(property = "project")
  protected MavenProject project;
  @Component
  protected Renderer siteRenderer;

  @Override
  protected void executeReport(Locale locale) throws MavenReportException {
    MavenProject baseProject;
    File selectedXmlReportFile;
    try {
      baseProject = BaseProjectResolver.getBaseProject(project);
      selectedXmlReportFile = BaseProjectResolver.getReportFile(baseProject, xmlReportFile, AbstractAnalysisMojo.REPORT_XML);
    } catch (MojoExecutionException e) {
      throw new MavenReportException("Cannot resolve XML report.", e);
    }
    if (project.equals(baseProject)) {
      if (!selectedXmlReportFile.exists() || selectedXmlReportFile.isDirectory()) {
        throw new MavenReportException(selectedXmlReportFile.getAbsoluteFile() + " does not exist or is not a file.");
      }
      StringWriter writer = new StringWriter();
      // Transform
      Source xmlSource = new StreamSource(selectedXmlReportFile);
      Result htmlTarget = new StreamResult(writer);
      getLog().info("Transforming " + selectedXmlReportFile.getAbsolutePath() + ".");
      ReportTransformer transformer = new HtmlReportTransformer();
      try {
        transformer.transform(xmlSource, htmlTarget);
      } catch (ReportTransformerException e) {
        throw new MavenReportException("Cannot transform report.", e);
      }
      getSink().rawText(writer.toString());
    }
  }

  @Override
  public String getDescription(Locale arg0) {
    return "The jQAssistant report.";
  }

  @Override
  public String getName(Locale arg0) {
    return "jQAssistant";
  }

  @Override
  public String getOutputName() {
    return "jqassistant";
  }

  @Override
  protected String getOutputDirectory() {
    return outputDirectory;
  }

  @Override
  protected MavenProject getProject() {
    return project;
  }

  public void setProject(MavenProject project) {
    this.project = project;
  }

  @Override
  protected Renderer getSiteRenderer() {
    return siteRenderer;
  }
}
TOP

Related Classes of com.buschmais.jqassistant.mojo.ReportMojo

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.