Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * #%L
   * JRst :: Api
   * 
   * $Id: DocUtilsVisitor.java 608 2011-08-18 09:25:35Z tchemit $
   * $HeadURL: http://svn.nuiton.org/svn/jrst/tags/jrst-1.4/jrst/src/main/java/org/nuiton/jrst/convertisor/DocUtilsVisitor.java $
   * %%
   * Copyright (C) 2004 - 2010 CodeLutin
   * %%
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Lesser General Public License as 
  * published by the Free Software Foundation, either version 3 of the 
  * License, or (at your option) any later version.
  * 
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Lesser Public License for more details.
  * 
  * You should have received a copy of the GNU General Lesser Public 
  * License along with this program.  If not, see
  * <http://www.gnu.org/licenses/lgpl-3.0.html>.
  * #L%
  */
 package org.nuiton.jrst.convertisor;
 
 import java.util.List;

Author(s):
letellier
 
 public abstract class DocUtilsVisitor extends VisitorSupport {
 
     public static final String EMPTY_STRING = "";
     public static final String LINE_SEPARATOR = "\n";
     public static final String SPACE = " ";
    
to use log facility, just put in your code: log.info(\"...\");
 
     private static Log log = LogFactory.getLog(DocUtilsVisitor.class);
     // Enregistre les elements parse pour ne jamais les revisiter
     protected List<ElementcachedElements;
     // le resultat de la visite
     protected StringBuilder rstResult;
 
     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     // Root Element
     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     public abstract String composeDocument(Element e);
 
     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     // Title Elements
     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     public abstract String composeTitle(Element e);
 
     public abstract String composeSubTitle(Element e);
 
     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     // Bibliographic Elements
     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     public abstract String composeDocInfo(Element e);
 
     // public abstract String compose
     public abstract String composeAutor(Element e);
 
     public abstract String composeAutors(Element e);
 
     public abstract String composeOrganisation(Element e);
 
     public abstract String composeAddress(Element e);
 
     public abstract String composeContact(Element e);
 
     public abstract String composeVersion(Element e);
 
     public abstract String composeResvision(Element e);
 
     public abstract String composeStatus(Element e);
 
     public abstract String composeDate(Element e);
 
     public abstract String composeCopyright(Element e);
 
     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     // Decoration Elements
     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     public abstract String composeDecoration(Element e);
 
     public abstract String composeHeader(Element e);
 
     public abstract String composeFooter(Element e);
 
     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     // Structural Elements
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    public abstract String composeSection(Element e);
    public abstract String composeTopic(Element e);
    public abstract String composeSideBar(Element e);
    public abstract String composeTransition(Element e);
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // Body Elements
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    public abstract String composeParagraph(Element e);
    public abstract String composeCompound(Element e);
    public abstract String composeContainer(Element e);
    public abstract String composeBulletList(Element e);
    public abstract String composeEnumeratedList(Element e);
    public abstract String composeListItem(Element e);
    public abstract String composeDefinitionList(Element e);
    public abstract String composeDefinitionListItem(Element e);
    public abstract String composeTerm(Element e);
    public abstract String composeClassifier(Element e);
    public abstract String composeDefinition(Element e);
    public abstract String composeFieldList(Element e);
    public abstract String composeField(Element e);
    public abstract String composeFieldName(Element e);
    public abstract String composeFieldBody(Element e);
    public abstract String composeOptionList(Element e);
    public abstract String composeOptionListItem(Element e);
    public abstract String composeOptionGroup(Element e);
    public abstract String composeOption(Element e);
    public abstract String composeOptionString(Element e);
    public abstract String composeOptionArgument(Element e);
    public abstract String composeDescription(Element e);
    public abstract String composeLiteralBlock(Element e);
    public abstract String composeLineBlock(Element e);
    public abstract String composeLine(Element e);
    public abstract String composeBlockQuote(Element e);
    public abstract String composeAttribution(Element e);
    public abstract String composeDocTestBlock(Element e);
    public abstract String composeAttention(Element e);
    public abstract String composeCaution(Element e);
    public abstract String composeDanger(Element e);
    public abstract String composeError(Element e);
    public abstract String composeHint(Element e);
    public abstract String composeImportant(Element e);
    public abstract String composeNote(Element e);
    public abstract String composeTip(Element e);
    public abstract String composeWarning(Element e);
    public abstract String composeAdmonition(Element e);
    public abstract String composeFootnote(Element e);
    public abstract String composeCitation(Element e);
    public abstract String composeLabel(Element e);
    public abstract String composeRubric(Element e);
    public abstract String composeTarget(Element e);
    public abstract String composeSubstitutionDefinition(Element e);
    public abstract String composeComment(Element e);
    public abstract String composePending(Element e);
    public abstract String composeFigure(Element e);
    public abstract String composeImage(Element e);
    public abstract String composeCaption(Element e);
    public abstract String composeLegend(Element e);
    public abstract String composeSystemMessage(Element e);
    public abstract String composeRaw(Element e);
    // table
    public abstract String composeTable(Element e);
    public abstract String composeTgroup(Element e);
    public abstract String composeColspec(Element e);
    public abstract String composeThead(Element e);
    public abstract String composeTbody(Element e);
    public abstract String composeRow(Element e);
    public abstract String composeEntry(Element e);
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // Inline Elements
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    public abstract String composeEmphasis(Element e);
    public abstract String composeStrong(Element e);
    public abstract String composeLiteral(Element e);
    public abstract String composeReference(Element e);
    public abstract String composeFootnoteReference(Element e);
    public abstract String composeCitationReference(Element e);
    public abstract String composeSubstitutionReference(Element e);
    public abstract String composeTitleReference(Element e);
    public abstract String composeAbbreviation(Element e);
    public abstract String composeAcronyme(Element e);
    public abstract String composeSuperscipt(Element e);
    public abstract String composeSubscript(Element e);
    public abstract String composeInline(Element e);
    public abstract String composeProblematic(Element e);
    public abstract String composeGenerated(Element e);
    public DocUtilsVisitor() {
         = new ArrayList<Element>();
         = new StringBuilder();
    }
    @Override
    public void visit(Element e) {
        if (!.contains(e)) {
            .debug("entre element " + e.getName());
            addCachedElement(e);
            // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            // Root Element
            // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            if (elementEquals(.e)) {
                appendResult(composeDocument(e));
            } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            // Title Elements
            // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            else if (elementEquals(.e)) {
                appendResult(composeTitle(e));
            } else if (elementEquals(.e)) {
                appendResult(composeSubTitle(e));
            } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            // Bibliographic Elements
            // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            else if (elementEquals(.e)) {
                appendResult(composeDocInfo(e));
                // } else if (elementEquals(ReStructuredText.INFO,e)) { appendResult(composeInfo(e));
            } else if (elementEquals(.e)) {
                appendResult(composeAutor(e));
            } else if (elementEquals(.e)) {
                appendResult(composeAutors(e));
            } else if (elementEquals(.e)) {
                appendResult(composeOrganisation(e));
            } else if (elementEquals(.e)) {
                appendResult(composeAddress(e));
            } else if (elementEquals(.e)) {
                appendResult(composeContact(e));
            } else if (elementEquals(.e)) {
                appendResult(composeVersion(e));
            } else if (elementEquals(.e)) {
                appendResult(composeResvision(e));
            } else if (elementEquals(.e)) {
                appendResult(composeStatus(e));
            } else if (elementEquals(.e)) {
                appendResult(composeDate(e));
            } else if (elementEquals(.e)) {
                appendResult(composeCopyright(e));
            } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            // Decoration Elements
            // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            else if (elementEquals(.e)) {
                appendResult(composeDecoration(e));
            } else if (elementEquals(.e)) {
                appendResult(composeHeader(e));
            } else if (elementEquals(.e)) {
                appendResult(composeFooter(e));
            } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            // Structural Elements
            // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            else if (elementEquals(.e)) {
                appendResult(composeSection(e));
            } else if (elementEquals(.e)) {
                appendResult(composeTopic(e));
            } else if (elementEquals(.e)) {
                appendResult(composeSideBar(e));
            } else if (elementEquals(.e)) {
                appendResult(composeTransition(e));
            } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            // Body Elements
            // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            else if (elementEquals(.e)) {
                appendResult(composeParagraph(e));
            } else if (elementEquals(.e)) {
                appendResult(composeCompound(e));
            } else if (elementEquals(.e)) {
                appendResult(composeContainer(e));
            } else if (elementEquals(.e)) {
                appendResult(composeBulletList(e));
            } else if (elementEquals(.e)) {
                appendResult(composeEnumeratedList(e));
            } else if (elementEquals(.e)) {
                appendResult(composeListItem(e));
            } else if (elementEquals(.e)) {
                appendResult(composeDefinitionList(e));
            } else if (elementEquals(.e)) {
                appendResult(composeDefinitionListItem(e));
            } else if (elementEquals(.e)) {
                appendResult(composeTerm(e));
            } else if (elementEquals(.e)) {
                appendResult(composeClassifier(e));
            } else if (elementEquals(.e)) {
                appendResult(composeDefinition(e));
            } else if (elementEquals(.e)) {
                appendResult(composeFieldList(e));
            } else if (elementEquals(.e)) {
                appendResult(composeField(e));
            } else if (elementEquals(.e)) {
                appendResult(composeFieldName(e));
            } else if (elementEquals(.e)) {
                appendResult(composeFieldBody(e));
            } else if (elementEquals(.e)) {
                appendResult(composeOptionList(e));
            } else if (elementEquals(.e)) {
                appendResult(composeOptionListItem(e));
            } else if (elementEquals(.e)) {
                appendResult(composeOptionGroup(e));
            } else if (elementEquals(.e)) {
                appendResult(composeOption(e));
            } else if (elementEquals(.e)) {
                appendResult(composeOptionString(e));
            } else if (elementEquals(.e)) {
                appendResult(composeOptionArgument(e));
            } else if (elementEquals(.e)) {
                appendResult(composeDescription(e));
            } else if (elementEquals(.e)) {
                appendResult(composeLiteralBlock(e));
            } else if (elementEquals(.e)) {
                appendResult(composeLineBlock(e));
            } else if (elementEquals(.e)) {
                appendResult(composeLine(e));
            } else if (elementEquals(.e)) {
                appendResult(composeBlockQuote(e));
            } else if (elementEquals(.e)) {
                appendResult(composeAttribution(e));
            } else if (elementEquals(.e)) {
                appendResult(composeDocTestBlock(e));
            } else if (elementEquals(.e)) {
                appendResult(composeAttention(e));
            } else if (elementEquals(.e)) {
                appendResult(composeCaution(e));
            } else if (elementEquals(.e)) {
                appendResult(composeDanger(e));
            } else if (elementEquals(.e)) {
                appendResult(composeError(e));
            } else if (elementEquals(.e)) {
                appendResult(composeHint(e));
            } else if (elementEquals(.e)) {
                appendResult(composeImportant(e));
            } else if (elementEquals(.e)) {
                appendResult(composeNote(e));
            } else if (elementEquals(.e)) {
                appendResult(composeTip(e));
            } else if (elementEquals(.e)) {
                appendResult(composeWarning(e));
            } else if (elementEquals(.e)) {
                appendResult(composeAdmonition(e));
            } else if (elementEquals(.e)) {
                appendResult(composeFootnote(e));
            } else if (elementEquals(.e)) {
                appendResult(composeCitation(e));
            } else if (elementEquals(.e)) {
                appendResult(composeLabel(e));
            } else if (elementEquals(.e)) {
                appendResult(composeRubric(e));
            } else if (elementEquals(.e)) {
                appendResult(composeTarget(e));
            } else if (elementEquals(.e)) {
                appendResult(composeSubstitutionDefinition(e));
            } else if (elementEquals(.e)) {
                appendResult(composeComment(e));
            } else if (elementEquals(.e)) {
                appendResult(composePending(e));
            } else if (elementEquals(.e)) {
                appendResult(composeFigure(e));
            } else if (elementEquals(.e)) {
                appendResult(composeImage(e));
            } else if (elementEquals(.e)) {
                appendResult(composeCaption(e));
            } else if (elementEquals(.e)) {
                appendResult(composeLegend(e));
            } else if (elementEquals(.e)) {
                appendResult(composeSystemMessage(e));
            } else if (elementEquals(.e)) {
                appendResult(composeRaw(e));
                // table
            } else if (elementEquals(.e)) {
                appendResult(composeTable(e));
            } else if (elementEquals(.e)) {
                appendResult(composeTgroup(e));
            } else if (elementEquals(.e)) {
                appendResult(composeColspec(e));
            } else if (elementEquals(.e)) {
                appendResult(composeThead(e));
            } else if (elementEquals(.e)) {
                appendResult(composeTbody(e));
            } else if (elementEquals(.e)) {
                appendResult(composeRow(e));
            } else if (elementEquals(.e)) {
                appendResult(composeEntry(e));
            } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            // Inline Elements
            // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            else if (elementEquals(.e)) {
                appendResult(composeEmphasis(e));
            } else if (elementEquals(.e)) {
                appendResult(composeStrong(e));
            } else if (elementEquals(.e)) {
                appendResult(composeLiteral(e));
            } else if (elementEquals(.e)) {
                appendResult(composeReference(e));
            } else if (elementEquals(.e)) {
                appendResult(composeFootnoteReference(e));
            } else if (elementEquals(.e)) {
                appendResult(composeCitationReference(e));
            } else if (elementEquals(.e)) {
                appendResult(composeSubstitutionReference(e));
            } else if (elementEquals(.e)) {
                appendResult(composeTitleReference(e));
            } else if (elementEquals(.e)) {
                appendResult(composeAbbreviation(e));
            } else if (elementEquals(.e)) {
                appendResult(composeAcronyme(e));
            } else if (elementEquals(.e)) {
                appendResult(composeSuperscipt(e));
            } else if (elementEquals(.e)) {
                appendResult(composeSubscript(e));
            } else if (elementEquals(.e)) {
                appendResult(composeInline(e));
            } else if (elementEquals(.e)) {
                appendResult(composeProblematic(e));
            } else if (elementEquals(.e)) {
                appendResult(composeGenerated(e));
            }
        }
    }
    public String parseDocument(Element el) {
        try {
            if (.isDebugEnabled()) {
                .debug("This element : " + el.getName());
            }
            // Creation dune nouvelle instance du visitor utilise            
            DocUtilsVisitor visitor = getClass().newInstance();
            // Traitement recursif (pour parser un document dans un autre)
            try {
                el.accept(visitor);
                String result = visitor.getResult();
                if (.isDebugEnabled()) {
                    .debug("document parsing result:\n" + result);
                }
                return result;
            } finally {
                // Recuperation des elements parcourus
                addCachedElements(visitor.getCachedElements());
                // nettoyage du visiteur temporaire
                visitor.clear();
            }
        } catch (Exception ex) {
            if (.isErrorEnabled()) {
                .error("Cant compose document for reason " + ex.getMessage(), ex);
            }
            //FIXME : TC-20090816 should deal better the exception ?
            return ;
        }
    }
    public String getResult() {
        return .toString();
    }
    public void clear() {
        .clear();
         = null;
    }
    
    protected void appendResult(String result) {
        .append(result);
    }
    protected boolean elementEquals(String nameElement e) {
        return e.getName().equals(name);
    }
    protected List<ElementgetCachedElements() {
        return ;
    }
    // Permet de ne jamais repasser sur ce noeud
    protected void addCachedElement(Element e) {
        .add(e);
    }
    protected void addCachedElements(List<Elementelements) {
        .addAll(elements);
    }
    protected String indent(String toIndentint l) {
        String prefix = ;
        for (int i = 0; i < li++) {
            prefix += ;
        }
        StringBuilder buffer = new StringBuilder();
        for (String s : toIndent.split()) {
            buffer.append(prefix).append(s).append();
        }
        return buffer.toString();
    }
New to GrepCode? Check out our FAQ X