Report generate directly xhtml file

git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@169076 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Emmanuel Venisse 2005-05-07 13:00:47 +00:00
parent 040139d102
commit 1eb084ce3e
4 changed files with 81 additions and 36 deletions

View File

@ -22,12 +22,15 @@ import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.project.MavenProject;
import org.apache.maven.reporting.MavenReport;
import org.apache.maven.reporting.MavenReportConfiguration;
import org.codehaus.doxia.module.xhtml.XhtmlSink;
import org.codehaus.doxia.site.renderer.SiteRenderer;
import org.codehaus.plexus.util.FileUtils;
import org.codehaus.plexus.util.StringInputStream;
import org.codehaus.plexus.util.StringUtils;
import java.io.File;
import java.io.InputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@ -43,6 +46,12 @@ import java.util.Map;
public class DoxiaMojo
extends AbstractMojo
{
/**
* @parameter expression="${basedir}"
* @required
*/
private String basedir;
/**
* @parameter expression="${basedir}/src/site"
* @required
@ -124,26 +133,16 @@ public class DoxiaMojo
report.setConfiguration( config );
report.generate();
XhtmlSink sink = siteRenderer.createSink( new File( siteDirectory ), siteDirectory,
report.getOutputName() + ".html",
outputDirectory, getSiteDescriptor(), flavour );
report.generate( sink );
}
}
File siteDescriptor = new File( siteDirectory, "site.xml" );
if ( !siteDescriptor.exists() )
{
throw new MojoExecutionException( "The site descriptor is not present!" );
}
String siteDescriptorContent = FileUtils.fileRead( siteDescriptor );
Map props = new HashMap();
if ( reports != null )
{
props.put( "reports", getReportsMenu() );
}
siteDescriptorContent = StringUtils.interpolate( siteDescriptorContent, props );
StringInputStream siteDescriptorStream = new StringInputStream( siteDescriptorContent );
siteRenderer.render( siteDirectory, generatedSiteDirectory, outputDirectory, flavour,
siteDescriptorStream );
getSiteDescriptor() );
}
catch ( Exception e )
{
@ -151,6 +150,7 @@ public class DoxiaMojo
throw new MojoExecutionException( "Error during site generation", e );
}
}
private String getReportsMenu()
{
StringBuffer buffer = new StringBuffer();
@ -168,4 +168,37 @@ public class DoxiaMojo
buffer.append( "</menu>\n" );
return buffer.toString();
}
private InputStream getSiteDescriptor()
throws MojoExecutionException
{
File siteDescriptor = new File( siteDirectory, "site.xml" );
if ( !siteDescriptor.exists() )
{
throw new MojoExecutionException( "The site descriptor is not present!" );
}
String siteDescriptorContent = "";
try
{
siteDescriptorContent = FileUtils.fileRead( siteDescriptor );
}
catch( IOException e )
{
throw new MojoExecutionException( "The site descriptor cannot be read!", e );
}
Map props = new HashMap();
if ( reports != null )
{
props.put( "reports", getReportsMenu() );
}
siteDescriptorContent = StringUtils.interpolate( siteDescriptorContent, props );
return new StringInputStream( siteDescriptorContent );
}
}

View File

@ -23,11 +23,19 @@ import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
/**
* The basis for a Maven report.
*
* @author <a href="evenisse@apache.org">Emmanuel Venisse</a>
* @version $Id: MavenReport.java 163376 2005-02-23 00:06:06Z brett $
*/
public abstract class AbstractMavenReport
implements MavenReport
{
private MavenReportConfiguration config;
private Sink sink;
public MavenReportConfiguration getConfiguration()
{
return config;
@ -38,7 +46,7 @@ public abstract class AbstractMavenReport
this.config = config;
}
public void generate()
public void generate( Sink sink )
throws MavenReportException
{
if ( config == null )
@ -46,6 +54,15 @@ public abstract class AbstractMavenReport
throw new MavenReportException( "You must specify a report configuration." );
}
if ( sink == null )
{
throw new MavenReportException( "You must specify a sink configuration." );
}
else
{
this.sink = sink;
}
execute();
}
@ -55,20 +72,6 @@ public abstract class AbstractMavenReport
public Sink getSink()
throws IOException
{
return getSink( getOutputName() );
}
public Sink getSink( String outputName )
throws IOException
{
File outputDir = new File( config.getOutputDirectory(), "xdoc/" );
outputDir.mkdirs();
File outputFile = new File( outputDir, outputName + ".xml" );
FileWriter writer = new FileWriter( outputFile );
return new XdocSink( writer );
return sink;
}
}

View File

@ -36,14 +36,11 @@ public interface MavenReport
void setConfiguration( MavenReportConfiguration config );
void generate()
void generate( Sink sink )
throws MavenReportException;
String getOutputName();
Sink getSink()
throws IOException;
Sink getSink( String outputName )
throws IOException;
}

View File

@ -32,6 +32,8 @@ public class MavenReportConfiguration
private File outputDirectory;
private File basedir;
public File getOutputDirectory()
{
return outputDirectory;
@ -42,6 +44,16 @@ public class MavenReportConfiguration
this.outputDirectory = outputDirectory;
}
public File getBasedir()
{
return basedir;
}
public void setBasedir( File basedir )
{
this.basedir = basedir;
}
public Model getModel()
{
if ( model == null )