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/09/05 13:53:55 UTC

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

Author: vsiveton
Date: Sat Sep  5 11:53:55 2009
New Revision: 811625

URL: http://svn.apache.org/viewvc?rev=811625&view=rev
Log:
o improved the i18n

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=811625&r1=811624&r2=811625&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 Sat Sep  5 11:53:55 2009
@@ -33,6 +33,7 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
+import java.util.Map;
 
 import javax.swing.text.AttributeSet;
 
@@ -51,6 +52,8 @@
 import org.apache.maven.doxia.document.DocumentModel;
 import org.apache.maven.doxia.document.DocumentTOCItem;
 import org.apache.maven.doxia.document.io.xpp3.DocumentXpp3Writer;
+import org.apache.maven.doxia.index.IndexEntry;
+import org.apache.maven.doxia.index.IndexingSink;
 import org.apache.maven.doxia.markup.HtmlMarkup;
 import org.apache.maven.doxia.module.xdoc.XdocSink;
 import org.apache.maven.doxia.parser.ParseException;
@@ -366,11 +369,11 @@
     private File generatedSiteDirectoryTmp;
 
     /**
-     * The generated MavenReport list.
+     * A map of generated MavenReport list using locale as key.
      *
      * @since 1.1
      */
-    private List generatedMavenReports;
+    private Map generatedMavenReports;
 
     // ----------------------------------------------------------------------
     // Public methods
@@ -423,7 +426,7 @@
      * @since 1.1
      */
     private void copyGeneratedPdf()
-            throws MojoExecutionException, IOException
+        throws MojoExecutionException, IOException
     {
         if ( !outputDirectory.getCanonicalPath().equals( workingDirectory.getCanonicalPath() ) )
         {
@@ -433,14 +436,41 @@
             {
                 outputName = outputName.substring( 0, outputName.indexOf( extension ) - 1 );
             }
-            final List pdfs = FileUtils.getFiles( workingDirectory, "**/" + outputName + ".pdf", null );
 
-            for ( final Iterator it = pdfs.iterator(); it.hasNext(); )
+            for ( final Iterator iterator = getAvailableLocales().iterator(); iterator.hasNext(); )
             {
-                final File pdf = (File) it.next();
+                final Locale locale = (Locale) iterator.next();
+
+                File generatedPdfSource;
+                if ( !locale.getLanguage().equals( getDefaultLocale().getLanguage() ) )
+                {
+                    generatedPdfSource =
+                        new File( workingDirectory, locale.getLanguage() + File.separator + outputName + ".pdf" );
+                }
+                else
+                {
+                    generatedPdfSource = new File( workingDirectory, outputName + ".pdf" );
+                }
+
+                if ( !generatedPdfSource.exists() )
+                {
+                    getLog().warn( "Unable to find the generated pdf: " + generatedPdfSource.getAbsolutePath() );
+                    continue;
+                }
+
+                File generatedPdfDest;
+                if ( !locale.getLanguage().equals( getDefaultLocale().getLanguage() ) )
+                {
+                    generatedPdfDest =
+                        new File( outputDirectory, locale.getLanguage() + File.separator + outputName + ".pdf" );
+                }
+                else
+                {
+                    generatedPdfDest = new File( outputDirectory, outputName + ".pdf" );
+                }
 
-                FileUtils.copyFile( pdf, new File( outputDirectory, pdf.getName() ) );
-                pdf.delete();
+                FileUtils.copyFile( generatedPdfSource, generatedPdfDest );
+                generatedPdfSource.delete();
             }
         }
     }
@@ -625,18 +655,17 @@
 
             String excludes = getDefaultExcludesWithLocales( getAvailableLocales(), getDefaultLocale() );
             List siteFiles = FileUtils.getFileNames( siteDirectory, "**/*", excludes, false );
-            if ( !locale.getLanguage().equals( getDefaultLocale().getLanguage() ) )
+            File siteDirectoryLocale = new File( siteDirectory, locale.getLanguage() );
+            if ( !locale.getLanguage().equals( getDefaultLocale().getLanguage() ) && siteDirectoryLocale.exists() )
             {
-                siteFiles =
-                    FileUtils.getFileNames( new File( siteDirectory, locale.getLanguage() ), "**/*", excludes,
-                                            false );
+                siteFiles = FileUtils.getFileNames( siteDirectoryLocale, "**/*", excludes, false );
             }
 
             List generatedSiteFiles = FileUtils.getFileNames( from, "**/*", excludes, false );
-            if ( !locale.getLanguage().equals( getDefaultLocale().getLanguage() ) )
+            File fromLocale = new File( from, locale.getLanguage() );
+            if ( !locale.getLanguage().equals( getDefaultLocale().getLanguage() ) && fromLocale.exists() )
             {
-                generatedSiteFiles =
-                    FileUtils.getFileNames( new File( from, locale.getLanguage() ), "**/*", excludes, false );
+                generatedSiteFiles = FileUtils.getFileNames( fromLocale, "**/*", excludes, false );
             }
 
             for ( final Iterator it = generatedSiteFiles.iterator(); it.hasNext(); )
@@ -653,10 +682,13 @@
 
                 if ( !locale.getLanguage().equals( getDefaultLocale().getLanguage() ) )
                 {
-                    File in = new File( new File( from, locale.getLanguage() ), generatedSiteFile );
-                    File out = new File( new File( to, locale.getLanguage() ), generatedSiteFile );
-                    out.getParentFile().mkdirs();
-                    FileUtils.copyFile( in, out );
+                    if ( fromLocale.exists() )
+                    {
+                        File in = new File( fromLocale, generatedSiteFile );
+                        File out = new File( new File( to, locale.getLanguage() ), generatedSiteFile );
+                        out.getParentFile().mkdirs();
+                        FileUtils.copyFile( in, out );
+                    }
                 }
                 else
                 {
@@ -1024,7 +1056,7 @@
         }
 
         // generate project-info report
