You are viewing a plain text version of this content. The canonical link for it is here.
Posted to doxia-commits@maven.apache.org by tr...@apache.org on 2006/07/12 14:34:24 UTC

svn commit: r421257 - in /maven/doxia/trunk/doxia-sandbox: doxia-book/src/main/java/org/apache/maven/doxia/book/ doxia-book/src/main/java/org/apache/maven/doxia/book/context/ doxia-book/src/main/java/org/apache/maven/doxia/book/services/indexer/ doxia-...

Author: trygvis
Date: Wed Jul 12 05:34:23 2006
New Revision: 421257

URL: http://svn.apache.org/viewvc?rev=421257&view=rev
Log:
o Generating better prev and next links. Now it will link to the next section (but should perhaps link to the chapter instead).
  Adding more code to the IndexEntry to make it easier to navigate.
o Renaming Book to BookModel.
o Adding the generation of index.html files which contains a complete index over chapters, sections and subsections.
  This page should probably include any content if a file named the same as the book or chapter exist.

Added:
    maven/doxia/trunk/doxia-sandbox/doxia-maven-plugin/src/main/java/org/apache/maven/doxia/plugin/Format.java
Modified:
    maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/BookDoxia.java
    maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/DefaultBookDoxia.java
    maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/context/BookContext.java
    maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/context/IndexEntry.java
    maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/indexer/BookIndexer.java
    maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/indexer/BookIndexerTest.java
    maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/indexer/DefaultBookIndexer.java
    maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/io/BookIo.java
    maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/io/DefaultBookIo.java
    maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/ITextBookRenderer.java
    maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/LatexBookRenderer.java
    maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/XHtmlBookRenderer.java
    maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/XdocBookRenderer.java
    maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/xdoc/XdocBookSink.java
    maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/validation/BookValidator.java
    maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/validation/DefaultBookValidator.java
    maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/modello/book.mdo
    maven/doxia/trunk/doxia-sandbox/doxia-book/src/test/java/org/apache/maven/doxia/book/BookRendererTest.java
    maven/doxia/trunk/doxia-sandbox/doxia-book/src/test/resources/book-1.xml
    maven/doxia/trunk/doxia-sandbox/doxia-maven-plugin/src/main/java/org/apache/maven/doxia/plugin/DoxiaRenderBooksMojo.java

Modified: maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/BookDoxia.java
URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/BookDoxia.java?rev=421257&r1=421256&r2=421257&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/BookDoxia.java (original)
+++ maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/BookDoxia.java Wed Jul 12 05:34:23 2006
@@ -1,5 +1,7 @@
 package org.apache.maven.doxia.book;
 
+import org.apache.maven.doxia.book.model.BookModel;
+
 import java.io.File;
 import java.util.List;
 
@@ -11,6 +13,9 @@
 {
     String ROLE = BookDoxia.class.getName();
 
-    void renderBook( File bookDescriptor, String bookRendererId, List files, File outputDirectory )
+    BookModel loadBook( File bookDescriptor )
+        throws BookDoxiaException;
+
+    void renderBook( BookModel book, String bookRendererId, List files, File outputDirectory )
         throws BookDoxiaException;
 }

Modified: maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/DefaultBookDoxia.java
URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/DefaultBookDoxia.java?rev=421257&r1=421256&r2=421257&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/DefaultBookDoxia.java (original)
+++ maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/DefaultBookDoxia.java Wed Jul 12 05:34:23 2006
@@ -1,8 +1,7 @@
 package org.apache.maven.doxia.book;
 
 import org.apache.maven.doxia.book.context.BookContext;
-import org.apache.maven.doxia.book.context.IndexEntry;
-import org.apache.maven.doxia.book.model.Book;
+import org.apache.maven.doxia.book.model.BookModel;
 import org.apache.maven.doxia.book.services.indexer.BookIndexer;
 import org.apache.maven.doxia.book.services.io.BookIo;
 import org.apache.maven.doxia.book.services.renderer.BookRenderer;
