001    /**
002     * Copyright (c) 2000-2013 Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portal.parsers.creole.visitor.impl;
016    
017    import com.liferay.portal.parsers.creole.ast.ASTNode;
018    import com.liferay.portal.parsers.creole.ast.BoldTextNode;
019    import com.liferay.portal.parsers.creole.ast.CollectionNode;
020    import com.liferay.portal.parsers.creole.ast.ForcedEndOfLineNode;
021    import com.liferay.portal.parsers.creole.ast.FormattedTextNode;
022    import com.liferay.portal.parsers.creole.ast.HeadingNode;
023    import com.liferay.portal.parsers.creole.ast.HorizontalNode;
024    import com.liferay.portal.parsers.creole.ast.ImageNode;
025    import com.liferay.portal.parsers.creole.ast.ItalicTextNode;
026    import com.liferay.portal.parsers.creole.ast.LineNode;
027    import com.liferay.portal.parsers.creole.ast.ListNode;
028    import com.liferay.portal.parsers.creole.ast.NoWikiSectionNode;
029    import com.liferay.portal.parsers.creole.ast.OrderedListItemNode;
030    import com.liferay.portal.parsers.creole.ast.OrderedListNode;
031    import com.liferay.portal.parsers.creole.ast.ParagraphNode;
032    import com.liferay.portal.parsers.creole.ast.ScapedNode;
033    import com.liferay.portal.parsers.creole.ast.UnformattedTextNode;
034    import com.liferay.portal.parsers.creole.ast.UnorderedListItemNode;
035    import com.liferay.portal.parsers.creole.ast.UnorderedListNode;
036    import com.liferay.portal.parsers.creole.ast.WikiPageNode;
037    import com.liferay.portal.parsers.creole.ast.extension.TableOfContentsNode;
038    import com.liferay.portal.parsers.creole.ast.link.LinkNode;
039    import com.liferay.portal.parsers.creole.ast.table.TableDataNode;
040    import com.liferay.portal.parsers.creole.ast.table.TableHeaderNode;
041    import com.liferay.portal.parsers.creole.ast.table.TableNode;
042    import com.liferay.portal.parsers.creole.visitor.ASTVisitor;
043    
044    import java.util.List;
045    
046    /**
047     * @author Miguel Pastor
048     */
049    public abstract class BaseASTVisitor implements ASTVisitor {
050    
051            @Override
052            public void visit(BoldTextNode boldTextNode) {
053                    if (boldTextNode.getChildASTNodesCount() > 0) {
054                            traverse(boldTextNode.getChildASTNodes());
055                    }
056            }
057    
058            @Override
059            public void visit(CollectionNode collectionNode) {
060                    for (ASTNode curNode : collectionNode.getASTNodes()) {
061                            curNode.accept(this);
062                    }
063            }
064    
065            @Override
066            public void visit(ForcedEndOfLineNode forcedEndOfLineNode) {
067            }
068    
069            @Override
070            public void visit(FormattedTextNode formattedTextNode) {
071                    if (formattedTextNode.getChildASTNodesCount() > 0) {
072                            traverse(formattedTextNode.getChildASTNodes());
073                    }
074            }
075    
076            @Override
077            public void visit(HeadingNode headingNode) {
078                    traverse(headingNode.getChildASTNodes());
079            }
080    
081            @Override
082            public void visit(HorizontalNode horizontalNode) {
083            }
084    
085            @Override
086            public void visit(ImageNode imageNode) {
087                    if (imageNode.hasAltCollectionNode()) {
088                            traverse(imageNode.getAltNode().getASTNodes());
089                    }
090            }
091    
092            @Override
093            public void visit(ItalicTextNode italicTextNode) {
094                    if (italicTextNode.getChildASTNodesCount() > 0) {
095                            traverse(italicTextNode.getChildASTNodes());
096                    }
097            }
098    
099            @Override
100            public void visit(LineNode lineNode) {
101                    traverse(lineNode.getChildASTNodes());
102            }
103    
104            @Override
105            public void visit(LinkNode linkNode) {
106                    if (linkNode.hasAltCollectionNode()) {
107                            traverse(linkNode.getAltCollectionNode().getASTNodes());
108                    }
109            }
110    
111            @Override
112            public void visit(ListNode listNode) {
113                    traverse(listNode.getChildASTNodes());
114            }
115    
116            @Override
117            public void visit(NoWikiSectionNode noWikiSectionNode) {
118            }
119    
120            @Override
121            public void visit(OrderedListItemNode orderedListItemNode) {
122                    traverse(orderedListItemNode.getChildASTNodes());
123            }
124    
125            @Override
126            public void visit(OrderedListNode orderedListNode) {
127                    traverse(orderedListNode.getChildASTNodes());
128            }
129    
130            @Override
131            public void visit(ParagraphNode paragraphNode) {
132                    traverse(paragraphNode.getChildASTNodes());
133            }
134    
135            @Override
136            public void visit(ScapedNode scapedNode) {
137            }
138    
139            @Override
140            public void visit(TableDataNode tableDataNode) {
141                    traverse(tableDataNode.getChildASTNodes());
142            }
143    
144            @Override
145            public void visit(TableHeaderNode tableHeaderNode) {
146                    traverse(tableHeaderNode.getChildASTNodes());
147            }
148    
149            @Override
150            public void visit(TableNode tableNode) {
151                    traverse(tableNode.getChildASTNodes());
152            }
153    
154            @Override
155            public void visit(TableOfContentsNode tableOfContentsNode) {
156            }
157    
158            @Override
159            public void visit(UnformattedTextNode unformattedTextNode) {
160                    if (unformattedTextNode.getChildASTNodesCount() > 0) {
161                            traverse(unformattedTextNode.getChildASTNodes());
162                    }
163            }
164    
165            @Override
166            public void visit(UnorderedListItemNode unorderedListItemNode) {
167                    traverse(unorderedListItemNode.getChildASTNodes());
168            }
169    
170            @Override
171            public void visit(UnorderedListNode unorderedListNode) {
172                    traverse(unorderedListNode.getChildASTNodes());
173            }
174    
175            @Override
176            public void visit(WikiPageNode wikiPageNode) {
177                    traverse(wikiPageNode.getChildASTNodes());
178            }
179    
180            protected void traverse(List<ASTNode> astNodes) {
181                    if (astNodes != null) {
182                            for (ASTNode node : astNodes) {
183                                    node.accept(this);
184                            }
185                    }
186            }
187    
188    }