-        if ( !getGeneratedMavenReports().isEmpty() )
+        if ( !getGeneratedMavenReports( locale ).isEmpty() )
         {
             File outDir = new File( getGeneratedSiteDirectoryTmp(), "xdoc" );
             if ( !locale.getLanguage().equals( defaultLocale.getLanguage() ) )
@@ -1038,7 +1070,7 @@
             StringWriter sw = new StringWriter();
 
             PdfSink sink = new PdfSink( sw );
-            ProjectInfoRenderer r = new ProjectInfoRenderer( sink, getGeneratedMavenReports(), i18n, locale );
+            ProjectInfoRenderer r = new ProjectInfoRenderer( sink, getGeneratedMavenReports( locale ), i18n, locale );
             r.render();
 
             writeGeneratedReport( sw.toString(), piReport );
@@ -1185,9 +1217,10 @@
             return;
         }
 
-        for ( final Iterator it = getGeneratedMavenReports().iterator(); it.hasNext(); )
+        for ( final Iterator it = getGeneratedMavenReports( locale ).iterator(); it.hasNext(); )
         {
             MavenReport generatedReport = (MavenReport) it.next();
+
             if ( report.getName( locale ).equals( generatedReport.getName( locale ) ) )
             {
                 if ( getLog().isDebugEnabled() )
@@ -1291,24 +1324,30 @@
 
         if ( isValidGeneratedReport( mojoDescriptor, generatedReport, localReportName ) )
         {
-            getGeneratedMavenReports().add( report );
+            getGeneratedMavenReports( locale ).add( report );
         }
     }
 
     /**
+     * @param locale not null
      * @return the generated reports
      * @see #generateMavenReport(MojoDescriptor, MavenReport, Locale)
      * @see #isValidGeneratedReport(MojoDescriptor, File, String)
      * @since 1.1
      */
-    private List getGeneratedMavenReports()
+    private List getGeneratedMavenReports( Locale locale )
     {
         if ( this.generatedMavenReports == null )
         {
-            this.generatedMavenReports = new ArrayList();
+            this.generatedMavenReports = new HashMap();
+        }
+
+        if ( this.generatedMavenReports.get( locale ) == null )
+        {
+            this.generatedMavenReports.put( locale, new ArrayList() );
         }
 
-        return this.generatedMavenReports;
+        return ( (List) this.generatedMavenReports.get( locale ) );
     }
 
     /**
@@ -1333,13 +1372,13 @@
         {
             return;
         }
-        if ( getGeneratedMavenReports().isEmpty() )
+        if ( getGeneratedMavenReports( locale ).isEmpty() )
         {
             return;
         }
 
         final DocumentTOCItem documentTOCItem = new DocumentTOCItem();
-        documentTOCItem.setName( i18n.getString( "pdf-plugin", getDefaultLocale(), "toc.project-info.item" ) );
+        documentTOCItem.setName( i18n.getString( "pdf-plugin", locale, "toc.project-info.item" ) );
         documentTOCItem.setRef( "/project-info" ); // see #generateMavenReports(Locale)
 
         List addedRef = new ArrayList();
@@ -1347,7 +1386,7 @@
         List items = new ArrayList();
 
         // append generated report defined as MavenReport
-        for ( final Iterator it = getGeneratedMavenReports().iterator(); it.hasNext(); )
+        for ( final Iterator it = getGeneratedMavenReports( locale ).iterator(); it.hasNext(); )
         {
             final MavenReport report = (MavenReport) it.next();
 
@@ -1427,13 +1466,13 @@
      * @param f not null
      * @return the xdoc file title or null if an error occurs.
      * @throws IOException if any
-     * @see TitleSink
      * @since 1.1
      */
-    private String getGeneratedDocumentTitle( File f )
+    private String getGeneratedDocumentTitle( final File f )
         throws IOException
     {
-        TitleSink titleSink = new TitleSink();
+        final IndexEntry entry = new IndexEntry( "index" );
+        final IndexingSink titleSink = new IndexingSink( entry );
 
         Reader reader = null;
         try
@@ -1827,49 +1866,6 @@
     }
 
     /**
-     * A Sink class to get the Document title when parsing Doxia files.
-     *
-     * @see PdfMojo#getGeneratedDocumentTitle(File)
-     * @since 1.1
-     */
-    private static class TitleSink
-        extends SinkAdapter
-    {
-        String title;
-
-        boolean isTitle;
-
-        /** {@inheritDoc} */
-        public void title()
-        {
-            isTitle = true;
-        }
-
-        /** {@inheritDoc} */
-        public void title_()
-        {
-            isTitle = false;
-        }
-
-        /** {@inheritDoc} */
-        public void text( String text )
-        {
-            if ( isTitle )
-            {
-                title = text;
-            }
-        }
-
-        /**
-         * @return the found title or null.
-         */
-        public String getTitle()
-        {
-            return title;
-        }
-    }
-
-    /**
      * Delegates the method invocations on <code>org.codehaus.doxia.sink.Sink@maven-core-realm</code> to
      * <code>org.apache.maven.doxia.sink.Sink@pdf-plugin-realm</code>.
      *