Author: trygvis
Date: Mon Jul  3 16:34:22 2006
New Revision: 418876

URL: http://svn.apache.org/viewvc?rev=418876&view=rev
Log:
o Adding a Maven plugin to render Doxia Books.

Added:
    maven/doxia/trunk/doxia-sandbox/doxia-maven-plugin/   (with props)
    maven/doxia/trunk/doxia-sandbox/doxia-maven-plugin/pom.xml
    maven/doxia/trunk/doxia-sandbox/doxia-maven-plugin/src/
    maven/doxia/trunk/doxia-sandbox/doxia-maven-plugin/src/main/
    maven/doxia/trunk/doxia-sandbox/doxia-maven-plugin/src/main/java/
    maven/doxia/trunk/doxia-sandbox/doxia-maven-plugin/src/main/java/org/
    maven/doxia/trunk/doxia-sandbox/doxia-maven-plugin/src/main/java/org/apache/
    
maven/doxia/trunk/doxia-sandbox/doxia-maven-plugin/src/main/java/org/apache/maven/
    
maven/doxia/trunk/doxia-sandbox/doxia-maven-plugin/src/main/java/org/apache/maven/doxia/
    
maven/doxia/trunk/doxia-sandbox/doxia-maven-plugin/src/main/java/org/apache/maven/doxia/plugin/
    
maven/doxia/trunk/doxia-sandbox/doxia-maven-plugin/src/main/java/org/apache/maven/doxia/plugin/Book.java
    
maven/doxia/trunk/doxia-sandbox/doxia-maven-plugin/src/main/java/org/apache/maven/doxia/plugin/DoxiaRenderBooksMojo.java

Propchange: maven/doxia/trunk/doxia-sandbox/doxia-maven-plugin/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Mon Jul  3 16:34:22 2006
@@ -0,0 +1,8 @@
+target
+*~
+*.log
+.classpath
+.project
+*.ipr
+*.iws
+*.iml

Added: maven/doxia/trunk/doxia-sandbox/doxia-maven-plugin/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-sandbox/doxia-maven-plugin/pom.xml?rev=418876&view=auto
==============================================================================
--- maven/doxia/trunk/doxia-sandbox/doxia-maven-plugin/pom.xml (added)
+++ maven/doxia/trunk/doxia-sandbox/doxia-maven-plugin/pom.xml Mon Jul  3 
16:34:22 2006
@@ -0,0 +1,24 @@
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.maven.doxia</groupId>
+    <artifactId>doxia</artifactId>
+  <version>1.0-alpha-9-SNAPSHOT</version>
+  </parent>
+  <artifactId>doxia-maven-plugin</artifactId>
+  <version>1.0-alpha-1-SNAPSHOT</version>
+  <packaging>maven-plugin</packaging>
+  <name>Doxia Maven Plugin</name>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-plugin-api</artifactId>
+      <version>2.0</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>doxia-book</artifactId>
+      <version>1.0-alpha-1-SNAPSHOT</version>
+    </dependency>
+  </dependencies>
+</project>

Added: 
maven/doxia/trunk/doxia-sandbox/doxia-maven-plugin/src/main/java/org/apache/maven/doxia/plugin/Book.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-sandbox/doxia-maven-plugin/src/main/java/org/apache/maven/doxia/plugin/Book.java?rev=418876&view=auto
==============================================================================
--- 
maven/doxia/trunk/doxia-sandbox/doxia-maven-plugin/src/main/java/org/apache/maven/doxia/plugin/Book.java
 (added)
+++ 
maven/doxia/trunk/doxia-sandbox/doxia-maven-plugin/src/main/java/org/apache/maven/doxia/plugin/Book.java
 Mon Jul  3 16:34:22 2006
@@ -0,0 +1,45 @@
+package org.apache.maven.doxia.plugin;
+
+import java.util.List;
+
+/**
+ * @author <a href="mailto:[EMAIL PROTECTED]">Trygve Laugst&oslash;l</a>
+ * @version $Id$
+ */
+public class Book
+{
+    private String descriptor;
+
+    private List formats;
+
+    private String directory;
+
+    private List includes;
+
+    private List excludes;
+
+    public String getDescriptor()
+    {
+        return descriptor;
+    }
+
+    public List getFormats()
+    {
+        return formats;
+    }
+
+    public String getDirectory()
+    {
+        return directory;
+    }
+
+    public List getIncludes()
+    {
+        return includes;
+    }
+
+    public List getExcludes()
+    {
+        return excludes;
+    }
+}

Added: 
maven/doxia/trunk/doxia-sandbox/doxia-maven-plugin/src/main/java/org/apache/maven/doxia/plugin/DoxiaRenderBooksMojo.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-sandbox/doxia-maven-plugin/src/main/java/org/apache/maven/doxia/plugin/DoxiaRenderBooksMojo.java?rev=418876&view=auto
==============================================================================
--- 
maven/doxia/trunk/doxia-sandbox/doxia-maven-plugin/src/main/java/org/apache/maven/doxia/plugin/DoxiaRenderBooksMojo.java
 (added)
+++ 
maven/doxia/trunk/doxia-sandbox/doxia-maven-plugin/src/main/java/org/apache/maven/doxia/plugin/DoxiaRenderBooksMojo.java
 Mon Jul  3 16:34:22 2006
