001
002/*
003 * Copyright (C) 2010 Archie L. Cobbs. All rights reserved.
004 *
005 * $Id$
006 */
007
008package org.dellroad.jibxbindings.pidf.lo.gml;
009
010/**
011 * Adapter class for the {@link GMLObjectSwitch} interface.
012 */
013public class AbstractGMLObjectSwitch implements GMLObjectSwitch {
014
015    protected AbstractGMLObjectSwitch() {
016    }
017
018    /**
019     * {@inheritDoc}
020     *
021     * <p>
022     * The implementation in {@link AbstractGMLObjectSwitch} delegates to {@link #caseDefault}.
023     * </p>
024     */
025    @Override
026    public void casePoint(Point point) {
027        caseDefault(point);
028    }
029
030    /**
031     * {@inheritDoc}
032     *
033     * <p>
034     * The implementation in {@link AbstractGMLObjectSwitch} delegates to {@link #caseSurface}.
035     * </p>
036     */
037    @Override
038    public void casePolygon(Polygon polygon) {
039        caseSurface(polygon);
040    }
041
042    /**
043     * {@inheritDoc}
044     *
045     * <p>
046     * The implementation in {@link AbstractGMLObjectSwitch} delegates to {@link #caseSurface}.
047     * </p>
048     */
049    @Override
050    public void caseCircle(Circle circle) {
051        caseSurface(circle);
052    }
053
054    /**
055     * {@inheritDoc}
056     *
057     * <p>
058     * The implementation in {@link AbstractGMLObjectSwitch} delegates to {@link #caseSurface}.
059     * </p>
060     */
061    @Override
062    public void caseEllipse(Ellipse ellipse) {
063        caseSurface(ellipse);
064    }
065
066    /**
067     * {@inheritDoc}
068     *
069     * <p>
070     * The implementation in {@link AbstractGMLObjectSwitch} delegates to {@link #caseSurface}.
071     * </p>
072     */
073    @Override
074    public void caseArcBand(ArcBand arcBand) {
075        caseSurface(arcBand);
076    }
077
078    /**
079     * {@inheritDoc}
080     *
081     * <p>
082     * The implementation in {@link AbstractGMLObjectSwitch} delegates to {@link #caseSolid}.
083     * </p>
084     */
085    @Override
086    public void caseSphere(Sphere sphere) {
087        caseSolid(sphere);
088    }
089
090    /**
091     * {@inheritDoc}
092     *
093     * <p>
094     * The implementation in {@link AbstractGMLObjectSwitch} delegates to {@link #caseSolid}.
095     * </p>
096     */
097    @Override
098    public void caseEllipsoid(Ellipsoid ellipsoid) {
099        caseSolid(ellipsoid);
100    }
101
102    /**
103     * {@inheritDoc}
104     *
105     * <p>
106     * The implementation in {@link AbstractGMLObjectSwitch} delegates to {@link #caseSolid}.
107     * </p>
108     */
109    @Override
110    public void casePrism(Prism prism) {
111        caseSolid(prism);
112    }
113
114    /**
115     * {@inheritDoc}
116     *
117     * <p>
118     * The implementation in {@link AbstractGMLObjectSwitch} delegates to {@link #caseDefault}.
119     * </p>
120     */
121    @Override
122    public void caseLineString(LineString lineString) {
123        caseDefault(lineString);
124    }
125
126    /**
127     * {@inheritDoc}
128     *
129     * <p>
130     * The implementation in {@link AbstractGMLObjectSwitch} delegates to {@link #caseDefault}.
131     * </p>
132     */
133    @Override
134    public void caseLinearRing(LinearRing linearRing) {
135        caseDefault(linearRing);
136    }
137
138    /**
139     * Roll-up method for {@link Surface} subclasses.
140     *
141     * <p>
142     * The implementation in {@link AbstractGMLObjectSwitch} delegates to {@link #caseDefault}.
143     * </p>
144     */
145    protected void caseSurface(Surface surface) {
146        caseDefault(surface);
147    }
148
149    /**
150     * Roll-up method for {@link Solid} subclasses.
151     *
152     * <p>
153     * The implementation in {@link AbstractGMLObjectSwitch} delegates to {@link #caseDefault}.
154     * </p>
155     */
156    protected void caseSolid(Solid solid) {
157        caseDefault(solid);
158    }
159
160    /**
161     * Roll-up method for all cases.
162     *
163     * <p>
164     * The implementation in {@link AbstractGMLObjectSwitch} does nothing.
165     * </p>
166     */
167    protected void caseDefault(GMLObject object) {
168    }
169}
170