You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2007/08/22 18:39:35 UTC
svn commit: r568696 - in /maven/sandbox/trunk/doxia/doxia-book: pom.xml
src/main/java/org/apache/maven/doxia/book/DefaultBookDoxia.java
src/main/java/org/apache/maven/doxia/book/services/renderer/DocbookBookRenderer.java
Author: jdcasey
Date: Wed Aug 22 09:39:32 2007
New Revision: 568696
URL: http://svn.apache.org/viewvc?rev=568696&view=rev
Log:
[MSANDBOX-32] Adding docbook book renderer implementation.
Added:
maven/sandbox/trunk/doxia/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/DocbookBookRenderer.java (with props)
Modified:
maven/sandbox/trunk/doxia/doxia-book/pom.xml
maven/sandbox/trunk/doxia/doxia-book/src/main/java/org/apache/maven/doxia/book/DefaultBookDoxia.java
Modified: maven/sandbox/trunk/doxia/doxia-book/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/doxia/doxia-book/pom.xml?rev=568696&r1=568695&r2=568696&view=diff
==============================================================================
--- maven/sandbox/trunk/doxia/doxia-book/pom.xml (original)
+++ maven/sandbox/trunk/doxia/doxia-book/pom.xml Wed Aug 22 09:39:32 2007
@@ -67,6 +67,11 @@
<artifactId>doxia-module-latex</artifactId>
<version>1.0-alpha-9-SNAPSHOT</version>
</dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>doxia-module-docbook-simple</artifactId>
+ <version>1.0-alpha-9-SNAPSHOT</version>
+ </dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-i18n</artifactId>
Modified: maven/sandbox/trunk/doxia/doxia-book/src/main/java/org/apache/maven/doxia/book/DefaultBookDoxia.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/doxia/doxia-book/src/main/java/org/apache/maven/doxia/book/DefaultBookDoxia.java?rev=568696&r1=568695&r2=568696&view=diff
==============================================================================
--- maven/sandbox/trunk/doxia/doxia-book/src/main/java/org/apache/maven/doxia/book/DefaultBookDoxia.java (original)
+++ maven/sandbox/trunk/doxia/doxia-book/src/main/java/org/apache/maven/doxia/book/DefaultBookDoxia.java Wed Aug 22 09:39:32 2007
@@ -111,11 +111,13 @@
// Render the book
// ----------------------------------------------------------------------
+ System.out.println( "Book-renderers available: " + bookRenderers.keySet() );
+
BookRenderer bookRenderer = (BookRenderer) bookRenderers.get( bookRendererId );
if ( bookRenderer == null )
{
- throw new BookDoxiaException( "No such book rendered '" + bookRendererId + "'." );
+ throw new BookDoxiaException( "No such book renderer '" + bookRendererId + "'." );
}
bookRenderer.renderBook( context );
Added: maven/sandbox/trunk/doxia/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/DocbookBookRenderer.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/doxia/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/DocbookBookRenderer.java?rev=568696&view=auto
==============================================================================
--- maven/sandbox/trunk/doxia/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/DocbookBookRenderer.java (added)
+++ maven/sandbox/trunk/doxia/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/DocbookBookRenderer.java Wed Aug 22 09:39:32 2007
@@ -0,0 +1,134 @@
+package org.apache.maven.doxia.book.services.renderer;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.Writer;
+import java.util.Iterator;
+
+import org.apache.maven.doxia.Doxia;
+import org.apache.maven.doxia.book.BookDoxiaException;
+import org.apache.maven.doxia.book.context.BookContext;
+import org.apache.maven.doxia.book.model.BookModel;
+import org.apache.maven.doxia.book.model.Chapter;
+import org.apache.maven.doxia.book.model.Section;
+import org.apache.maven.doxia.module.docbook.DocBookSink;
+import org.apache.maven.doxia.parser.ParseException;
+import org.apache.maven.doxia.parser.manager.ParserNotFoundException;
+import org.apache.maven.doxia.sink.Sink;
+import org.codehaus.plexus.logging.AbstractLogEnabled;
+
+/**
+ * An implementation of <code>BookRenderer</code> for docbook
+ *
+ * @plexus.component role-hint="doc-book"
+ *
+ * @author Eric Redmond
+ */
+public class DocbookBookRenderer extends AbstractLogEnabled implements BookRenderer
+{
+ /**
+ * @plexus.requirement
+ */
+ private Doxia doxia;
+
+ // ----------------------------------------------------------------------
+ // BookRenderer Implementation
+ // ----------------------------------------------------------------------
+
+ public void renderBook( BookContext context ) throws BookDoxiaException
+ {
+ BookModel book = context.getBook();
+
+ if ( !context.getOutputDirectory().exists() )
+ {
+ if ( !context.getOutputDirectory().mkdirs() )
+ {
+ throw new BookDoxiaException( "Could not make directory: "
+ + context.getOutputDirectory().getAbsolutePath() + "." );
+ }
+ }
+
+ File bookFile = new File( context.getOutputDirectory(), book.getId() + ".xml" );
+
+ FileWriter fileWriter;
+
+ try
+ {
+ fileWriter = new FileWriter( bookFile );
+ }
+ catch ( IOException e )
+ {
+ throw new BookDoxiaException( "Error while opening file.", e );
+ }
+
+ // ----------------------------------------------------------------------
+ // Create the Dockbook File
+ // ----------------------------------------------------------------------
+
+ // TODO: Write out TOC?
+
+ DocBookSink sink = new DocBookSink( fileWriter, true );
+
+ for ( Iterator it = book.getChapters().iterator(); it.hasNext(); )
+ {
+ Chapter chapter = (Chapter) it.next();
+
+ renderChapter( fileWriter, chapter, context, sink );
+ }
+
+ sink.book_();
+
+ try
+ {
+ fileWriter.close();
+ }
+ catch ( IOException e )
+ {
+ throw new BookDoxiaException( "Error while closing file.", e );
+ }
+ }
+
+ private void renderChapter( Writer writer, Chapter chapter, BookContext context, Sink sink )
+ throws BookDoxiaException
+ {
+ for ( Iterator it = chapter.getSections().iterator(); it.hasNext(); )
+ {
+ Section section = (Section) it.next();
+
+ renderSection( writer, section, context, sink );
+ }
+ }
+
+ private void renderSection( Writer writer, Section section, BookContext context, Sink sink )
+ throws BookDoxiaException
+ {
+ BookContext.BookFile bookFile = (BookContext.BookFile) context.getFiles().get( section.getId() );
+
+ if ( bookFile == null )
+ {
+ throw new BookDoxiaException( "No document that matches section with id=" + section.getId() + "." );
+ }
+
+ try
+ {
+ doxia.parse( new FileReader( bookFile.getFile() ), bookFile.getParserId(), sink );
+ }
+ catch ( ParserNotFoundException e )
+ {
+ throw new BookDoxiaException( "Parser not found: " + bookFile.getParserId() + ".", e );
+ }
+ catch ( ParseException e )
+ {
+ throw new BookDoxiaException(
+ "Error while parsing document: " + bookFile.getFile().getAbsolutePath() + ".",
+ e );
+ }
+ catch ( FileNotFoundException e )
+ {
+ throw new BookDoxiaException( "Could not find document: " + bookFile.getFile().getAbsolutePath() + ".", e );
+ }
+ }
+}
Propchange: maven/sandbox/trunk/doxia/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/DocbookBookRenderer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/sandbox/trunk/doxia/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/DocbookBookRenderer.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"