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 vs...@apache.org on 2009/06/06 12:30:37 UTC

svn commit: r782221 - in /maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src: main/java/org/apache/maven/doxia/module/fo/FoSink.java test/java/org/apache/maven/doxia/module/fo/FoSinkTest.java

Author: vsiveton
Date: Sat Jun  6 10:30:37 2009
New Revision: 782221

URL: http://svn.apache.org/viewvc?rev=782221&view=rev
Log:
DOXIA-332: Problem with Tables, Doxia, APT Maven site and PDF/RTF generation

o fixed tableCaption for fo sink

Modified:
    maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java
    maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/test/java/org/apache/maven/doxia/module/fo/FoSinkTest.java

Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java?rev=782221&r1=782220&r2=782221&view=diff
==============================================================================
--- maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java (original)
+++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java Sat Jun  6 10:30:37 2009
@@ -23,6 +23,7 @@
 import java.io.IOException;
 import java.io.StringWriter;
 import java.io.Writer;
+import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
@@ -42,6 +43,8 @@
 import org.apache.maven.doxia.util.HtmlTools;
 
 import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.util.xml.PrettyPrintXMLWriter;
+import org.codehaus.plexus.util.xml.XMLWriter;
 
 /**
  * FO Sink implementation.
@@ -98,6 +101,10 @@
 
     private String languageId;
 
+    private StringWriter tableCaptionWriter = null;
+
+    private XMLWriter tableCaptionXMLWriter = null;
+
     /** Map of warn messages with a String as key to describe the error type and a Set as value.
      * Using to reduce warn messages. */
     protected Map warnMessages;
@@ -909,6 +916,14 @@
     /** {@inheritDoc} */
     public void table_()
     {
+        String tableCaption = null;
+        if ( tableCaptionXMLWriter != null )
+        {
+            tableCaption = tableCaptionWriter.toString();
+            tableCaptionXMLWriter = null;
+            tableCaptionWriter = null;
+        }
+
         String content = tempWriter.toString();
         if ( content.lastIndexOf( "<fo:table " ) != -1 || content.lastIndexOf( "<fo:table>" ) != -1 )
         {
@@ -952,6 +967,16 @@
 
         writeEndTag( BLOCK_TAG );
         writeEOL();
+
+        if ( tableCaption != null )
+        {
+            SinkEventAttributeSet atts = new SinkEventAttributeSet();
+            atts.addAttribute( SinkEventAttributes.ALIGN, "center" );
+
+            paragraph( atts );
+            write( tableCaption );
+            paragraph_();
+        }
     }
 
     /** {@inheritDoc} */
@@ -1108,6 +1133,9 @@
     /** {@inheritDoc} */
     public void tableCaption( SinkEventAttributes attributes )
     {
+        tableCaptionWriter = new StringWriter();
+        tableCaptionXMLWriter = new PrettyPrintXMLWriter( tableCaptionWriter );
+
         // <fo:table-caption> is XSL-FO 1.0 standard but not implemented in FOP 0.95
         //writeStartTag( TABLE_CAPTION_TAG );
 
@@ -1536,7 +1564,14 @@
      */
     protected void write( String text )
     {
-        tempWriter.write( unifyEOLs( text ) );
+        if ( tableCaptionXMLWriter == null )
+        {
+            tempWriter.write( unifyEOLs( text ) );
+        }
+        else
+        {
+            tableCaptionXMLWriter.writeText( unifyEOLs( text ) );
+        }
     }
 
     /**
@@ -1619,6 +1654,50 @@
         return buffer.toString();
     }
 
+    /** {@inheritDoc} */
+    protected void writeStartTag( Tag t, MutableAttributeSet att, boolean isSimpleTag )
+    {
+        if ( tableCaptionXMLWriter == null )
+        {
+            super.writeStartTag ( t, att, isSimpleTag );
+        }
+        else
+        {
+            String tag = ( getNameSpace() != null ? getNameSpace() + ":" : "" ) + t.toString();
+            tableCaptionXMLWriter.startElement( tag );
+
+            if ( att != null )
+            {
+                Enumeration names = att.getAttributeNames();
+                while ( names.hasMoreElements() )
+                {
+                    Object key = names.nextElement();
+                    Object value = att.getAttribute( key );
+
+                    tableCaptionXMLWriter.addAttribute( key.toString(), value.toString() );
+                }
+            }
+
+            if ( isSimpleTag )
+            {
+                tableCaptionXMLWriter.endElement();
+            }
+        }
+    }
+
+    /** {@inheritDoc} */
+    protected void writeEndTag( Tag t )
+    {
+        if ( tableCaptionXMLWriter == null )
+        {
+            super.writeEndTag( t );
+        }
+        else
+        {
+            tableCaptionXMLWriter.endElement();
+        }
+    }
+
     private static final char UPPER_ALPHA = 0x391;
     private static final char PIV = 0x3d6;
     private static final char OLINE = 0x203e;

Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/test/java/org/apache/maven/doxia/module/fo/FoSinkTest.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/test/java/org/apache/maven/doxia/module/fo/FoSinkTest.java?rev=782221&r1=782220&r2=782221&view=diff
==============================================================================
--- maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/test/java/org/apache/maven/doxia/module/fo/FoSinkTest.java (original)
+++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/test/java/org/apache/maven/doxia/module/fo/FoSinkTest.java Sat Jun  6 10:30:37 2009
@@ -298,8 +298,13 @@
             + "keep-together.within-column=\"always\" padding-start=\"2.5pt\" "
             + "background-color=\"#eeeeee\" padding-before=\"4pt\">" + EOL + "<fo:block line-height=\"1.2em\" "
             + "text-align=\"center\" font-family=\"Helvetica,sans-serif\" font-size=\"9pt\">" + EOL + cell
-            + "</fo:block>" + EOL + "</fo:table-cell>" + EOL + "</fo:table-row>" + EOL + "</fo:table-body>"
-            + EOL + caption + "</fo:table>" + EOL + "</fo:block>" + EOL;
+            + "</fo:block>" + EOL + "</fo:table-cell>" + EOL + "</fo:table-row>" + EOL + "</fo:table-body>" + EOL
+            + "</fo:table>"+ EOL
+            + "</fo:block>"+ EOL
+            + EOL
+            + "<fo:block white-space-collapse=\"true\" space-after=\"6pt\" space-before=\"3pt\" "
+            + "font-family=\"Garamond,serif\" line-height=\"12pt\" text-align=\"center\" font-size=\"11pt\">"
+            + "Table_caption</fo:block>" + EOL;
     }
 
     /** {@inheritDoc} */