@@ -47,11 +46,15 @@
     // BookDoxia Implementation
     // ----------------------------------------------------------------------
 
-    public void renderBook( File bookDescriptor, String bookRendererId, List files, File outputDirectory )
+    public BookModel loadBook( File bookDescriptor )
         throws BookDoxiaException
     {
-        Book book = bookIo.readBook( bookDescriptor );
+        return bookIo.readBook( bookDescriptor );
+    }
 
+    public void renderBook( BookModel book, String bookRendererId, List files, File outputDirectory )
+        throws BookDoxiaException
+    {
         // ----------------------------------------------------------------------
         //
         // ----------------------------------------------------------------------

Modified: maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/context/BookContext.java
URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/context/BookContext.java?rev=421257&r1=421256&r2=421257&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/context/BookContext.java (original)
+++ maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/context/BookContext.java Wed Jul 12 05:34:23 2006
@@ -1,6 +1,6 @@
 package org.apache.maven.doxia.book.context;
 
-import org.apache.maven.doxia.book.model.Book;
+import org.apache.maven.doxia.book.model.BookModel;
 
 import java.util.Map;
 import java.util.HashMap;
@@ -12,7 +12,7 @@
  */
 public class BookContext
 {
-    private Book book;
+    private BookModel book;
 
     private Map files;
 
@@ -51,12 +51,12 @@
     // Accessors
     // ----------------------------------------------------------------------
 
-    public Book getBook()
+    public BookModel getBook()
     {
         return book;
     }
 
-    public void setBook( Book book )
+    public void setBook( BookModel book )
     {
         this.book = book;
     }

Modified: maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/context/IndexEntry.java
URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/context/IndexEntry.java?rev=421257&r1=421256&r2=421257&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/context/IndexEntry.java (original)
+++ maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/context/IndexEntry.java Wed Jul 12 05:34:23 2006
@@ -137,6 +137,20 @@
         }
     }
 