@@ -0,0 +1,191 @@
+package org.apache.maven.doxia.plugin;
+
+import org.apache.maven.doxia.book.BookDoxia;
+import org.apache.maven.doxia.book.BookDoxiaException;
+import org.apache.maven.doxia.book.InvalidBookDescriptorException;
+import org.apache.maven.doxia.book.services.validation.ValidationResult;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.StringUtils;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * @goal render-books
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Trygve Laugst&oslash;l</a>
+ * @version $Id$
+ */
+public class DoxiaRenderBooksMojo
+    extends AbstractMojo
+{
+    // ----------------------------------------------------------------------
+    //
+    // ----------------------------------------------------------------------
+
+    /**
+     * @parameter
+     */
+    private List books;
+
+    /**
+     * @parameter expression="${basedir}"
+     */
+    private File basedir;
+
+    /**
+     * @parameter expression="${project.reporting.outputDirectory}"
+     */
+    private File outputDirectory;
+
+    /**
+     * @component
+     */
+    private BookDoxia bookDoxia;
+
+    private static final String LINE_SEPARATOR = System.getProperty( 
"line.separator" );
+
+    // ----------------------------------------------------------------------
+    //
+    // ----------------------------------------------------------------------
+
+    public void execute()
+        throws MojoExecutionException, MojoFailureException
+    {
+        for ( Iterator it = books.iterator(); it.hasNext(); )
+        {
+            Book book = (Book) it.next();
+
+            // 
----------------------------------------------------------------------
+            // Validate
+            // 
----------------------------------------------------------------------
+
+            if ( StringUtils.isEmpty( book.getDirectory() ) )
+            {
+                throw new MojoFailureException( "Invalid configuration: The 
book is required to have a descriptor set." );
+            }
+
+            if ( StringUtils.isEmpty( book.getDirectory() ) )
+            {
+                throw new MojoFailureException( "Invalid configuration: The 
book is required to have a directory set." );
+            }
+
+            if ( book.getFormats() == null || book.getFormats().size() == 0 )
+            {
+                throw new MojoFailureException( "Invalid configuration: The 
book is required to have at least one format set." );
+            }
+
+            // 
----------------------------------------------------------------------
+            //
+            // 
----------------------------------------------------------------------
+
+            File descriptor = new File( basedir, book.getDescriptor() );
+
+            String includes = "";
+
+            if ( book.getIncludes() != null )
+            {
+                for ( Iterator j = book.getIncludes().iterator(); j.hasNext(); 
)
+                {
+                    String include = (String) j.next();
+
+                    includes += include + ",";
+                }
+            }
+            else
+            {
+                includes = "**/*";
+            }
+
+            String excludes = "";
+
+            if ( book.getExcludes() != null )
+            {
+                for ( Iterator j = book.getExcludes().iterator(); j.hasNext(); 
)
+                {
+                    String exclude = (String) j.next();
+
+                    excludes += exclude + ",";
+                }
+            }
+
+            // 
----------------------------------------------------------------------
+            // Find all the files to pass to the renderer.
+            // 
----------------------------------------------------------------------
+
+            getLog().debug( "Locating files to include in the book:" );
+            getLog().debug( "Basedir: " + basedir );
+            getLog().debug( "Includes: " + includes );
+            getLog().debug( "Excludes: " + excludes );
+
+            List files;
+
+            try
+            {
+                files = FileUtils.getFiles( new File( basedir, 
book.getDirectory() ), includes, excludes );
+            }
+            catch ( IOException e )
+            {
+                throw new MojoExecutionException( "Error while looking for 
input files. " +
+                    "Basedir=" + basedir.getAbsolutePath() + ", " +
+                    "includes=" + includes + ", " +
+                    "excludes=" + excludes, e );
+            }
+
+            for ( Iterator j = book.getFormats().iterator(); j.hasNext(); )
+            {
+                String format = (String) j.next();
+
+                try
+                {
+                    bookDoxia.renderBook( descriptor, format, files, new File( 
outputDirectory, format ) );
+                }
+                catch ( InvalidBookDescriptorException e )
+                {
+                    throw new MojoFailureException( "Invalid book descriptor: 
" + LINE_SEPARATOR +
+                        formatResult( e.getValidationResult() ) );
+                }
+                catch ( BookDoxiaException e )
+                {
+                    throw new MojoExecutionException( "Error while generating 
book in format '" + format + "'.", e );
+                }
+            }
+        }
+    }
+
+    private String formatResult( ValidationResult result )
+    {
+        StringBuffer buffer = new StringBuffer();
+
+        if ( result.getErrors().size() > 0 )
+        {
+            buffer.append( "Validation errors:" );
+
+            for ( Iterator it = result.getErrors().iterator(); it.hasNext(); )
+            {
+                String error = (String) it.next();
+
+                buffer.append( LINE_SEPARATOR ).append( " " ).append( error );
+            }
+        }
+
+        if ( result.getWarnings().size() > 0 )
+        {
+            buffer.append( "Validation warnings:" );
+
+            for ( Iterator it = result.getWarnings().iterator(); it.hasNext(); 
)
+            {
+                String error = (String) it.next();
+
+                buffer.append( LINE_SEPARATOR ).append( " " ).append( error );
+            }
+        }
+
+        return buffer.toString();
+    }
+}


Reply via email to