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.link.interwiki.C2InterwikiLinkNode;
040    import com.liferay.portal.parsers.creole.ast.link.interwiki.DokuWikiInterwikiLinkNode;
041    import com.liferay.portal.parsers.creole.ast.link.interwiki.FlickrInterwikiLinkNode;
042    import com.liferay.portal.parsers.creole.ast.link.interwiki.GoogleInterwikiLinkNode;
043    import com.liferay.portal.parsers.creole.ast.link.interwiki.JSPWikiInterwikiLinkNode;
044    import com.liferay.portal.parsers.creole.ast.link.interwiki.MeatballInterwikiLinkNode;
045    import com.liferay.portal.parsers.creole.ast.link.interwiki.MediaWikiInterwikiLinkNode;
046    import com.liferay.portal.parsers.creole.ast.link.interwiki.MoinMoinInterwikiLinkNode;
047    import com.liferay.portal.parsers.creole.ast.link.interwiki.OddmuseInterwikiLinkNode;
048    import com.liferay.portal.parsers.creole.ast.link.interwiki.OhanaInterwikiLinkNode;
049    import com.liferay.portal.parsers.creole.ast.link.interwiki.PmWikiInterwikiLinkNode;
050    import com.liferay.portal.parsers.creole.ast.link.interwiki.PukiWikiInterwikiLinkNode;
051    import com.liferay.portal.parsers.creole.ast.link.interwiki.PurpleWikiInterwikiLinkNode;
052    import com.liferay.portal.parsers.creole.ast.link.interwiki.RadeoxInterwikiLinkNode;
053    import com.liferay.portal.parsers.creole.ast.link.interwiki.SnipSnapInterwikiLinkNode;
054    import com.liferay.portal.parsers.creole.ast.link.interwiki.TWikiInterwikiLinkNode;
055    import com.liferay.portal.parsers.creole.ast.link.interwiki.TiddlyWikiInterwikiLinkNode;
056    import com.liferay.portal.parsers.creole.ast.link.interwiki.UsemodInterwikiLinkNode;
057    import com.liferay.portal.parsers.creole.ast.link.interwiki.WikipediaInterwikiLinkNode;
058    import com.liferay.portal.parsers.creole.ast.link.interwiki.XWikiInterwikiLinkNode;
059    import com.liferay.portal.parsers.creole.ast.table.TableDataNode;
060    import com.liferay.portal.parsers.creole.ast.table.TableHeaderNode;
061    import com.liferay.portal.parsers.creole.ast.table.TableNode;
062    import com.liferay.portal.parsers.creole.visitor.ASTVisitor;
063    
064    import java.util.List;
065    
066    /**
067     * @author Miguel Pastor
068     */
069    public abstract class BaseASTVisitor implements ASTVisitor {
070    
071            @Override
072            public void visit(BoldTextNode boldTextNode) {
073                    if (boldTextNode.getChildASTNodesCount() > 0) {
074                            traverse(boldTextNode.getChildASTNodes());
075                    }
076            }
077    
078            @Override
079            public void visit(C2InterwikiLinkNode c2InterwikiLinkNode) {
080            }
081    
082            @Override
083            public void visit(CollectionNode collectionNode) {
084                    for (ASTNode curNode : collectionNode.getASTNodes()) {
085                            curNode.accept(this);
086                    }
087            }
088    
089            @Override
090            public void visit(DokuWikiInterwikiLinkNode dokuWikiInterwikiLinkNode) {
091            }
092    
093            @Override
094            public void visit(FlickrInterwikiLinkNode flickrInterwikiLinkNode) {
095            }
096    
097            @Override
098            public void visit(ForcedEndOfLineNode forcedEndOfLineNode) {
099            }
100    
101            @Override
102            public void visit(FormattedTextNode formattedTextNode) {
103                    if (formattedTextNode.getChildASTNodesCount() > 0) {
104                            traverse(formattedTextNode.getChildASTNodes());
105                    }
106            }
107    
108            @Override
109            public void visit(GoogleInterwikiLinkNode googleInterwikiLinkNode) {
110            }
111    
112            @Override
113            public void visit(HeadingNode headingNode) {
114                    traverse(headingNode.getChildASTNodes());
115            }
116    
117            @Override
118            public void visit(HorizontalNode horizontalNode) {
119            }
120    
121            @Override
122            public void visit(ImageNode imageNode) {
123                    if (imageNode.hasAltCollectionNode()) {
124                            traverse(imageNode.getAltNode().getASTNodes());
125                    }
126            }
127    
128            @Override
129            public void visit(ItalicTextNode italicTextNode) {
130                    if (italicTextNode.getChildASTNodesCount() > 0) {
131                            traverse(italicTextNode.getChildASTNodes());
132                    }
133            }
134    
135            @Override
136            public void visit(JSPWikiInterwikiLinkNode jspWikiInterwikiLinkNode) {
137            }
138    
139            @Override
140            public void visit(LineNode lineNode) {
141                    traverse(lineNode.getChildASTNodes());
142            }
143    
144            @Override
145            public void visit(LinkNode linkNode) {
146                    if (linkNode.hasAltCollectionNode()) {
147                            traverse(linkNode.getAltCollectionNode().getASTNodes());
148                    }
149            }
150    
151            @Override
152            public void visit(ListNode listNode) {
153                    traverse(listNode.getChildASTNodes());
154            }
155    
156            @Override
157            public void visit(MeatballInterwikiLinkNode meatballInterwikiLinkNode) {
158            }
159    
160            @Override
161            public void visit(MediaWikiInterwikiLinkNode mediaWikiInterwikiLinkNode) {
162            }
163    
164            @Override
165            public void visit(MoinMoinInterwikiLinkNode moinMoinInterwikiLinkNode) {
166            }
167    
168            @Override
169            public void visit(NoWikiSectionNode noWikiSectionNode) {
170            }
171    
172            @Override
173            public void visit(OddmuseInterwikiLinkNode oddmuseInterwikiLinkNode) {
174            }
175    
176            @Override
177            public void visit(OhanaInterwikiLinkNode ohanaInterwikiLinkNode) {
178            }
179    
180            @Override
181            public void visit(OrderedListItemNode orderedListItemNode) {
182                    traverse(orderedListItemNode.getChildASTNodes());
183            }
184    
185            @Override
186            public void visit(OrderedListNode orderedListNode) {
187                    traverse(orderedListNode.getChildASTNodes());
188            }
189    
190            @Override
191            public void visit(ParagraphNode paragraphNode) {
192                    traverse(paragraphNode.getChildASTNodes());
193            }
194    
195            @Override
196            public void visit(PmWikiInterwikiLinkNode pmWikiInterwikiLinkNode) {
197            }
198    
199            @Override
200            public void visit(PukiWikiInterwikiLinkNode pukiWikiInterwikiLinkNode) {
201            }
202    
203            @Override
204            public void visit(PurpleWikiInterwikiLinkNode purpleWikiInterwikiLinkNode) {
205            }
206    
207            @Override
208            public void visit(RadeoxInterwikiLinkNode radeoxInterwikiLinkNode) {
209            }
210    
211            @Override
212            public void visit(ScapedNode scapedNode) {
213            }
214    
215            @Override
216            public void visit(SnipSnapInterwikiLinkNode snipSnapInterwikiLinkNode) {
217            }
218    
219            @Override
220            public void visit(TableDataNode tableDataNode) {
221                    traverse(tableDataNode.getChildASTNodes());
222            }
223    
224            @Override
225            public void visit(TableHeaderNode tableHeaderNode) {
226                    traverse(tableHeaderNode.getChildASTNodes());
227            }
228    
229            @Override
230            public void visit(TableNode tableNode) {
231                    traverse(tableNode.getChildASTNodes());
232            }
233    
234            @Override
235            public void visit(TableOfContentsNode tableOfContentsNode) {
236            }
237    
238            @Override
239            public void visit(TiddlyWikiInterwikiLinkNode tiddlyWikiInterwikiLinkNode) {
240            }
241    
242            @Override
243            public void visit(TWikiInterwikiLinkNode tWikiInterwikiLinkNode) {
244            }
245    
246            @Override
247            public void visit(UnformattedTextNode unformattedTextNode) {
248                    if (unformattedTextNode.getChildASTNodesCount() > 0) {
249                            traverse(unformattedTextNode.getChildASTNodes());
250                    }
251            }
252    
253            @Override
254            public void visit(UnorderedListItemNode unorderedListItemNode) {
255                    traverse(unorderedListItemNode.getChildASTNodes());
256            }
257    
258            @Override
259            public void visit(UnorderedListNode unorderedListNode) {
260                    traverse(unorderedListNode.getChildASTNodes());
261            }
262    
263            @Override
264            public void visit(UsemodInterwikiLinkNode usemodInterwikiLinkNode) {
265            }
266    
267            @Override
268            public void visit(WikiPageNode wikiPageNode) {
269                    traverse(wikiPageNode.getChildASTNodes());
270            }
271    
272            @Override
273            public void visit(WikipediaInterwikiLinkNode wikipediaInterwikiLinkNode) {
274            }
275    
276            @Override
277            public void visit(XWikiInterwikiLinkNode xWikiInterwikiLinkNode) {
278            }
279    
280            protected void traverse(List<ASTNode> astNodes) {
281                    if (astNodes != null) {
282                            for (ASTNode node : astNodes) {
283                                    node.accept(this);
284                            }
285                    }
286            }
287    
288    }