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 = "<first section>"; + 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 = "<last section>"; + 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:[EMAIL PROTECTED]">Trygve Laugstø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:[EMAIL PROTECTED]">Trygve Laugstøl</a> + * @version $Id$ + */ +public class Format +{ + private String id; + + public String getId() + { + return id; + } +}