Author: brett
Date: Tue Sep 20 02:28:25 2005
New Revision: 290404

URL: http://svn.apache.org/viewcvs?rev=290404&view=rev
Log:
clean up site plugin, optimize descriptor creation

Modified:
    
maven/components/trunk/maven-plugins/maven-site-plugin/src/main/java/org/apache/maven/doxia/DoxiaMojo.java

Modified: 
maven/components/trunk/maven-plugins/maven-site-plugin/src/main/java/org/apache/maven/doxia/DoxiaMojo.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-site-plugin/src/main/java/org/apache/maven/doxia/DoxiaMojo.java?rev=290404&r1=290403&r2=290404&view=diff
==============================================================================
--- 
maven/components/trunk/maven-plugins/maven-site-plugin/src/main/java/org/apache/maven/doxia/DoxiaMojo.java
 (original)
+++ 
maven/components/trunk/maven-plugins/maven-site-plugin/src/main/java/org/apache/maven/doxia/DoxiaMojo.java
 Tue Sep 20 02:28:25 2005
@@ -36,7 +36,6 @@
 import org.codehaus.plexus.util.DirectoryScanner;
 import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.IOUtil;
-import org.codehaus.plexus.util.StringInputStream;
 import org.codehaus.plexus.util.StringUtils;
 
 import java.io.File;
@@ -52,6 +51,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
@@ -201,14 +201,6 @@
      */
     private MavenSession session;
 
-    private List projectInfos = new ArrayList();
-
-    private List projectReports = new ArrayList();
-
-    private Locale defaultLocale = Locale.ENGLISH;
-
-    private List localesList = new ArrayList();
-
     /**
      * @see org.apache.maven.plugin.Mojo#execute()
      */
