Author: ltheussl Date: Thu Jun 4 07:02:45 2009 New Revision: 781665 URL: http://svn.apache.org/viewvc?rev=781665&view=rev Log: Code refactoring, no functional changes
Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookParser.java Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookParser.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookParser.java?rev=781665&r1=781664&r2=781665&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookParser.java (original) +++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookParser.java Thu Jun 4 07:02:45 2009 @@ -122,83 +122,27 @@ protected void handleStartTag( XmlPullParser parser, Sink sink ) throws XmlPullParserException, MacroExecutionException { - String id = getAttributeValue( parser, ID_ATTRIBUTE ); - //catch link targets - if ( id != null ) - { - sink.anchor( id ); - sink.anchor_(); - } + handleIdAnchor( getAttributeValue( parser, ID_ATTRIBUTE ), sink ); - //If the element introduces a new level of hierarchy, raise the stack if ( HIER_ELEMENTS.contains( parser.getName() ) ) { - //increase the nesting level - level++; - //if this is the root element, handle it as body - if ( level == 0 ) - { - sink.body(); - } - else - { - sink.section( level, null ); - } + handleHierarchyElements( sink ); } - //handle lists else if ( parser.getName().equals( SimplifiedDocbookMarkup.ITEMIZEDLIST_TAG.toString() ) ) { - sink.list(); - //for itemizedlists in variablelists - parent.push( parser.getName() ); + handleItemizedListStart( sink, parser); } else if ( parser.getName().equals( SimplifiedDocbookMarkup.ORDEREDLIST_TAG.toString() ) ) { - //default enumeration style is decimal - int numeration = Sink.NUMBERING_DECIMAL; - String style = getAttributeValue( parser, SimplifiedDocbookMarkup.NUMERATION_ATTRIBUTE ); - if ( style.equals( SimplifiedDocbookMarkup.ARABIC_STYLE ) ) - { - numeration = Sink.NUMBERING_DECIMAL; - } - else if ( style.equals( SimplifiedDocbookMarkup.LOWERALPHA_STYLE ) ) - { - numeration = Sink.NUMBERING_LOWER_ALPHA; - } - else if ( style.equals( SimplifiedDocbookMarkup.LOWERROMAN_STYLE ) ) - { - numeration = Sink.NUMBERING_LOWER_ROMAN; - } - else if ( style.equals( SimplifiedDocbookMarkup.UPPERALPHA_STYLE ) ) - { - numeration = Sink.NUMBERING_UPPER_ALPHA; - } - else if ( style.equals( SimplifiedDocbookMarkup.UPPERROMAN_STYLE ) ) - { - numeration = Sink.NUMBERING_UPPER_ROMAN; - } - sink.numberedList( numeration ); - parent.push( parser.getName() ); + handleOrderedListStart( parser, sink ); } else if ( parser.getName().equals( SimplifiedDocbookMarkup.LISTITEM_TAG.toString() ) ) { - if ( isParent( SimplifiedDocbookMarkup.VARIABLELIST_TAG.toString() ) ) - { - sink.definition(); - } - else if ( isParent( SimplifiedDocbookMarkup.ORDEREDLIST_TAG.toString() ) ) - { - sink.numberedListItem(); - } - else - { - sink.listItem(); - } + handleListItemStart( sink ); } else if ( parser.getName().equals( SimplifiedDocbookMarkup.VARIABLELIST_TAG.toString() ) ) { - sink.definitionList(); - parent.push( parser.getName() ); + handleVariableListStart( sink, parser); } else if ( parser.getName().equals( SimplifiedDocbookMarkup.VARLISTENTRY_TAG.toString() ) ) { @@ -208,32 +152,22 @@ { sink.definedTerm(); } - //handle figures else if ( parser.getName().equals( SimplifiedDocbookMarkup.FIGURE_TAG.toString() ) ) { - sink.figure(); - parent.push( parser.getName() ); + handleFigureStart( sink, parser); } else if ( parser.getName().equals( SimplifiedDocbookMarkup.IMAGEOBJECT_TAG.toString() ) ) { - String fileref = getAttributeValue( parser, "fileref" ); - if ( fileref != null ) - { - sink.figureGraphics( fileref ); - parent.push( parser.getName() ); - } + handleImageObjectStart( parser, sink ); } - else if ( parser.getName().equals( SimplifiedDocbookMarkup.CAPTION_TAG.toString() ) - && isParent( SimplifiedDocbookMarkup.FIGURE_TAG.toString() ) ) + else if ( parser.getName().equals( SimplifiedDocbookMarkup.CAPTION_TAG.toString() ) ) { - sink.figureCaption(); + handleCaptionStart(sink); } else if ( parser.getName().equals( SimplifiedDocbookMarkup.TABLE_TAG.toString() ) || parser.getName().equals( SimplifiedDocbookMarkup.INFORMALTABLE_TAG.toString() ) ) { - sink.table(); - //TODO handle tgroups - parent.push( parser.getName() ); + handleTableStart( sink, parser); } else if ( parser.getName().equals( SimplifiedDocbookMarkup.THEAD_TAG.toString() ) ) { @@ -254,13 +188,6 @@ { sink.tableCell(); } - else - if ( parser.getName().equals( CAPTION_TAG.toString() ) - && ( isParent( SimplifiedDocbookMarkup.INFORMALTABLE_TAG.toString() ) - || isParent( SimplifiedDocbookMarkup.TABLE_TAG.toString() ) ) ) - { - sink.tableCaption(); - } else if ( parser.getName().equals( SimplifiedDocbookMarkup.PARA_TAG.toString() ) ) { sink.paragraph(); @@ -273,15 +200,12 @@ { sink.verbatim( SinkEventAttributeSet.BOXED ); } - - else if ( BOLD_ELEMENTS.contains( parser.getName() ) - && MONOSPACE_ELEMENTS.contains( parser.getName() ) ) + else if ( BOLD_ELEMENTS.contains( parser.getName() ) && MONOSPACE_ELEMENTS.contains( parser.getName() ) ) { sink.bold(); sink.monospaced(); } - else if ( ITALIC_ELEMENTS.contains( parser.getName() ) - && MONOSPACE_ELEMENTS.contains( parser.getName() ) ) + else if ( ITALIC_ELEMENTS.contains( parser.getName() ) && MONOSPACE_ELEMENTS.contains( parser.getName() ) ) { sink.italic(); sink.monospaced(); @@ -294,7 +218,6 @@ && "bold".equals( parser.getAttributeValue( null, "role" ) ) ) { sink.bold(); - isBold = true; } else if ( ITALIC_ELEMENTS.contains( parser.getName() ) ) @@ -305,26 +228,9 @@ { sink.monospaced(); } - else if ( parser.getName().equals( SimplifiedDocbookMarkup.TITLE_TAG.toString() ) ) { - if ( parser.getName().equals( SimplifiedDocbookMarkup.FIGURE_TAG.toString() ) ) - { - sink.figureCaption(); - } - else if ( parser.getName().equals( SimplifiedDocbookMarkup.TABLE_TAG.toString() ) - || parser.getName().equals( SimplifiedDocbookMarkup.INFORMALTABLE_TAG.toString() ) ) - { - sink.tableCaption(); - } - else if ( level == 0 ) - { - sink.title(); - } - else - { - sink.sectionTitle( level, null ); - } + handleTitleStart( parser, sink ); } else if ( parser.getName().equals( SimplifiedDocbookMarkup.CORPAUTHOR_TAG.toString() ) ) { @@ -336,45 +242,19 @@ } else if ( parser.getName().equals( SimplifiedDocbookMarkup.ULINK_TAG.toString() ) ) { - String url = getAttributeValue( parser, SimplifiedDocbookMarkup.URL_ATTRIBUTE ); - if ( url != null ) - { - parent.push( parser.getName() ); - sink.link( url ); - } + handleUlinkStart( parser, sink ); } else if ( parser.getName().equals( SimplifiedDocbookMarkup.EMAIL_TAG.toString() ) ) { - String mailto; - try - { - mailto = parser.nextText(); - } - catch ( IOException e ) - { - throw new XmlPullParserException( "IOException: " + e.getMessage(), parser, e ); - } - sink.link( "mailto:" + mailto ); - sink.link_(); + handleEmailStart(parser, sink); } else if ( parser.getName().equals( SimplifiedDocbookMarkup.LINK_TAG.toString() ) ) { - String linkend = getAttributeValue( parser, SimplifiedDocbookMarkup.LINKEND_ATTRIBUTE ); - if ( linkend != null ) - { - parent.push( parser.getName() ); - sink.link( "#" + linkend ); - } + handleLinkStart( parser, sink ); } else if ( parser.getName().equals( SimplifiedDocbookMarkup.XREF_TAG.toString() ) ) { - String linkend = getAttributeValue( parser, SimplifiedDocbookMarkup.LINKEND_ATTRIBUTE ); - if ( linkend != null ) - { - sink.link( "#" + linkend ); - sink.text( "Link" ); //TODO: determine text of link target - sink.link_(); - } + handleXrefStart( parser, sink ); } else { @@ -402,7 +282,6 @@ //decrease the nesting level level--; } - //handle lists else if ( parser.getName().equals( SimplifiedDocbookMarkup.ITEMIZEDLIST_TAG.toString() ) ) { sink.list_(); @@ -440,16 +319,14 @@ { sink.definedTerm_(); } - //handle figures else if ( parser.getName().equals( SimplifiedDocbookMarkup.FIGURE_TAG.toString() ) ) { sink.figure_(); parent.pop(); } - else if ( parser.getName().equals( SimplifiedDocbookMarkup.CAPTION_TAG.toString() ) - && isParent( SimplifiedDocbookMarkup.FIGURE_TAG.toString() ) ) + else if ( parser.getName().equals( SimplifiedDocbookMarkup.CAPTION_TAG.toString() ) ) { - sink.figureCaption_(); + handleCaptionEnd(sink); } else if ( parser.getName().equals( SimplifiedDocbookMarkup.TABLE_TAG.toString() ) || parser.getName().equals( SimplifiedDocbookMarkup.INFORMALTABLE_TAG.toString() ) ) @@ -477,13 +354,6 @@ { sink.tableCell_(); } - else - if ( parser.getName().equals( SimplifiedDocbookMarkup.CAPTION_TAG.toString() ) - && ( isParent( SimplifiedDocbookMarkup.INFORMALTABLE_TAG.toString() ) - || isParent( SimplifiedDocbookMarkup.TABLE_TAG.toString() ) ) ) - { - sink.tableCaption_(); - } else if ( parser.getName().equals( SimplifiedDocbookMarkup.PARA_TAG.toString() ) ) { sink.paragraph_(); @@ -530,7 +400,6 @@ { sink.monospaced_(); } - else if ( parser.getName().equals( SimplifiedDocbookMarkup.TITLE_TAG.toString() ) ) { if ( parser.getName().equals( SimplifiedDocbookMarkup.FIGURE_TAG.toString() ) ) @@ -625,6 +494,214 @@ return null; } + private void handleCaptionStart( Sink sink ) + { + if ( isParent( SimplifiedDocbookMarkup.FIGURE_TAG.toString() ) ) + { + sink.figureCaption(); + } + else if ( isParent( SimplifiedDocbookMarkup.INFORMALTABLE_TAG.toString() ) + || isParent( SimplifiedDocbookMarkup.TABLE_TAG.toString() ) ) + { + sink.tableCaption(); + } + } + + private void handleCaptionEnd( Sink sink ) + { + if ( isParent( SimplifiedDocbookMarkup.FIGURE_TAG.toString() ) ) + { + sink.figureCaption_(); + } + else if ( isParent( SimplifiedDocbookMarkup.INFORMALTABLE_TAG.toString() ) + || isParent( SimplifiedDocbookMarkup.TABLE_TAG.toString() ) ) + { + sink.tableCaption_(); + } + } + + private void handleEmailStart( XmlPullParser parser, Sink sink ) + throws XmlPullParserException + { + String mailto; + try + { + mailto = parser.nextText(); + } catch ( IOException e ) + { + throw new XmlPullParserException( "IOException: " + e.getMessage(), parser, e ); + } + sink.link( "mailto:" + mailto ); + sink.link_(); + } + + private void handleFigureStart( Sink sink, XmlPullParser parser ) + { + sink.figure(); + parent.push( parser.getName() ); + } + + //If the element introduces a new level of hierarchy, raise the stack + private void handleHierarchyElements( Sink sink ) + { + //increase the nesting level + level++; + + //if this is the root element, handle it as body + if ( level == 0 ) + { + sink.body(); + } + else + { + sink.section( level, null ); + } + } + + private void handleIdAnchor( String id, Sink sink ) + { + //catch link targets + if ( id != null ) + { + sink.anchor( id ); + sink.anchor_(); + } + } + + private void handleImageObjectStart( XmlPullParser parser, Sink sink ) + { + String fileref = getAttributeValue( parser, "fileref" ); + + if ( fileref != null ) + { + sink.figureGraphics( fileref ); + parent.push( parser.getName() ); + } + } + + private void handleItemizedListStart( Sink sink, XmlPullParser parser ) + { + sink.list(); + //for itemizedlists in variablelists + parent.push( parser.getName() ); + } + + private void handleLinkStart( XmlPullParser parser, Sink sink ) + { + String linkend = getAttributeValue( parser, + SimplifiedDocbookMarkup.LINKEND_ATTRIBUTE ); + if ( linkend != null ) + { + parent.push( parser.getName() ); + sink.link( "#" + linkend ); + } + } + + private void handleListItemStart( Sink sink ) + { + if ( isParent( SimplifiedDocbookMarkup.VARIABLELIST_TAG.toString() ) ) + { + sink.definition(); + } + else if ( isParent( SimplifiedDocbookMarkup.ORDEREDLIST_TAG.toString() ) ) + { + sink.numberedListItem(); + } + else + { + sink.listItem(); + } + } + + private void handleOrderedListStart( XmlPullParser parser, Sink sink ) + { + //default enumeration style is decimal + int numeration = Sink.NUMBERING_DECIMAL; + + String style = getAttributeValue( parser, SimplifiedDocbookMarkup.NUMERATION_ATTRIBUTE ); + + if ( style.equals( SimplifiedDocbookMarkup.ARABIC_STYLE ) ) + { + numeration = Sink.NUMBERING_DECIMAL; + } + else if ( style.equals( SimplifiedDocbookMarkup.LOWERALPHA_STYLE ) ) + { + numeration = Sink.NUMBERING_LOWER_ALPHA; + } + else if ( style.equals( SimplifiedDocbookMarkup.LOWERROMAN_STYLE ) ) + { + numeration = Sink.NUMBERING_LOWER_ROMAN; + } + else if ( style.equals( SimplifiedDocbookMarkup.UPPERALPHA_STYLE ) ) + { + numeration = Sink.NUMBERING_UPPER_ALPHA; + } + else if ( style.equals( SimplifiedDocbookMarkup.UPPERROMAN_STYLE ) ) + { + numeration = Sink.NUMBERING_UPPER_ROMAN; + } + + sink.numberedList( numeration ); + parent.push( parser.getName() ); + } + + private void handleTableStart( Sink sink, XmlPullParser parser ) + { + sink.table(); + //TODO handle tgroups + parent.push( parser.getName() ); + } + + private void handleTitleStart( XmlPullParser parser, Sink sink ) + { + if ( parser.getName().equals( SimplifiedDocbookMarkup.FIGURE_TAG.toString() ) ) + { + sink.figureCaption(); + } + else if ( parser.getName().equals( SimplifiedDocbookMarkup.TABLE_TAG.toString() ) + || parser.getName().equals( SimplifiedDocbookMarkup.INFORMALTABLE_TAG.toString() ) ) + { + sink.tableCaption(); + } + else if ( level == 0 ) + { + sink.title(); + } + else + { + sink.sectionTitle( level, null ); + } + } + + private void handleUlinkStart( XmlPullParser parser, Sink sink ) + { + String url = getAttributeValue( parser, + SimplifiedDocbookMarkup.URL_ATTRIBUTE ); + if ( url != null ) + { + parent.push( parser.getName() ); + sink.link( url ); + } + } + + private void handleVariableListStart( Sink sink, XmlPullParser parser ) + { + sink.definitionList(); + parent.push( parser.getName() ); + } + + private void handleXrefStart( XmlPullParser parser, Sink sink ) + { + String linkend = getAttributeValue( parser, + SimplifiedDocbookMarkup.LINKEND_ATTRIBUTE ); + if ( linkend != null ) + { + sink.link( "#" + linkend ); + sink.text( "Link" ); //TODO: determine text of link target + sink.link_(); + } + } + /** * Determines if the given element is a parent element. *