Author: vmassol
Date: Mon Apr  3 01:08:28 2006
New Revision: 390978

URL: http://svn.apache.org/viewcvs?rev=390978&view=rev
Log:
MCLOVER-30: Add support for generating XML and PDF reports

Added:
    
maven/plugins/trunk/maven-clover-plugin/src/it/maven-clover-plugin-sample-simple/src/site/
    
maven/plugins/trunk/maven-clover-plugin/src/it/maven-clover-plugin-sample-simple/src/site/site.xml
   (with props)
    
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverReportMojo.java
   (with props)
    
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/internal/AbstractCloverMojo.java
   (contents, props changed)
      - copied, changed from r390676, 
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/AbstractCloverMojo.java
    
maven/plugins/trunk/maven-clover-plugin/src/test/java/org/apache/maven/plugin/clover/internal/
    
maven/plugins/trunk/maven-clover-plugin/src/test/java/org/apache/maven/plugin/clover/internal/CloverMojoTest.java
   (contents, props changed)
      - copied, changed from r390640, 
maven/plugins/trunk/maven-clover-plugin/src/test/java/org/apache/maven/plugin/clover/CloverMojoTest.java
Removed:
    
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/AbstractCloverMojo.java
    
maven/plugins/trunk/maven-clover-plugin/src/test/java/org/apache/maven/plugin/clover/CloverMojoTest.java
Modified:
    maven/plugins/trunk/maven-clover-plugin/pom.xml
    
maven/plugins/trunk/maven-clover-plugin/src/it/maven-clover-plugin-sample-simple/pom.xml
    
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverAggregateMojo.java
    
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverCheckMojo.java
    
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverInstrumentInternalMojo.java
    
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverInstrumentMojo.java
    
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverLogMojo.java
    maven/plugins/trunk/maven-clover-plugin/src/site/apt/howto.apt

Modified: maven/plugins/trunk/maven-clover-plugin/pom.xml
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-clover-plugin/pom.xml?rev=390978&r1=390977&r2=390978&view=diff
==============================================================================
--- maven/plugins/trunk/maven-clover-plugin/pom.xml (original)
+++ maven/plugins/trunk/maven-clover-plugin/pom.xml Mon Apr  3 01:08:28 2006
@@ -57,7 +57,7 @@
     <dependency>
       <groupId>org.apache.maven.reporting</groupId>
       <artifactId>maven-reporting-impl</artifactId>
-      <version>2.0</version>
+      <version>2.0.2</version>
     </dependency>
     <dependency>
       <groupId>clover</groupId>

Modified: 
maven/plugins/trunk/maven-clover-plugin/src/it/maven-clover-plugin-sample-simple/pom.xml
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-clover-plugin/src/it/maven-clover-plugin-sample-simple/pom.xml?rev=390978&r1=390977&r2=390978&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-clover-plugin/src/it/maven-clover-plugin-sample-simple/pom.xml
 (original)
+++ 
maven/plugins/trunk/maven-clover-plugin/src/it/maven-clover-plugin-sample-simple/pom.xml
 Mon Apr  3 01:08:28 2006
@@ -27,6 +27,10 @@
                build section inherits from the reporting section but not the 
other way around... -->
           
<cloverDatabase>${project.build.directory}/customclover/myclover.db</cloverDatabase>
 
+          <generateHtml>true</generateHtml>
+          <generatePdf>true</generatePdf>
+          <generateXml>true</generateXml>
+
         </configuration>
       </plugin>
     </plugins>

Added: 
maven/plugins/trunk/maven-clover-plugin/src/it/maven-clover-plugin-sample-simple/src/site/site.xml
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-clover-plugin/src/it/maven-clover-plugin-sample-simple/src/site/site.xml?rev=390978&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-clover-plugin/src/it/maven-clover-plugin-sample-simple/src/site/site.xml
 (added)
