You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by vs...@apache.org on 2009/06/05 14:54:50 UTC

svn commit: r782004 - /maven/plugins/trunk/maven-pdf-plugin/src/main/java/org/apache/maven/plugins/pdf/PdfMojo.java

Author: vsiveton
Date: Fri Jun  5 12:54:50 2009
New Revision: 782004

URL: http://svn.apache.org/viewvc?rev=782004&view=rev
Log:
o added more meta and cover informations

Modified:
    maven/plugins/trunk/maven-pdf-plugin/src/main/java/org/apache/maven/plugins/pdf/PdfMojo.java

Modified: maven/plugins/trunk/maven-pdf-plugin/src/main/java/org/apache/maven/plugins/pdf/PdfMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pdf-plugin/src/main/java/org/apache/maven/plugins/pdf/PdfMojo.java?rev=782004&r1=782003&r2=782004&view=diff
==============================================================================
--- maven/plugins/trunk/maven-pdf-plugin/src/main/java/org/apache/maven/plugins/pdf/PdfMojo.java (original)
+++ maven/plugins/trunk/maven-pdf-plugin/src/main/java/org/apache/maven/plugins/pdf/PdfMojo.java Fri Jun  5 12:54:50 2009
@@ -21,13 +21,12 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.Reader;
 import java.io.StringReader;
 import java.io.Writer;
-import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
-import java.util.Calendar;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -91,9 +90,6 @@
 public class PdfMojo
     extends AbstractMojo
 {
-    /** ISO 8601 date format, i.e. <code>yyyy-MM-dd</code> **/
-    private static final DateFormat ISO_8601_FORMAT = new SimpleDateFormat( "yyyy-MM-dd", Locale.US );
-
     // ----------------------------------------------------------------------
     // Mojo components
     // ----------------------------------------------------------------------
@@ -260,7 +256,7 @@
                 // Copy extra-resources
                 copyResources( locale );
 
-                docRenderer.render( siteDirectoryFile, workingDir, getDocumentModel() );
+                docRenderer.render( siteDirectoryFile, workingDir, getDocumentModel( locale ) );
             }
 
             if ( !outputDirectory.getCanonicalPath().equals( workingDirectory.getCanonicalPath() ) )
@@ -293,21 +289,31 @@
      * Constructs a DocumentModel for the current project. The model is either read from
      * a descriptor file, if it exists, or constructed from information in the pom and site.xml.
      *
+     * @param locale not null
      * @return DocumentModel.
      * @throws DocumentRendererException if any.
      * @throws IOException if any.
      * @throws MojoExecutionException if any
      * @see #readAndFilterDocumentDescriptor(MavenProject, File, Log)
      */
-    private DocumentModel getDocumentModel()
+    private DocumentModel getDocumentModel( Locale locale )
         throws DocumentRendererException, IOException, MojoExecutionException
     {
         if ( docDescriptor.exists() )
         {
-            return readAndFilterDocumentDescriptor( project, docDescriptor, getLog() );
+            DocumentModel doc = readAndFilterDocumentDescriptor( project, docDescriptor, getLog() );
+            if ( StringUtils.isEmpty( doc.getMeta().getLanguage() ) )
+            {
+                doc.getMeta().setLanguage( locale.getLanguage() );
+            }
+            if ( StringUtils.isEmpty( doc.getMeta().getGenerator() ) )
+            {
+                doc.getMeta().setGenerator( getDefaultGenerator() );
+            }
+            return doc;
         }
 
-        return generateDefaultDocDescriptor();
+        return generateDefaultDocDescriptor( locale );
     }
 
     /**
@@ -328,29 +334,38 @@
     }
 
     /**
+     * @param locale not null
      * @return Generate a default document descriptor from the Maven project
      * @throws IOException if any
      * @throws MojoExecutionException if any
      */
-    private DocumentModel generateDefaultDocDescriptor()
+    private DocumentModel generateDefaultDocDescriptor( Locale locale )
         throws IOException, MojoExecutionException
     {
         DocumentMeta meta = new DocumentMeta();
-        meta.setTitle( getProjectName() );
-        meta.setDescription( project.getDescription() );
         meta.setAuthors( getAuthors() );
-        meta.setCreator( System.getProperty( "user.name" ) );
         meta.setCreationDate( new Date() );
-        // Note: no default keywords
+        meta.setCreator( System.getProperty( "user.name" ) );
+        meta.setDate( new Date() );
+        meta.setDescription( project.getDescription() );
+        meta.setGenerator( getDefaultGenerator() );
+        meta.setInitialCreator( System.getProperty( "user.name" ) );
+        meta.setLanguage( locale.getLanguage() );
+        //meta.setPageSize( pageSize );
+        meta.setSubject( getProjectName() );
+        meta.setTitle( getProjectName() );
 
         DocumentCover cover = new DocumentCover();
+        cover.setAuthors( getAuthors() );
+        //cover.setCompanyLogo( companyLogo );
+        cover.setCompanyName( getProjectOrganizationName() );
+        cover.setCoverDate( new Date() );
+        cover.setCoverSubTitle( "v. " + project.getVersion() );
         cover.setCoverTitle( getProjectName() );
-        cover.setCoverVersion( project.getVersion() );
         cover.setCoverType( i18n.getString( "pdf-plugin", getDefaultLocale(), "toc.type" ) );
-        cover.setCoverdate( ISO_8601_FORMAT.format( Calendar.getInstance().getTime() ) );
+        cover.setCoverVersion( project.getVersion() );
+        //cover.setProjectLogo( projectLogo );
         cover.setProjectName( getProjectName() );
-        cover.setCompanyName( getProjectOrganizationName() );
-        cover.setAuthors( getAuthors() );
 
         DocumentModel docModel = new DocumentModel();
         docModel.setModelEncoding( getProjectModelEncoding() );
@@ -360,7 +375,6 @@
 
         // Populate docModel from defaultDecorationModel
         DecorationModel decorationModel = getDefaultDecorationModel();
-
         if ( decorationModel != null )
         {
             DocumentTOC toc = new DocumentTOC();
@@ -407,7 +421,7 @@
             Writer w = null;
             try
             {
-                w = WriterFactory.newPlatformWriter( doc );
+                w = WriterFactory.newXmlWriter( doc );
                 xpp3.write( w, docModel );
             }
             finally
@@ -587,6 +601,11 @@
     {
         DecorationModel decorationModel = getDefaultDecorationModel();
 
+        if ( decorationModel == null )
+        {
+            return;
+        }
+
         File skinFile;
         try
         {
@@ -705,6 +724,34 @@
     }
 
     /**
+     * @return the PDF producer ie <code>Apache Doxia 1.1.1, 'fo' implementation</code>
+     */
+    private String getDefaultGenerator()
+    {
+        String doxiaVersion = "unknown";
+        InputStream resourceAsStream;
+        try
+        {
+            Properties properties = new Properties();
+            resourceAsStream = getClass().getClassLoader()
+                .getResourceAsStream( "META-INF/maven/org.apache.maven.doxia/doxia-core/pom.properties" );
+
+            if ( resourceAsStream != null )
+            {
+                properties.load( resourceAsStream );
+
+                doxiaVersion = properties.getProperty( "version", doxiaVersion );
+            }
+        }
+        catch ( IOException e )
+        {
+            getLog().error( "Unable to determine version from JAR file: " + e.getMessage() );
+        }
+
+        return "Apache Doxia " + doxiaVersion + ", '" + implementation + "' implementation.";
+    }
+
+    /**
      * Simple bean to allow date interpolation in the document descriptor, i.e.
      * <pre>
      * ${year}  = 2009