+    public IndexEntry getLastEntry()
+    {
+        List entries = getChildEntries();
+
+        if ( entries.size() == 0 )
+        {
+            return null;
+        }
+        else
+        {
+            return (IndexEntry) entries.get( entries.size() - 1 );
+        }
+    }
+
     public IndexEntry getRootEntry()
     {
         List entries = getChildEntries();

Modified: maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/indexer/BookIndexer.java
URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/indexer/BookIndexer.java?rev=421257&r1=421256&r2=421257&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/indexer/BookIndexer.java (original)
+++ maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/indexer/BookIndexer.java Wed Jul 12 05:34:23 2006
@@ -1,6 +1,6 @@
 package org.apache.maven.doxia.book.services.indexer;
 
-import org.apache.maven.doxia.book.model.Book;
+import org.apache.maven.doxia.book.model.BookModel;
 import org.apache.maven.doxia.book.context.BookContext;
 import org.apache.maven.doxia.book.BookDoxiaException;
 
@@ -12,6 +12,6 @@
 {
     String ROLE = BookIndexer.class.getName();
 
-    void indexBook( Book book, BookContext bookContext )
+    void indexBook( BookModel book, BookContext bookContext )
         throws BookDoxiaException;
 }

Modified: maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/indexer/BookIndexerTest.java
URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/indexer/BookIndexerTest.java?rev=421257&r1=421256&r2=421257&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/indexer/BookIndexerTest.java (original)
+++ maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/indexer/BookIndexerTest.java Wed Jul 12 05:34:23 2006
@@ -3,7 +3,7 @@
 import org.codehaus.plexus.PlexusTestCase;
 import org.codehaus.plexus.util.FileUtils;
 import org.apache.maven.doxia.book.services.io.BookIo;
-import org.apache.maven.doxia.book.model.Book;
+import org.apache.maven.doxia.book.model.BookModel;
 import org.apache.maven.doxia.book.context.BookContext;
 import org.apache.maven.doxia.book.context.IndexEntry;
 
@@ -21,7 +21,7 @@
 
         BookIndexer indexer = (BookIndexer) lookup( BookIndexer.ROLE );
 
-        Book book = io.readBook( getTestFile( "src/test/resources/book-1.xml" ) );
+        BookModel book = io.readBook( getTestFile( "src/test/resources/book-1.xml" ) );
 
         BookContext context = new BookContext();
 

Modified: maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/indexer/DefaultBookIndexer.java
URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/indexer/DefaultBookIndexer.java?rev=421257&r1=421256&r2=421257&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/indexer/DefaultBookIndexer.java (original)
+++ maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/indexer/DefaultBookIndexer.java Wed Jul 12 05:34:23 2006
@@ -3,7 +3,7 @@
 import org.apache.maven.doxia.book.context.BookContext;
 import org.apache.maven.doxia.book.context.IndexEntry;
 import org.apache.maven.doxia.book.context.BookIndex;
-import org.apache.maven.doxia.book.model.Book;
+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.book.BookDoxiaException;
@@ -35,7 +35,7 @@
     // BookIndexer Implementation
     // ----------------------------------------------------------------------
 
-    public void indexBook( Book book, BookContext bookContext )
+    public void indexBook( BookModel book, BookContext bookContext )
         throws BookDoxiaException
     {
         BookIndex index = new BookIndex();

Modified: maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/io/BookIo.java
URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/io/BookIo.java?rev=421257&r1=421256&r2=421257&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/io/BookIo.java (original)
+++ maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/io/BookIo.java Wed Jul 12 05:34:23 2006
@@ -1,6 +1,6 @@
 package org.apache.maven.doxia.book.services.io;
 
-import org.apache.maven.doxia.book.model.Book;
+import org.apache.maven.doxia.book.model.BookModel;
 import org.apache.maven.doxia.book.BookDoxiaException;
 import org.apache.maven.doxia.book.context.BookContext;
 
@@ -15,7 +15,7 @@
 {
     String ROLE = BookIo.class.getName();
 
-    Book readBook( File bookDescriptor )
+    BookModel readBook( File bookDescriptor )
         throws BookDoxiaException;
 
     void loadFiles( BookContext context, List files );

Modified: maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/io/DefaultBookIo.java
URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/io/DefaultBookIo.java?rev=421257&r1=421256&r2=421257&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/io/DefaultBookIo.java (original)
+++ maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/io/DefaultBookIo.java Wed Jul 12 05:34:23 2006
@@ -1,7 +1,7 @@
 package org.apache.maven.doxia.book.services.io;
 
 import org.apache.maven.doxia.book.model.io.xpp3.BookXpp3Reader;
-import org.apache.maven.doxia.book.model.Book;
+import org.apache.maven.doxia.book.model.BookModel;
 import org.apache.maven.doxia.book.BookDoxiaException;
 import org.apache.maven.doxia.book.context.BookContext;
 import org.apache.maven.doxia.site.module.SiteModule;
@@ -37,7 +37,7 @@
     // DefaultBookIo Implementation
     // -----------------------------------------------------------------------
 
-    public Book readBook( File bookDescriptor )
+    public BookModel readBook( File bookDescriptor )
         throws BookDoxiaException
     {
         try

Modified: maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/ITextBookRenderer.java
URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/ITextBookRenderer.java?rev=421257&r1=421256&r2=421257&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/ITextBookRenderer.java (original)
+++ maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/ITextBookRenderer.java Wed Jul 12 05:34:23 2006
@@ -2,14 +2,13 @@
 
 import org.apache.maven.doxia.book.context.BookContext;
 import org.apache.maven.doxia.book.BookDoxiaException;
-import org.apache.maven.doxia.book.model.Book;
+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.itext.ITextSink;
 import org.apache.maven.doxia.module.itext.ITextUtil;
 import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.Doxia;
-import org.apache.maven.doxia.editor.io.DebugSink;
 import org.apache.maven.doxia.editor.io.PipelineSink;
 import org.apache.maven.doxia.parser.manager.ParserNotFoundException;
 import org.apache.maven.doxia.parser.ParseException;
@@ -52,7 +51,7 @@
     public void renderBook( BookContext context )
         throws BookDoxiaException
     {
-        Book book = context.getBook();
+        BookModel book = context.getBook();
 
         if ( !context.getOutputDirectory().exists() )
         {

Modified: maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/LatexBookRenderer.java
URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/LatexBookRenderer.java?rev=421257&r1=421256&r2=421257&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/LatexBookRenderer.java (original)
+++ maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/LatexBookRenderer.java Wed Jul 12 05:34:23 2006
@@ -3,7 +3,7 @@
 import org.apache.maven.doxia.book.BookDoxiaException;
 import org.apache.maven.doxia.book.services.renderer.latex.LatexBookSink;
 import org.apache.maven.doxia.book.context.BookContext;
-import org.apache.maven.doxia.book.model.Book;
+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.latex.LatexSink;
@@ -20,8 +20,6 @@
 import java.io.FileReader;
 import java.io.FileNotFoundException;
 import java.util.Iterator;
-import java.util.List;
-import java.util.ArrayList;
 import java.util.Map;
 import java.util.HashMap;
 
@@ -46,7 +44,7 @@
     public void renderBook( BookContext context )
         throws BookDoxiaException
     {
-        Book book = context.getBook();
+        BookModel book = context.getBook();
 
         if ( !context.getOutputDirectory().exists() )
         {
@@ -90,7 +88,7 @@
         private String title;
     }
 
-    private void writeBook( Book book, BookContext context, PrintWriter writer )
+    private void writeBook( BookModel book, BookContext context, PrintWriter writer )
         throws IOException, BookDoxiaException
     {
         // ----------------------------------------------------------------------

Modified: maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/XHtmlBookRenderer.java
URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/XHtmlBookRenderer.java?rev=421257&r1=421256&r2=421257&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/XHtmlBookRenderer.java (original)
+++ maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/XHtmlBookRenderer.java Wed Jul 12 05:34:23 2006
@@ -3,7 +3,7 @@
 import org.apache.maven.doxia.Doxia;
 import org.apache.maven.doxia.book.context.BookContext;
 import org.apache.maven.doxia.book.BookDoxiaException;
-import org.apache.maven.doxia.book.model.Book;
+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.codehaus.plexus.logging.AbstractLogEnabled;
@@ -36,7 +36,7 @@
     public void renderBook( BookContext context )
         throws BookDoxiaException
     {
-        Book book = context.getBook();
+        BookModel book = context.getBook();
 
         if ( !context.getOutputDirectory().exists() )
         {

Modified: maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/XdocBookRenderer.java
URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/XdocBookRenderer.java?rev=421257&r1=421256&r2=421257&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/XdocBookRenderer.java (original)
+++ maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/XdocBookRenderer.java Wed Jul 12 05:34:23 2006
@@ -1,14 +1,14 @@
 package org.apache.maven.doxia.book.services.renderer;
 
 import org.apache.maven.doxia.Doxia;
+import org.apache.maven.doxia.module.xdoc.XdocSink;
 import org.apache.maven.doxia.book.BookDoxiaException;
 import org.apache.maven.doxia.book.context.BookContext;
 import org.apache.maven.doxia.book.context.IndexEntry;
-import org.apache.maven.doxia.book.model.Book;
+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.book.services.renderer.xdoc.XdocBookSink;
-import org.apache.maven.doxia.editor.io.DebugSink;
 import org.apache.maven.doxia.editor.io.PipelineSink;
 import org.apache.maven.doxia.parser.ParseException;
 import org.apache.maven.doxia.parser.manager.ParserNotFoundException;
@@ -19,6 +19,7 @@
 import java.io.FileReader;
 import java.io.FileWriter;
 import java.io.IOException;
+import java.io.File;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -44,7 +45,7 @@
     public void renderBook( BookContext context )
         throws BookDoxiaException
     {
-        Book book = context.getBook();
+        BookModel book = context.getBook();
 
         if ( !context.getOutputDirectory().exists() )
         {
@@ -66,9 +67,34 @@
     // Private
     // -----------------------------------------------------------------------
 
-    private void renderBook( Book book, BookContext context )
+    private void renderBook( BookModel book, BookContext context )
         throws BookDoxiaException
     {
+        // -----------------------------------------------------------------------
+        // Render the book index.xml page
+        // -----------------------------------------------------------------------
+
+        File index = new File( context.getOutputDirectory(), "index.xml" );
+
+        try
+        {
+            writeBookIndex( index, book, context );
+        }
+        catch ( IOException e )
+        {
+            throw new BookDoxiaException( "Error while rendering index page to: '" + index.getAbsolutePath() + "'.", e );
+        }
+
+        // -----------------------------------------------------------------------
+        // Render the index.html files for each chapter
+        // -----------------------------------------------------------------------
+
+        // TODO: Implement
+
+        // -----------------------------------------------------------------------
+        // Render all the chapters
+        // -----------------------------------------------------------------------
+
         Iterator ii = context.getIndex().getChildEntries().iterator();
 
         for ( Iterator it = book.getChapters().iterator(); it.hasNext(); )
@@ -79,6 +105,99 @@
         }
     }
 
+    // -----------------------------------------------------------------------
+    // Index Rendering
+    // -----------------------------------------------------------------------
+
+    private void writeBookIndex( File index, BookModel book, BookContext context )
+        throws IOException
+    {
+        XdocSink sink = new XdocSink( new FileWriter( index ) );
+
+        // -----------------------------------------------------------------------
+        // Head
+        // -----------------------------------------------------------------------
+
+        sink.head();
+
+        sink.title();
+        sink.text( book.getTitle() + " - Index" );
+        sink.title_();
+
+        sink.head_();
+
+        // -----------------------------------------------------------------------
+        // Body
+        // -----------------------------------------------------------------------
+
+        sink.body();
+
+        sink.section1();
+        sink.sectionTitle1();
+        sink.text( book.getTitle() + " - Index" );
+        sink.sectionTitle1_();
+
+        sink.list();
+        for ( Iterator it = context.getIndex().getChildEntries().iterator(); it.hasNext(); )
+        {
+            writeChapterIndexForBookIndex( sink, (IndexEntry) it.next() );
+        }
+        sink.list_();
+
+        sink.section1_();
+
+        sink.body_();
+    }
+
+    private void writeChapterIndexForBookIndex( XdocSink sink, IndexEntry chapterEntry )
+    {
+        sink.listItem();
+        sink.link( chapterEntry.getId() + ".html" );
+        sink.text( chapterEntry.getTitle() );
+        sink.link_();
+
+        sink.list();
+        for ( Iterator it = chapterEntry.getChildEntries().iterator(); it.hasNext(); )
+        {
+            IndexEntry sectionIndex = (IndexEntry) it.next();
+            writeSectionIndexForBookIndex( sink, sectionIndex );
+        }
+        sink.list_();
+
+        sink.listItem_();
+    }
+
+    private void writeSectionIndexForBookIndex( XdocSink sink, IndexEntry sectionIndex )
+    {
+        sink.listItem();
+        sink.link( sectionIndex.getId() + ".html" );
+        sink.text( sectionIndex.getTitle() );
+        sink.link_();
+
+        sink.list();
+        for ( Iterator it = sectionIndex.getChildEntries().iterator(); it.hasNext(); )
+        {
+            IndexEntry subsectionIndex = (IndexEntry) it.next();
+            writeSubsectionIndexForBookIndex( sink, sectionIndex, subsectionIndex );
+        }
+        sink.list_();
+
+        sink.listItem_();
+    }
+
+    private void writeSubsectionIndexForBookIndex( XdocSink sink, IndexEntry sectionIndex, IndexEntry subsectionIndex )
+    {
+        sink.listItem();
+        sink.link( sectionIndex.getId() + ".html#" + subsectionIndex.getId() );
+        sink.text( subsectionIndex.getTitle() );
+        sink.link_();
+        sink.listItem_();
+    }
+
+    // -----------------------------------------------------------------------
+    // Rendering
+    // -----------------------------------------------------------------------
+
     private void renderChapter( Chapter chapter, BookContext context, IndexEntry chapterIndex )
         throws BookDoxiaException
     {
@@ -110,7 +229,7 @@
             }
 
             List pipeline = new ArrayList();
-            pipeline.add( DebugSink.newInstance() );
+//            pipeline.add( DebugSink.newInstance() );
             pipeline.add( sink );
             Sink pipelineSink = PipelineSink.newInstance( pipeline );
 

Modified: maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/xdoc/XdocBookSink.java
URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/xdoc/XdocBookSink.java?rev=421257&r1=421256&r2=421257&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/xdoc/XdocBookSink.java (original)
+++ maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/xdoc/XdocBookSink.java Wed Jul 12 05:34:23 2006
@@ -72,6 +72,8 @@
         markup( "<table width=\"100%\" align=\"center\">" + EOL );
         markup( "<tr>" + EOL );
 
+        IndexEntry parent = indexEntry.getParent();
+
         // -----------------------------------------------------------------------
         // Prev
         // -----------------------------------------------------------------------
@@ -86,7 +88,17 @@
         }
         else
         {
-            string = "&lt;first section&gt;";
+            IndexEntry prevChapter = parent.getPrevEntry();
+
+            if ( prevChapter == null )
+            {
+                string = "<i>Start of book</i>";
+            }
+            else
+            {
+                IndexEntry lastEntry = prevChapter.getLastEntry();
+                string = "Previous: <a href='" + lastEntry.getId() + ".html'>" + lastEntry.getTitle() + "</a>";
+            }
         }
 
         markup( "<td><div align='left'>" + string + "</div></td>" + EOL );
@@ -95,9 +107,7 @@
         // Parent
         // -----------------------------------------------------------------------
 
-        IndexEntry parent = indexEntry.getParent();
-
-        markup( "<td><div align='center'>Up: <a href='" + parent.getId() + ".html'>" + parent.getTitle() + "</a></div></td>" + EOL );
+        markup( "<td><div align='center'><b><i>NOT IMPLEMENTED</i></b> Up: <a href='" + parent.getId() + ".html'>" + parent.getTitle() + "</a></div></td>" + EOL );
 
         // -----------------------------------------------------------------------
         //
@@ -111,7 +121,17 @@
         }
         else
         {
-            string = "&lt;last section&gt;";
+            IndexEntry nextChapter = parent.getNextEntry();
+
+            if ( nextChapter == null )
+            {
+                string = "<i>End of book</i>";
+            }
+            else
+            {
+                IndexEntry firstEntry = nextChapter.getFirstEntry();
+                string = "Next: <a href='" + firstEntry.getId() + ".html'>" + firstEntry.getTitle() + "</a>";
+            }
         }
 
         markup( "<td><div align='right'>" + string + "</div></td>" + EOL );

Modified: maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/validation/BookValidator.java
URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/validation/BookValidator.java?rev=421257&r1=421256&r2=421257&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/validation/BookValidator.java (original)
+++ maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/validation/BookValidator.java Wed Jul 12 05:34:23 2006
@@ -1,6 +1,6 @@
 package org.apache.maven.doxia.book.services.validation;
 
-import org.apache.maven.doxia.book.model.Book;
+import org.apache.maven.doxia.book.model.BookModel;
 
 /**
  * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
@@ -10,5 +10,5 @@
 {
     String ROLE = BookValidator.class.getName();
 
-    ValidationResult validateBook( Book book );
+    ValidationResult validateBook( BookModel book );
 }

Modified: maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/validation/DefaultBookValidator.java
URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/validation/DefaultBookValidator.java?rev=421257&r1=421256&r2=421257&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/validation/DefaultBookValidator.java (original)
+++ maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/validation/DefaultBookValidator.java Wed Jul 12 05:34:23 2006
@@ -1,10 +1,8 @@
 package org.apache.maven.doxia.book.services.validation;
 
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.util.StringUtils;
-import org.apache.maven.doxia.book.model.Book;
+import org.apache.maven.doxia.book.model.BookModel;
 import org.apache.maven.doxia.book.model.Chapter;
 
 import java.util.Iterator;
@@ -23,13 +21,18 @@
     // BookValidator Implementation
     // ----------------------------------------------------------------------
 
-    public ValidationResult validateBook( Book book )
+    public ValidationResult validateBook( BookModel book )
     {
         ValidationResult result = new ValidationResult();
 
         if ( StringUtils.isEmpty( book.getId() ) )
         {
             result.getErrors().add( "Book is missing id." );
+        }
+
+        if ( StringUtils.isEmpty( book.getTitle() ) )
+        {
+            result.getErrors().add( "Book is missing title." );
         }
 
         if ( book.getChapters().size() == 0 )

Modified: maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/modello/book.mdo
URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/modello/book.mdo?rev=421257&r1=421256&r2=421257&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/modello/book.mdo (original)
+++ maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/modello/book.mdo Wed Jul 12 05:34:23 2006
@@ -2,7 +2,7 @@
 
 <model>
   <id>book</id>
-  <name>Book</name>
+  <name>BookModel</name>
   <description>Model for a book in Doxia</description>
   <defaults>
     <default>

Modified: maven/doxia/trunk/doxia-sandbox/doxia-book/src/test/java/org/apache/maven/doxia/book/BookRendererTest.java
URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-sandbox/doxia-book/src/test/java/org/apache/maven/doxia/book/BookRendererTest.java?rev=421257&r1=421256&r2=421257&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-sandbox/doxia-book/src/test/java/org/apache/maven/doxia/book/BookRendererTest.java (original)
+++ maven/doxia/trunk/doxia-sandbox/doxia-book/src/test/java/org/apache/maven/doxia/book/BookRendererTest.java Wed Jul 12 05:34:23 2006
@@ -2,6 +2,7 @@
 
 import org.codehaus.plexus.PlexusTestCase;
 import org.codehaus.plexus.util.FileUtils;
+import org.apache.maven.doxia.book.model.BookModel;
 
 import java.io.File;
 import java.util.List;
@@ -22,8 +23,10 @@
 
         List files = FileUtils.getFiles( getTestFile( "src/test/resources/book-1" ), "**/*.apt, **/*.xml", "" );
 
-//        doxia.renderBook( book1, "itext", files, getTestFile( "target/book-1-itext" ) );
-//        doxia.renderBook( book1, "xhtml", files, getTestFile( "target/book-1-xhtml" ) );
-        doxia.renderBook( book1, "xdoc", files, getTestFile( "target/book-1-xdoc" ) );
+        BookModel book = doxia.loadBook( book1 );
+
+//        doxia.renderBook( "itext", files, getTestFile( "target/book-1-itext" ) );
+//        doxia.renderBook( "xhtml", files, getTestFile( "target/book-1-xhtml" ) );
+        doxia.renderBook( book, "xdoc", files, getTestFile( "target/book-1-xdoc" ) );
     }
 }

Modified: maven/doxia/trunk/doxia-sandbox/doxia-book/src/test/resources/book-1.xml
URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-sandbox/doxia-book/src/test/resources/book-1.xml?rev=421257&r1=421256&r2=421257&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-sandbox/doxia-book/src/test/resources/book-1.xml (original)
+++ maven/doxia/trunk/doxia-sandbox/doxia-book/src/test/resources/book-1.xml Wed Jul 12 05:34:23 2006
@@ -1,5 +1,6 @@
 <book>
   <id>plexus-user-guide</id>
+  <title>Test Book</title>
   <chapters>
     <chapter>
       <id>chapter-1</id>

Modified: 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=421257&r1=421256&r2=421257&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-sandbox/doxia-maven-plugin/src/main/java/org/apache/maven/doxia/plugin/DoxiaRenderBooksMojo.java (original)
+++ maven/doxia/trunk/doxia-sandbox/doxia-maven-plugin/src/main/java/org/apache/maven/doxia/plugin/DoxiaRenderBooksMojo.java Wed Jul 12 05:34:23 2006
@@ -3,6 +3,7 @@
 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.model.BookModel;
 import org.apache.maven.doxia.book.services.validation.ValidationResult;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
@@ -39,10 +40,9 @@
     private File basedir;
 
     /**
-     * @p-arameter expression="${project.reporting.outputDirectory}"
      * @parameter expression="${project.build.directory}/generated-site"
      */
-    private File outputDirectory;
+    private File generatedDocs;
 
     /**
      * @component
@@ -119,10 +119,13 @@
             // 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 );
+            if ( getLog().isDebugEnabled() )
+            {
+                getLog().debug( "Locating files to include in the book:" );
+                getLog().debug( "Basedir: " + basedir );
+                getLog().debug( "Includes: " + includes );
+                getLog().debug( "Excludes: " + excludes );
+            }
 
             List files;
 
@@ -138,18 +141,40 @@
                     "excludes=" + excludes, e );
             }
 
+            // -----------------------------------------------------------------------
+            // Load the model
+            // -----------------------------------------------------------------------
+
+            BookModel bookModel;
+
+            try
+            {
+                bookModel = bookDoxia.loadBook( descriptor );
+            }
+            catch ( InvalidBookDescriptorException e )
+            {
+                throw new MojoFailureException( "Invalid book descriptor: " + LINE_SEPARATOR +
+                    formatResult( e.getValidationResult() ) );
+            }
+            catch ( BookDoxiaException e )
+            {
+                throw new MojoExecutionException( "Error while loading the book descriptor", e );
+            }
+
+            // -----------------------------------------------------------------------
+            // Render the book in all the formats
+            // -----------------------------------------------------------------------
+
             for ( Iterator j = book.getFormats().iterator(); j.hasNext(); )
             {
-                String format = (String) j.next();
+                Format format = (Format) j.next();
+
+                File outputDirectory = new File( generatedDocs, format.getId() );
+                File directory = new File( outputDirectory, bookModel.getId() );
 
                 try
                 {
-                    bookDoxia.renderBook( descriptor, format, files, new File( outputDirectory, format ) );
-                }
-                catch ( InvalidBookDescriptorException e )
-                {
-                    throw new MojoFailureException( "Invalid book descriptor: " + LINE_SEPARATOR +
-                        formatResult( e.getValidationResult() ) );
+                    bookDoxia.renderBook( bookModel, format.getId(), files, directory );
                 }
                 catch ( BookDoxiaException e )
                 {

Added: maven/doxia/trunk/doxia-sandbox/doxia-maven-plugin/src/main/java/org/apache/maven/doxia/plugin/Format.java
URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-sandbox/doxia-maven-plugin/src/main/java/org/apache/maven/doxia/plugin/Format.java?rev=421257&view=auto
==============================================================================
--- maven/doxia/trunk/doxia-sandbox/doxia-maven-plugin/src/main/java/org/apache/maven/doxia/plugin/Format.java (added)
+++ maven/doxia/trunk/doxia-sandbox/doxia-maven-plugin/src/main/java/org/apache/maven/doxia/plugin/Format.java Wed Jul 12 05:34:23 2006
@@ -0,0 +1,15 @@
+package org.apache.maven.doxia.plugin;
+
+/**
+ * @author <a href="mailto:trygve.laugstol@objectware.no">Trygve Laugst&oslash;l</a>
+ * @version $Id$
+ */
+public class Format
+{
+    private String id;
+
+    public String getId()
+    {
+        return id;
+    }
+}