+++ 
maven/plugins/trunk/maven-clover-plugin/src/it/maven-clover-plugin-sample-simple/src/site/site.xml
 Mon Apr  3 01:08:28 2006
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<!--
+/*
+ * Copyright 2001-2006 The Apache Software Foundation.
+ *
+ * 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.
+ */
+-->
+
+<project name="Maven Clover Simple Sample">
+  <bannerLeft>
+    <name>Maven Clover Simple Sample</name>
+    <src>http://maven.apache.org/images/apache-maven-project.png</src>
+    <href>http://maven.apache.org/</href>
+  </bannerLeft>
+  <bannerRight>
+    <src>http://maven.apache.org/images/maven-small.gif</src>
+  </bannerRight>
+  <publishDate format="dd MMM yyyy" />
+  <body>
+    <links>
+      <item name="Maven" href="http://maven.apache.org/"/>
+    </links>
+
+    <menu name="Other Reports">
+      <item name="Clover PDF" href="clover/clover.pdf"/>
+      <item name="Clover XML" href="clover/clover.xml"/>
+    </menu>
+
+    ${reports}
+
+  </body>
+</project>

Propchange: 
maven/plugins/trunk/maven-clover-plugin/src/it/maven-clover-plugin-sample-simple/src/site/site.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/plugins/trunk/maven-clover-plugin/src/it/maven-clover-plugin-sample-simple/src/site/site.xml
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: 
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverAggregateMojo.java
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverAggregateMojo.java?rev=390978&r1=390977&r2=390978&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverAggregateMojo.java
 (original)
+++ 
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverAggregateMojo.java
 Mon Apr  3 01:08:28 2006
@@ -2,6 +2,7 @@
 
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.clover.internal.AbstractCloverMojo;
 
 import java.io.File;
 import java.util.*;
@@ -38,7 +39,7 @@
 
     /**
      * [EMAIL PROTECTED]
-     * @see org.apache.maven.plugin.clover.AbstractCloverMojo#execute()
+     * @see 
org.apache.maven.plugin.clover.internal.AbstractCloverMojo#execute()
      */
     public void execute()
         throws MojoExecutionException

Modified: 
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverCheckMojo.java
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverCheckMojo.java?rev=390978&r1=390977&r2=390978&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverCheckMojo.java
 (original)
+++ 
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverCheckMojo.java
 Mon Apr  3 01:08:28 2006
@@ -18,6 +18,7 @@
 import com.cenqua.clover.cfg.Percentage;
 import com.cenqua.clover.tasks.CloverPassTask;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.clover.internal.AbstractCloverMojo;
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Project;
 
@@ -41,7 +42,7 @@
 
     /**
      * [EMAIL PROTECTED]
-     * @see org.apache.maven.plugin.clover.AbstractCloverMojo#execute()
+     * @see 
org.apache.maven.plugin.clover.internal.AbstractCloverMojo#execute()
      */
     public void execute()
         throws MojoExecutionException

Modified: 
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverInstrumentInternalMojo.java
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverInstrumentInternalMojo.java?rev=390978&r1=390977&r2=390978&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverInstrumentInternalMojo.java
 (original)
+++ 
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverInstrumentInternalMojo.java
 Mon Apr  3 01:08:28 2006
@@ -20,6 +20,7 @@
 import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.handler.ArtifactHandler;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.clover.internal.AbstractCloverMojo;
 import org.codehaus.plexus.compiler.util.scan.SimpleSourceInclusionScanner;
 import org.codehaus.plexus.compiler.util.scan.SourceInclusionScanner;
 import org.codehaus.plexus.compiler.util.scan.InclusionScanException;
@@ -77,7 +78,7 @@
 
     /**
      * [EMAIL PROTECTED]
-     * @see org.apache.maven.plugin.clover.AbstractCloverMojo#execute()
+     * @see 
org.apache.maven.plugin.clover.internal.AbstractCloverMojo#execute()
      */
     public void execute()
         throws MojoExecutionException

Modified: 
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverInstrumentMojo.java
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverInstrumentMojo.java?rev=390978&r1=390977&r2=390978&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverInstrumentMojo.java
 (original)
+++ 
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverInstrumentMojo.java
 Mon Apr  3 01:08:28 2006
@@ -16,6 +16,7 @@
 package org.apache.maven.plugin.clover;
 
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.clover.internal.AbstractCloverMojo;
 
 /**
  * Instrument all sources using Clover and forks a custom lifecycle to execute 
project's tests on the instrumented code
@@ -36,7 +37,7 @@
 {
     /**
      * [EMAIL PROTECTED]
-     * @see org.apache.maven.plugin.clover.AbstractCloverMojo#execute()
+     * @see 
org.apache.maven.plugin.clover.internal.AbstractCloverMojo#execute()
      */
     public void execute()
         throws MojoExecutionException

