    001/*
    002    Licensed to the Apache Software Foundation (ASF) under one
    003    or more contributor license agreements.  See the NOTICE file
    004    distributed with this work for additional information
    005    regarding copyright ownership.  The ASF licenses this file
    006    to you under the Apache License, Version 2.0 (the
    007    "License"); you may not use this file except in compliance
    008    with the License.  You may obtain a copy of the License at
    009
    010       http://www.apache.org/licenses/LICENSE-2.0
    011
    012    Unless required by applicable law or agreed to in writing,
    013    software distributed under the License is distributed on an
    014    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    015    KIND, either express or implied.  See the License for the
    016    specific language governing permissions and limitations
    017    under the License.
    018*/
    019package org.apache.wiki.htmltowiki.syntax;
    020
    021import org.apache.wiki.htmltowiki.SyntaxDecorator;
    022import org.apache.wiki.htmltowiki.WhitespaceTrimWriter;
    023import org.apache.wiki.htmltowiki.XHtmlElementToWikiTranslator;
    024import org.apache.wiki.htmltowiki.XHtmlToWikiConfig;
    025import org.jdom2.Element;
    026import org.jdom2.JDOMException;
    027import org.jdom2.Text;
    028
    029import java.io.PrintWriter;
    030import java.util.Deque;
    031import java.util.Map;
    032
    033
    034/**
    035 * <p>Base Syntax decorator which translates to JSPWiki syntax. Delegates each kind of XHTML element to its specific
    036 * decorator.</p>
    037 * <p>This class is useful when developing a new wiki syntax decorator - just extend from it and provide the implementations of all
    038 * the needed Decorators on the {@link SyntaxDecorator#init(PrintWriter, Deque, Deque, WhitespaceTrimWriter, XHtmlToWikiConfig, XHtmlElementToWikiTranslator)} method</p>
    039 */
    040public abstract class WikiSyntaxDecorator implements SyntaxDecorator {
    041
    042    protected ADecorator a;
    043    protected BrDecorator br;
    044    protected CodeDecorator code;
    045    protected DdDecorator dd;
    046    protected DlDecorator dl;
    047    protected DtDecorator dt;
    048    protected FormDecorator form;
    049    protected HrDecorator hr;
    050    protected H1Decorator h1;
    051    protected H2Decorator h2;
    052    protected H3Decorator h3;
    053    protected H4Decorator h4;
    054    protected ImageDecorator img;
    055    protected InputDecorator input;
    056    protected LiDecorator li;
    057    protected OlDecorator ol;
    058    protected OptionDecorator option;
    059    protected PDecorator p;
    060    protected PlainTextDecorator plainText;
    061    protected PlainTextBoldDecorator strong;
    062    protected PlainTextCssDecorator css;
    063    protected PlainTextCssSpecialDecorator cssStyle;
    064    protected PlainTextItalicDecorator em;
    065    protected PlainTextMonospaceDecorator pre;
    066    protected SelectDecorator select;
    067    protected StrikeDecorator strike;
    068    protected SubDecorator sub;
    069    protected SupDecorator sup;
    070    protected TableDecorator table;
    071    protected TbodyDecorator tbody;
    072    protected TdDecorator td;
    073    protected TextAreaDecorator textarea;
    074    protected TextElementDecorator textElement;
    075    protected ThDecorator th;
    076    protected TheadDecorator thead;
    077    protected TrDecorator tr;
    078    protected UlDecorator ul;
    079    protected UnderlineDecorator underline;
    080    protected WhitespaceTrimWriter outTrimmer;
    081    protected XHtmlElementToWikiTranslator chain;
    082    protected XHtmlToWikiConfig config;
    083
    084    /** {@inheritDoc} */
    085    @Override
    086    public void a( final Element e, final String ref ) throws JDOMException {
    087        a.decorate( e, ref );
    088    }
    089
    090    /** {@inheritDoc} */
    091    @Override
    092    public void aFootnote( final String text, final String ref ) {
    093        a.decorateFootnote( text, ref );
    094    }
    095
    096    /** {@inheritDoc} */
    097    @Override
    098    public void aUndefined( final Element e ) throws JDOMException {
    099        a.decorateUndefinedLink( e );
    100    }
    101
    102    /** {@inheritDoc} */
    103    @Override
    104    public void br( final Element base, final Element e ) throws JDOMException {
    105        br.decorate( base, e );
    106    }
    107
    108    /** {@inheritDoc} */
    109    @Override
    110    public void code( final Element e ) throws JDOMException {
    111        code.decorate( e );
    112    }
    113
    114    /** {@inheritDoc} */
    115    @Override
    116    public void dd( final Element e ) throws JDOMException {
    117        dd.decorate( e );
    118    }
    119
    120    /** {@inheritDoc} */
    121    @Override
    122    public void dl( final Element e ) throws JDOMException {
    123        dl.decorate( e );
    124    }
    125
    126    /** {@inheritDoc} */
    127    @Override
    128    public void dt( final Element e ) throws JDOMException {
    129        dt.decorate( e );
    130    }
    131
    132    /** {@inheritDoc} */
    133    @Override
    134    public void em( final Element e ) throws JDOMException {
    135        em.decorate( e );
    136    }
    137
    138    /** {@inheritDoc} */
    139    @Override
    140    public void form( final Element e ) throws JDOMException {
    141        form.decorate( e );
    142    }
    143
    144    /** {@inheritDoc} */
    145    @Override
    146    public void hr( final Element e ) throws JDOMException {
    147        hr.decorate( e );
    148    }
    149
    150    /** {@inheritDoc} */
    151    @Override
    152    public void h1( final Element e ) throws JDOMException {
    153        h1.decorate( e );
    154    }
    155
    156    /** {@inheritDoc} */
    157    @Override
    158    public void h2( final Element e ) throws JDOMException {
    159        h2.decorate( e );
    160    }
    161
    162    /** {@inheritDoc} */
    163    @Override
    164    public void h3( final Element e ) throws JDOMException {
    165        h3.decorate( e );
    166    }
    167
    168    /** {@inheritDoc} */
    169    @Override
    170    public void h4( final Element e ) throws JDOMException {
    171        h4.decorate( e );
    172    }
    173
    174    /** {@inheritDoc} */
    175    @Override
    176    public void image( final String src, final Map< String, Object > imageAttrs ) {
    177        img.decorate( src, imageAttrs );
    178    }
    179
    180    /** {@inheritDoc} */
    181    @Override
    182    public void img( final Element e ) {
    183        img.decorate( e );
    184    }
    185
    186    /** {@inheritDoc} */
    187    @Override
    188    public void input( final Element e ) throws JDOMException {
    189        input.decorate( e );
    190    }
    191
    192    /** {@inheritDoc} */
    193    @Override
    194    public void li( final Element base, final Element e ) throws JDOMException {
    195        li.decorate( base, e );
    196    }
    197
    198    /** {@inheritDoc} */
    199    @Override
    200    public void ol( final Element e ) throws JDOMException {
    201        ol.decorate( e );
    202    }
    203
    204    /** {@inheritDoc} */
    205    @Override
    206    public void option( final Element base, final Element e ) throws JDOMException {
    207        option.decorate( base, e );
    208    }
    209
    210    /** {@inheritDoc} */
    211    @Override
    212    public void p( final Element e ) throws JDOMException {
    213        p.decorate( e );
    214    }
    215
    216    /** {@inheritDoc} */
    217    @Override
    218    public void paragraph( final XHtmlElementToWikiTranslator.ElementDecoratorData dto ) throws JDOMException {
    219        plainText.decorate( dto );
    220    }
    221
    222    /** {@inheritDoc} */
    223    @Override
    224    public void pre( final Element e ) throws JDOMException {
    225        pre.decorate( e );
    226    }
    227
    228    /** {@inheritDoc} */
    229    @Override
    230    public void strong( final Element e ) throws JDOMException {
    231        strong.decorate( e );
    232    }
    233
    234    /** {@inheritDoc} */
    235    @Override
    236    public void table( final Element e ) throws JDOMException {
    237        table.decorate( e );
    238    }
    239
    240    /** {@inheritDoc} */
    241    @Override
    242    public void tbody( final Element e ) throws JDOMException {
    243        tbody.decorate( e );
    244    }
    245
    246    /** {@inheritDoc} */
    247    @Override
    248    public void td( final Element e ) throws JDOMException {
    249        td.decorate( e );
    250    }
    251
    252    /** {@inheritDoc} */
    253    @Override
    254    public void text( final Text element ) {
    255        textElement.decorate( element );
    256    }
    257
    258    /** {@inheritDoc} */
    259    @Override
    260    public void textarea( final Element e ) throws JDOMException {
    261        textarea.decorate( e );
    262    }
    263
    264    /** {@inheritDoc} */
    265    @Override
    266    public void th( final Element e ) throws JDOMException {
    267        th.decorate( e );
    268    }
    269
    270    /** {@inheritDoc} */
    271    @Override
    272    public void thead( final Element e ) throws JDOMException {
    273        thead.decorate( e );
    274    }
    275
    276    /** {@inheritDoc} */
    277    @Override
    278    public void tr( final Element e ) throws JDOMException {
    279        tr.decorate( e );
    280    }
    281
    282    /** {@inheritDoc} */
    283    @Override
    284    public void select( final Element e ) throws JDOMException {
    285        select.decorate( e );
    286    }
    287
    288    /** {@inheritDoc} */
    289    @Override
    290    public void strike( final Element e ) throws JDOMException {
    291        strike.decorate( e );
    292    }
    293
    294    /** {@inheritDoc} */
    295    @Override
    296    public void sub( final Element e ) throws JDOMException {
    297        sub.decorate( e );
    298    }
    299
    300    /** {@inheritDoc} */
    301    @Override
    302    public void sup( final Element e ) throws JDOMException {
    303        sup.decorate( e );
    304    }
    305
    306    /** {@inheritDoc} */
    307    @Override
    308    public void ul( final Element e ) throws JDOMException {
    309        ul.decorate( e );
    310    }
    311
    312    /** {@inheritDoc} */
    313    @Override
    314    public void underline( final Element e ) throws JDOMException {
    315        underline.decorate( e );
    316    }
    317
    318}