@@ -256,30 +248,39 @@
 
         try
         {
-            categorizeReports( reports );
-
-            initLocalesList();
+            List localesList = initLocalesList();
+            if ( localesList.isEmpty() )
+            {
+                localesList = Collections.singletonList( Locale.ENGLISH );
+            }
 
+            // Default is first in the list
+            Locale defaultLocale = (Locale) localesList.get( 0 );
             Locale.setDefault( defaultLocale );
 
+            List projectInfos = new ArrayList();
+            List projectReports = new ArrayList();
+            categorizeReports( reports, defaultLocale, projectInfos, 
projectReports );
+
             for ( Iterator iterator = localesList.iterator(); 
iterator.hasNext(); )
             {
                 Locale locale = (Locale) iterator.next();
 
-                File localeOutputDirectory = getOuputDirectory( locale );
+                String siteDescriptor = getSiteDescriptor( reports, locale, 
projectInfos, projectReports );
+
+                File outputDirectory = getOutputDirectory( locale, 
defaultLocale );
 
                 // Safety
-                if ( !localeOutputDirectory.exists() )
+                if ( !outputDirectory.exists() )
                 {
-                    localeOutputDirectory.mkdirs();
+                    outputDirectory.mkdirs();
                 }
 
                 // Handle the GeneratedSite Directory
                 File generatedSiteFile = new File( generatedSiteDirectory );
                 if ( generatedSiteFile.exists() )
                 {
-                    InputStream siteDescriptor = getSiteDescriptor( reports, 
locale );
-                    siteRenderer.render( generatedSiteFile, 
localeOutputDirectory, siteDescriptor, template, attributes,
+                    siteRenderer.render( generatedSiteFile, outputDirectory, 
siteDescriptor, template, attributes,
                                          locale );
                 }
 
@@ -311,52 +312,30 @@
                 //Generate reports
                 if ( reports != null )
                 {
-                    try
-                    {
-                        generateReportsPages( reports, locale, 
localeOutputDirectory );
-                    }
-                    catch ( Exception e )
-                    {
-                        throw new MojoExecutionException( "An error is 
occurred in reports pages generation.", e );
-                    }
+                    generateReportsPages( reports, locale, outputDirectory, 
defaultLocale, siteDescriptor );
                 }
 
                 //Generate overview pages
                 if ( projectInfos.size() > 0 )
                 {
-                    try
-                    {
-                        generateProjectInfoPage( getSiteDescriptor( reports, 
locale ), locale );
-                    }
-                    catch ( Exception e )
-                    {
-                        throw new MojoExecutionException( "An error is 
occurred in project info page generation.", e );
-                    }
+                    generateProjectInfoPage( siteDescriptor, locale, 
projectInfos, outputDirectory );
                 }
 
                 if ( projectReports.size() > 0 )
                 {
-                    try
-                    {
-                        generateProjectReportsPage( getSiteDescriptor( 
reports, locale ), locale );
-                    }
-                    catch ( Exception e )
-                    {
-                        throw new MojoExecutionException( "An error is 
occurred in project reports page generation.",
-                                                          e );
-                    }
+                    generateProjectReportsPage( siteDescriptor, locale, 
projectReports, outputDirectory );
                 }
 
                 // Try to generate the index.html
+                String displayLanguage = locale.getDisplayLanguage( 
Locale.ENGLISH );
                 if ( duplicate.get( "index" ) != null )
                 {
-                    getLog().info( "Ignoring the index file generation for the 
\"" + getDisplayLanguage( locale ) +
-                        "\" version." );
+                    getLog().info( "Ignoring the index file generation for the 
" + displayLanguage + " version." );
                 }
                 else
                 {
-                    getLog().info( "Generate an index file for the \"" + 
getDisplayLanguage( locale ) + "\" version." );
-                    generateIndexPage( getSiteDescriptor( reports, locale ), 
locale );
+                    getLog().info( "Generate an index file for the " + 
displayLanguage + " version." );
+                    generateIndexPage( siteDescriptor, locale, outputDirectory 
);
                 }
 
                 // Log if a user override a report file
@@ -366,13 +345,12 @@
 
                     if ( duplicate.get( reportFileName ) != null )
                     {
-                        getLog().info( "Override the generated file \"" + 
reportFileName + "\" for the \"" +
-                            getDisplayLanguage( locale ) + "\" version." );
+                        getLog().info( "Override the generated file \"" + 
reportFileName + "\" for the " +
+                            displayLanguage + " version." );
                     }
                 }
 
-                siteRenderer.render( siteDirectoryFile, localeOutputDirectory, 
getSiteDescriptor( reports, locale ),
-                                     template, attributes, locale );
+                siteRenderer.render( siteDirectoryFile, outputDirectory, 
siteDescriptor, template, attributes, locale );
 
                 File cssDirectory = new File( siteDirectory, "css" );
                 File imagesDirectory = new File( siteDirectory, "images" );
@@ -382,17 +360,17 @@
                 {
                     getLog().warn( "DEPRECATED: the css and images directories 
are deprecated, please use resources" );
 
-                    copyDirectory( cssDirectory, new File( 
localeOutputDirectory, "css" ) );
+                    copyDirectory( cssDirectory, new File( outputDirectory, 
"css" ) );
 
-                    copyDirectory( imagesDirectory, new File( 
localeOutputDirectory, "images" ) );
+                    copyDirectory( imagesDirectory, new File( outputDirectory, 
"images" ) );
                 }
 
-                copyResources( localeOutputDirectory );
+                copyResources( outputDirectory );
 
                 // Copy site resources
                 if ( resourcesDirectory != null && resourcesDirectory.exists() 
)
                 {
-                    copyDirectory( resourcesDirectory, localeOutputDirectory );
+                    copyDirectory( resourcesDirectory, outputDirectory );
                 }
 
                 // Copy the generated site in parent site if needed to provide 
module links
@@ -434,13 +412,13 @@
         {
             throw new MojoExecutionException( "Error during page generation", 
e );
         }
-        catch ( Exception e )
+        catch ( IOException e )
         {
             throw new MojoExecutionException( "Error during site generation", 
e );
         }
     }
 
-    private void categorizeReports( List reports )
+    private void categorizeReports( List reports, Locale defaultLocale, List 
projectInfos, List projectReports )
         throws MojoExecutionException
     {
         for ( Iterator i = reports.iterator(); i.hasNext(); )
@@ -467,18 +445,15 @@
      * <p>If <code>locales</code> variable is available, the first valid token 
will be the <code>defaultLocale</code>
      * for this instance of the Java Virtual Machine.</p>
      */
-    private void initLocalesList()
+    private List initLocalesList()
     {
         if ( locales == null )
         {
-            localesList.add( defaultLocale );
-
-            return;
+            return Collections.EMPTY_LIST;
         }
-
         String[] localesArray = StringUtils.split( locales, "," );
 
-        boolean defaultLocaleWasSet = false;
+        List localesList = new ArrayList();
         for ( int i = 0; i < localesArray.length; i++ )
         {
             Locale locale = codeToLocale( localesArray[i] );
@@ -513,17 +488,12 @@
                 }
 
                 localesList.add( locale );
-
-                if ( !defaultLocaleWasSet )
-                {
-                    defaultLocale = locale;
-                    defaultLocaleWasSet = true;
-                }
             }
         }
+        return localesList;
     }
 
-    private String getReportsMenu( Locale locale )
+    private String getReportsMenu( Locale locale, List projectInfos, List 
projectReports )
     {
         StringBuffer buffer = new StringBuffer();
         buffer.append( "<menu name=\"" );
@@ -627,10 +597,9 @@
      * @param reports a list of reports
      * @param locale the current locale
      * @return the inpustream
-     * @throws MojoExecutionException is any
-     * @todo should only be needed once
+     * @throws org.apache.maven.plugin.MojoExecutionException is any
      */
-    private InputStream getSiteDescriptor( List reports, Locale locale )
+    private String getSiteDescriptor( List reports, Locale locale, List 
projectInfos, List projectReports )
         throws MojoExecutionException
     {
         File siteDescriptor = new File( siteDirectory, "site_" + 
locale.getLanguage() + ".xml" );
@@ -668,7 +637,7 @@
 
         if ( reports != null )
         {
-            props.put( "reports", getReportsMenu( locale ) );
+            props.put( "reports", getReportsMenu( locale, projectInfos, 
projectReports ) );
         }
 
         if ( project.getParent() != null )
@@ -708,7 +677,7 @@
 
         siteDescriptorContent = StringUtils.interpolate( 
siteDescriptorContent, props );
 
-        return new StringInputStream( siteDescriptorContent );
+        return siteDescriptorContent;
     }
 
     /**
@@ -716,10 +685,10 @@
      *
      * @param siteDescriptor
      * @param locale
-     * @throws Exception
+     * @param outputDirectory
      */
-    private void generateIndexPage( InputStream siteDescriptor, Locale locale )
-        throws Exception
+    private void generateIndexPage( String siteDescriptor, Locale locale, File 
outputDirectory )
+        throws RendererException, IOException
     {
         String outputFileName = "index.html";
 
@@ -757,7 +726,7 @@
 
         sink.close();
 
-        File outputFile = new File( getOuputDirectory( locale ), 
outputFileName );
+        File outputFile = new File( outputDirectory, outputFileName );
 
         siteRenderer.generateDocument( new OutputStreamWriter( new 
FileOutputStream( outputFile ), outputEncoding ),
                                        template, attributes, sink, locale );
@@ -771,10 +740,10 @@
      * @param reports
      * @param locale
      * @param localeOutputDirectory
-     * @throws Exception
      */
-    private void generateReportsPages( List reports, Locale locale, File 
localeOutputDirectory )
-        throws Exception
+    private void generateReportsPages( List reports, Locale locale, File 
localeOutputDirectory, Locale defaultLocale,
+                                       String siteDescriptor )
+        throws RendererException, IOException, MavenReportException
     {
         for ( Iterator j = reports.iterator(); j.hasNext(); )
         {
@@ -798,7 +767,7 @@
             String outputFileName = reportFileName + ".html";
 
             SiteRendererSink sink = siteRenderer.createSink( new File( 
siteDirectory ), outputFileName,
-                                                             
getSiteDescriptor( reports, locale ) );
+                                                             siteDescriptor );
 
             report.generate( sink, locale );
 
@@ -818,8 +787,9 @@
         }
     }
 
-    private void generateProjectInfoPage( InputStream siteDescriptor, Locale 
locale )
-        throws Exception
+    private void generateProjectInfoPage( String siteDescriptor, Locale 
locale, List projectInfos,
+                                          File outputDirectory )
+        throws RendererException, IOException
     {
         String outputFileName = "project-info.html";
 
@@ -892,14 +862,15 @@
 
         sink.close();
 
-        File outputFile = new File( getOuputDirectory( locale ), 
outputFileName );
+        File outputFile = new File( outputDirectory, outputFileName );
 
         siteRenderer.generateDocument( new OutputStreamWriter( new 
FileOutputStream( outputFile ), outputEncoding ),
                                        template, attributes, sink, locale );
     }
 
-    private void generateProjectReportsPage( InputStream siteDescriptor, 
Locale locale )
-        throws Exception
+    private void generateProjectReportsPage( String siteDescriptor, Locale 
locale, List projectReports,
+                                             File outputDirectory )
+        throws RendererException, IOException
     {
         String outputFileName = "maven-reports.html";
 
@@ -968,14 +939,14 @@
 
         sink.body_();
 
-        File outputFile = new File( getOuputDirectory( locale ), 
outputFileName );
+        File outputFile = new File( outputDirectory, outputFileName );
 
         siteRenderer.generateDocument( new OutputStreamWriter( new 
FileOutputStream( outputFile ), outputEncoding ),
                                        template, attributes, sink, locale );
     }
 
     private void copyResources( File outputDir )
-        throws Exception
+        throws IOException
     {
         InputStream resourceList = getStream( RESOURCE_DIR + "/resources.txt" 
);
 
@@ -983,9 +954,9 @@
         {
             LineNumberReader reader = new LineNumberReader( new 
InputStreamReader( resourceList ) );
 
-            String line;
+            String line = reader.readLine();
 
-            while ( ( line = reader.readLine() ) != null )
+            while ( line != null )
             {
                 InputStream is = getStream( RESOURCE_DIR + "/" + line );
 
@@ -1009,12 +980,13 @@
                 IOUtil.close( is );
 
                 IOUtil.close( w );
+
+                line = reader.readLine();
             }
         }
     }
 
     private InputStream getStream( String name )
-        throws Exception
     {
         return DoxiaMojo.class.getClassLoader().getResourceAsStream( name );
     }
@@ -1051,13 +1023,8 @@
         }
     }
 
-    private File getOuputDirectory( Locale locale )
+    private File getOutputDirectory( Locale locale, Locale defaultLocale )
     {
-        if ( localesList.size() == 1 )
-        {
-            return new File( outputDirectory );
-        }
-
         if ( locale.getLanguage().equals( defaultLocale.getLanguage() ) )
         {
             return new File( outputDirectory );
@@ -1197,8 +1164,9 @@
                         sb = new StringBuffer(
                             "Some files are duplicates in the site directory 
or in the generated-site directory. " );
                         sb.append( "\n" );
-                        sb.append(
-                            "Review the following files for the \"" + 
getDisplayLanguage( locale ) + "\" version:" );
+                        sb.append( "Review the following files for the \"" );
+                        sb.append( locale.getDisplayLanguage( Locale.ENGLISH ) 
);
+                        sb.append( "\" version:" );
                     }
 
                     sb.append( "\n" );
@@ -1230,22 +1198,6 @@
     }
 
     /**
-     * Return the <code>display language</code> for the given locale or 
"Default"
-     *
-     * @param locale
-     * @return the display language in English or "Default" if the locale is 
the same of the default locale
-     */
-    private String getDisplayLanguage( Locale locale )
-    {
-        if ( !locale.getLanguage().equals( defaultLocale.getLanguage() ) )
-        {
-            return locale.getDisplayLanguage( Locale.ENGLISH );
-        }
-
-        return "Default";
-    }
-
-    /**
      * Converts a locale code like "en", "en_US" or "en_US_win" to a 
<code>java.util.Locale</code>
      * object.
      * <p>If localeCode = <code>default</code>, return the current value of 
the default locale for this instance
@@ -1255,14 +1207,14 @@
      * @return a java.util.Locale object instancied or null if errors occurred
      * @see <a 
href="http://java.sun.com/j2se/1.4.2/docs/api/java/util/Locale.html";>java.util.Locale#getDefault()</a>
      */
-    private Locale codeToLocale( final String localeCode )
+    private Locale codeToLocale( String localeCode )
     {
         if ( localeCode == null )
         {
             return null;
         }
 
-        if ( localeCode.equalsIgnoreCase( "default" ) )
+        if ( "default".equalsIgnoreCase( localeCode ) )
         {
             return Locale.getDefault();
         }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to