Modified: 
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverLogMojo.java
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverLogMojo.java?rev=390978&r1=390977&r2=390978&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverLogMojo.java
 (original)
+++ 
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverLogMojo.java
 Mon Apr  3 01:08:28 2006
@@ -17,6 +17,7 @@
 
 import com.cenqua.clover.tasks.CloverLogTask;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.clover.internal.AbstractCloverMojo;
 import org.apache.tools.ant.Project;
 
 /**

Added: 
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverReportMojo.java
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverReportMojo.java?rev=390978&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverReportMojo.java
 (added)
+++ 
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverReportMojo.java
 Mon Apr  3 01:08:28 2006
@@ -0,0 +1,367 @@
+/*
+ * Copyright 2001-2006 The Apache Software Foundation.
+ *
+ * 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.apache.maven.plugin.clover;
+
+import com.cenqua.clover.reporters.html.HtmlReporter;
+import com.cenqua.clover.reporters.pdf.PDFReporter;
+import com.cenqua.clover.reporters.xml.XMLReporter;
+
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.reporting.MavenReportException;
+import org.apache.maven.reporting.AbstractMavenReport;
+import org.apache.maven.doxia.siterenderer.Renderer;
+import org.apache.maven.plugin.clover.internal.AbstractCloverMojo;
+
+import java.io.File;
+import java.util.*;
+
+/**
+ * Generate a <a href="http://cenqua.com/clover";>Clover</a> report from 
existing Clover databases. The generated report
+ * is an external report generated by Clover itself. If the project generating 
the report is a top level project and
+ * if the <code>aggregate</code> configuration element is set to true then an 
aggregated report will also be created.
+ *
+ * Note: This report mojo should be an @aggregator and the 
<code>clover:aggregate</code> mojo shouldn't exist. This
+ * is a limitation of the site plugin which doesn't support @aggregator 
reports...
+ *
+ * @goal clover
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Vincent Massol</a>
+ * @version $Id$
+ */
+public class CloverReportMojo extends AbstractMavenReport
+{
+    // TODO: Need some way to share config elements and code between report 
mojos and main build
+    // mojos. See http://jira.codehaus.org/browse/MNG-1886
+
+    /**
+     * The location of the <a 
href="http://cenqua.com/clover/doc/adv/database.html";>Clover database</a>.
+     *
+     * @parameter expression="${project.build.directory}/clover/clover.db"
+     * @required
+     */
+    private String cloverDatabase;
+
+    /**
+     * The location of the merged clover database to create when running a 
report in a multimodule build.
+     *
+     * @parameter expression="${project.build.directory}/clover/cloverMerge.db"
+     * @required
+     */
+    private String cloverMergeDatabase;
+
+    /**
+     * The directory where the Clover report will be generated.
+     *
+     * @parameter expression="${project.reporting.outputDirectory}/clover"
+     * @required
+     */
+    private File outputDirectory;
+
+    /**
+     * When the Clover Flush Policy is set to "interval" or threaded this 
value is the minimum
+     * period between flush operations (in milliseconds).
+     *
+     * @parameter default-value="500"
+     */
+    private int flushInterval;
+
+    /**
+     * If true we'll wait 2*flushInterval to ensure coverage data is flushed 
to the Clover
+     * database before running any query on it.
+     *
+     * Note: The only use case where you would want to turn this off is if 
you're running your
+     * tests in a separate JVM. In that case the coverage data will be flushed 
by default upon
+     * the JVM shutdown and there would be no need to wait for the data to be 
flushed. As we
+     * can't control whether users want to fork their tests or not, we're 
offering this parameter
+     * to them.
+     *
+     * @parameter default-value="true"
+     */
+    private boolean waitForFlush;
+
+    /**
+     * Decide whether to generate an HTML report
+     * @parameter default-value="true"
+     */
+    private boolean generateHtml;
+
+    /**
+     * Decide whether to generate a PDF report
+     * @parameter default-value="false"
+     */
+    private boolean generatePdf;
+
+    /**
+     * Decide whether to generate a XML report
+     * @parameter default-value="false"
+     */
+    private boolean generateXml;
+
+    /**
+     * @component
+     */
+    private Renderer siteRenderer;
+
+    /**
+     * The Maven project.
+     *
+     * @parameter expression="${project}"
+     * @required
+     * @readonly
+     */
+    private MavenProject project;
+
+    /**
+     * The projects in the reactor for aggregation report.
+     *
+     * @parameter expression="${reactorProjects}"
+     * @readonly
+     */
+    private List reactorProjects;
+
+    /**
+     * @see 
org.apache.maven.reporting.AbstractMavenReport#executeReport(java.util.Locale)
+     */
+    public void executeReport( Locale locale ) throws MavenReportException
+    {
+        // Ensure the output directory exists
+        this.outputDirectory.mkdirs();
+
+        File singleModuleCloverDatabase = new File( this.cloverDatabase );
+        if ( singleModuleCloverDatabase.exists() )
+        {
+            if ( this.generateHtml )
+            {
+                createHtmlReport();
+            }
+            if ( this.generatePdf )
+            {
+                createPdfReport();
+            }
+            if ( this.generateXml )
+            {
+                createXmlReport();
+            }
+        }
+
+        File mergedCloverDatabase = new File ( this.cloverMergeDatabase );
+        if ( mergedCloverDatabase.exists() )
+        {
+            if ( this.generateHtml )
+            {
+                createMasterHtmlReport();
+            }
+            if ( this.generatePdf )
+            {
+                createMasterPdfReport();
+            }
+            if ( this.generateXml )
+            {
+                createMasterXmlReport();
+            }
+        }
+    }
+
+    private List getCommonCliArgs( File reportOutputFile )
+    {
+        List parameters = new ArrayList();
+
+        parameters.add( "-t" );
+        parameters.add( "Maven Clover report" );
+        parameters.add( "-i" );
+        parameters.add( this.cloverDatabase );
+        parameters.add( "-o" );
+        parameters.add( reportOutputFile.getPath() );
+
+        if ( getLog().isDebugEnabled() )
+        {
+            parameters.add( "-d" );
+        }
+
+        return parameters;
+    }
+
+    /**
+     * @todo handle multiple source roots. At the moment only the first source 
root is instrumented
+     */
+    private void createHtmlReport() throws MavenReportException
+    {
+        List parameters = getCommonCliArgs( this.outputDirectory );
+
+        parameters.add( "-p" );
+        parameters.add( this.project.getCompileSourceRoots().get( 0 ) );
+
+        createReport(HtmlReporter.class, parameters, "HTML");
+    }
+
+    private void createPdfReport() throws MavenReportException
+    {
+        createReport(PDFReporter.class, getCommonCliArgs( new File( 
this.outputDirectory, "clover.pdf" ) ), "PDF");
+    }
+
+    private void createXmlReport() throws MavenReportException
+    {
+        createReport(XMLReporter.class, getCommonCliArgs( new File( 
this.outputDirectory, "clover.xml" ) ), "XML");
+    }
+
+    private void createReport( Class reportClass, List parameters, String 
reportType )
+        throws MavenReportException
+    {
+        int result;
+        try
+        {
+            result = ((Integer) reportClass.getMethod( "mainImpl", new 
Class[]{String[].class}).invoke(null,
+                new Object[]{(String[]) parameters.toArray( new String[0] )} 
)).intValue();
+        }
+        catch (Exception e)
+        {
+            throw new MavenReportException( "Failed to call [" + 
reportClass.getName() + ".mainImpl]", e );
+        }
+
+        if ( result != 0 )
+        {
+            throw new MavenReportException( "Clover has failed to create the " 
+ reportType + " report" );
+        }
+    }
+
+    private List getCommonCliArgsForMasterReport( File reportOutputFile )
+    {
+        List parameters = new ArrayList();
+
+        parameters.add( "-t" );
+        parameters.add( "Maven Aggregated Clover report" );
+        parameters.add( "-i" );
+        parameters.add( this.cloverMergeDatabase );
+        parameters.add( "-o" );
+        parameters.add( reportOutputFile );
+
+        if ( getLog().isDebugEnabled() )
+        {
+            parameters.add( "-d" );
+        }
+
+        return parameters;
+    }
+
+    private void createMasterHtmlReport() throws MavenReportException
+    {
+        createReport(HtmlReporter.class, getCommonCliArgsForMasterReport( 
this.outputDirectory ), "merged HTML");
+    }
+
+    private void createMasterPdfReport() throws MavenReportException
+    {
+        createReport(PDFReporter.class, getCommonCliArgsForMasterReport(
+            new File( this.outputDirectory, "cloverMerged.pdf" ) ), "merged 
PDF");
+    }
+
+    private void createMasterXmlReport() throws MavenReportException
+    {
+        createReport(XMLReporter.class, getCommonCliArgsForMasterReport(
+            new File( this.outputDirectory, "cloverMerged.xml" ) ), "merged 
XML");
+    }
+
+    /**
+     * @see org.apache.maven.reporting.MavenReport#getOutputName()
+     */
+    public String getOutputName()
+    {
+        return "clover/index";
+    }
+
+    /**
+     * @see 
org.apache.maven.reporting.MavenReport#getDescription(java.util.Locale)
+     */
+    public String getDescription( Locale locale )
+    {
+        return getBundle( locale ).getString( "report.clover.description" );
+    }
+
+    private static ResourceBundle getBundle( Locale locale )
+    {
+        return ResourceBundle.getBundle( "clover-report", locale, 
CloverReportMojo.class.getClassLoader() );
+    }
+
+    /**
+     * @see org.apache.maven.reporting.AbstractMavenReport#getOutputDirectory()
+     */
+    protected String getOutputDirectory()
+    {
+        return this.outputDirectory.getAbsoluteFile().toString();
+    }
+
+    /**
+     * @see org.apache.maven.reporting.AbstractMavenReport#getSiteRenderer()
+     */
+    protected Renderer getSiteRenderer()
+    {
+        return this.siteRenderer;
+    }
+
+    /**
+     * @see org.apache.maven.reporting.AbstractMavenReport#getProject()
+     */
+    protected MavenProject getProject()
+    {
+        return this.project;
+    }
+
+    /**
+     * @see org.apache.maven.reporting.MavenReport#getName(java.util.Locale)
+     */
+    public String getName( Locale locale )
+    {
+        return getBundle( locale ).getString( "report.clover.name" );
+    }
+
+    /**
+     * Always return true as we're using the report generated by Clover rather 
than creating our own report.
+     * @return true
+     */
+    public boolean isExternalReport()
+    {
+        return true;
+    }
+
+    /**
+     * Generate reports if a Clover module database or a Clover merged 
database exist.
+     *
+     * @return true if a project should be generated
+     * @see org.apache.maven.reporting.AbstractMavenReport#canGenerateReport()
+     */
+    public boolean canGenerateReport()
+    {
+        boolean canGenerate = false;
+
+        AbstractCloverMojo.waitForFlush( this.waitForFlush, this.flushInterval 
);
+
+        File singleModuleCloverDatabase = new File( this.cloverDatabase );
+        File mergedCloverDatabase = new File ( this.cloverMergeDatabase );
+
+        if (singleModuleCloverDatabase.exists() || 
mergedCloverDatabase.exists() )
+        {
+            if ( this.generateHtml || this.generatePdf || this.generateXml )
+            {
+                canGenerate = true;
+            }
+        }
+        else
+        {
+            getLog().warn("No Clover database found, skipping report 
generation");
+        }
+
+        return canGenerate;
+    }
+}

Propchange: 
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverReportMojo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverReportMojo.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Copied: 
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/internal/AbstractCloverMojo.java
 (from r390676, 
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/AbstractCloverMojo.java)
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/internal/AbstractCloverMojo.java?p2=maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/internal/AbstractCloverMojo.java&p1=maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/AbstractCloverMojo.java&r1=390676&r2=390978&rev=390978&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/AbstractCloverMojo.java
 (original)
+++ 
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/internal/AbstractCloverMojo.java
 Mon Apr  3 01:08:28 2006
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.maven.plugin.clover;
+package org.apache.maven.plugin.clover.internal;
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;

Propchange: 
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/internal/AbstractCloverMojo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/internal/AbstractCloverMojo.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: maven/plugins/trunk/maven-clover-plugin/src/site/apt/howto.apt
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-clover-plugin/src/site/apt/howto.apt?rev=390978&r1=390977&r2=390978&view=diff
==============================================================================
--- maven/plugins/trunk/maven-clover-plugin/src/site/apt/howto.apt (original)
+++ maven/plugins/trunk/maven-clover-plugin/src/site/apt/howto.apt Mon Apr  3 
01:08:28 2006
@@ -67,6 +67,70 @@
   module reports into a master Clover report, run <<<mvn clover:instrument 
clover:aggregate clover:clover>>>
   instead.
 
+Generating HTML, XML and PDF reports
+
+  By default the Clover plugin will generate a HTML report. If you want to 
generate a PDF or XML report, or
+  if you simply do not want to generate the HTML report use the 
<<<generateHtml>>>, <<<generatePdf>>> and
+  <<<generateXml>>> configuration elements. By default the <<<generateHtml>>> 
element is set to true.
+  For example if you wish to generate the PDF and XML reports you would use:
+
++--------
+[...]
+  <plugin>
+    <groupId>org.apache.maven.plugins</groupId>
+    <artifactId>maven-clover-plugin</artifactId>
+    <configuration>
+      <generatePdf>true</generatePdf>
+      <generateXml>true</generateXml>
+    </configuration>
+  </plugin>
+[...]
++---------
+
+  Note that only the HTML report gets a link in the "Project Reports" section 
in generated menu on the site. If
+  you want to link the PDF or XML reports you'll need to do that by modifying 
your <<<site.xml>>>. For example:
+
++--------
+[...]
+  <menu name="Other Reports">
+    <item name="Clover PDF" href="clover/clover.pdf"/>
+    <item name="Clover XML" href="clover/clover.xml"/>
+  </menu>
+[...]
++---------
+
+  If you do not want to generate the HTML report then you should not configure 
the Clover plugin in the
+  <<<reporting>>> section as this section is for plugins which generate HTML 
reports. In that case, simply
+  bind the <<<clover:clover>>> goal to the <<<site>>> phase in the <<<build>>> 
section. For example:
+
++--------
+<project>
+  [...]
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-clover-plugin</artifactId>
+        <configuration>
+          <generateHtml>false</generateHtml>
+          <generatePdf>true</generatePdf>
+          <generateXml>true</generateXml>
+        </configuration>
+        <executions>
+          <execution>
+            <phase>site</phase>
+            <goals>
+              <goal>instrument</goal>
+              <goal>clover</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+[...]
++---------
+
 Checking test coverage
 
   In order to check for a test coverage percentage and fail the build in case 
of non-compliance,

Copied: 
maven/plugins/trunk/maven-clover-plugin/src/test/java/org/apache/maven/plugin/clover/internal/CloverMojoTest.java
 (from r390640, 
maven/plugins/trunk/maven-clover-plugin/src/test/java/org/apache/maven/plugin/clover/CloverMojoTest.java)
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-clover-plugin/src/test/java/org/apache/maven/plugin/clover/internal/CloverMojoTest.java?p2=maven/plugins/trunk/maven-clover-plugin/src/test/java/org/apache/maven/plugin/clover/internal/CloverMojoTest.java&p1=maven/plugins/trunk/maven-clover-plugin/src/test/java/org/apache/maven/plugin/clover/CloverMojoTest.java&r1=390640&r2=390978&rev=390978&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-clover-plugin/src/test/java/org/apache/maven/plugin/clover/CloverMojoTest.java
 (original)
+++ 
maven/plugins/trunk/maven-clover-plugin/src/test/java/org/apache/maven/plugin/clover/internal/CloverMojoTest.java
 Mon Apr  3 01:08:28 2006
@@ -13,17 +13,18 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.maven.plugin.clover;
+package org.apache.maven.plugin.clover.internal;
 
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.clover.internal.Locator;
+import org.apache.maven.plugin.clover.internal.AbstractCloverMojo;
 import org.jmock.MockObjectTestCase;
 import org.jmock.Mock;
 
 import java.io.File;
 
 /**
- * Unit tests for [EMAIL PROTECTED] 
org.apache.maven.plugin.clover.AbstractCloverMojo}.
+ * Unit tests for [EMAIL PROTECTED] 
org.apache.maven.plugin.clover.internal.AbstractCloverMojo}.
  * 
  * @author <a href="mailto:[EMAIL PROTECTED]">Vincent Massol</a>
  * @version $Id$

Propchange: 
maven/plugins/trunk/maven-clover-plugin/src/test/java/org/apache/maven/plugin/clover/internal/CloverMojoTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/plugins/trunk/maven-clover-plugin/src/test/java/org/apache/maven/plugin/clover/internal/CloverMojoTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"


Reply via email to