/* * Geotoolkit - An Open Source Java GIS Toolkit * http://www.geotoolkit.org * * (C) 2010, Geomatys * * This library 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; * version 2.1 of the License. * * This library 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 * Lesser General Public License for more details. */ package org.geotoolkit.sld.visitor; import java.util.List; import org.geotoolkit.style.visitor.DefaultStyleVisitor; import org.opengis.filter.Filter; import org.opengis.sld.Constraints; import org.opengis.sld.CoverageConstraint; import org.opengis.sld.CoverageExtent; import org.opengis.sld.Extent; import org.opengis.sld.FeatureTypeConstraint; import org.opengis.sld.InlineFeature; import org.opengis.sld.Layer; import org.opengis.sld.LayerCoverageConstraints; import org.opengis.sld.LayerFeatureConstraints; import org.opengis.sld.LayerStyle; import org.opengis.sld.NamedLayer; import org.opengis.sld.NamedStyle; import org.opengis.sld.RangeAxis; import org.opengis.sld.RemoteOWS; import org.opengis.sld.SLDLibrary; import org.opengis.sld.SLDVisitor; import org.opengis.sld.Source; import org.opengis.sld.StyledLayerDescriptor; import org.opengis.sld.UserLayer; import org.opengis.style.Style; /** * Abstract implementation of SLDVisitor that simply walks the data structure. * <p> * This class implements the full SLDVisitor interface and will visit every SLD member of a * SLD object. This class performs no actions and is not intended to be used directly, instead * extend it and override the methods for the SLD type you are interested in. Remember to call the * super method if you want to ensure that the entire sld tree is still visited. * * @author Johann Sorel (Geomatys) * @module */ public abstract class DefaultSLDVisitor extends DefaultStyleVisitor implements SLDVisitor { @Override public Object visit(final StyledLayerDescriptor sld, Object data) { final List<? extends Layer> layers = sld.layers(); if(layers != null){ for(Layer l : layers){ if(l instanceof NamedLayer){ data = ((NamedLayer)l).accept(this, data); }else if(l instanceof UserLayer){ data = ((UserLayer)l).accept(this, data); } } } final List<? extends SLDLibrary> libraries = sld.libraries(); if(libraries != null){ for(SLDLibrary lib : libraries){ data = lib.accept(this, data); } } return data; } @Override public Object visit(final SLDLibrary library, Object data) { final StyledLayerDescriptor sld = library.getSLD(); if(sld != null){ data = sld.accept(this, data); } return data; } @Override public Object visit(final NamedLayer layer, Object data) { final LayerFeatureConstraints lfc = layer.getConstraints(); if(lfc != null){ data = lfc.accept(this, data); } final List<? extends LayerStyle> styles = layer.styles(); if(styles != null){ for(LayerStyle ls : styles){ if(ls instanceof NamedStyle){ data = ((NamedStyle)ls).accept(this, data); }else if(ls instanceof Style){ data = ((Style)ls).accept(this, data); } } } return data; } @Override public Object visit(final UserLayer layer, Object data) { final Constraints csts = layer.getConstraints(); if(csts != null){ if(csts instanceof LayerCoverageConstraints){ data = ((LayerCoverageConstraints)csts).accept(this, data); }else if(csts instanceof LayerFeatureConstraints){ data = ((LayerFeatureConstraints)csts).accept(this, data); } } final Source src = layer.getSource(); if(src != null){ if(src instanceof RemoteOWS){ data = ((RemoteOWS)src).accept(this, data); }else if(src instanceof InlineFeature){ data = ((InlineFeature)src).accept(this, data); } } final List<? extends Style> styles = layer.styles(); if(styles != null){ for(Style style : styles){ data = style.accept(this, data); } } return data; } @Override public Object visit(final NamedStyle style, final Object data) { return data; } @Override public Object visit(final LayerCoverageConstraints constraints, Object data) { final List<? extends CoverageConstraint> lst = constraints.constraints(); if(lst != null){ for(CoverageConstraint gc : lst){ data = gc.accept(this, data); } } return data; } @Override public Object visit(final LayerFeatureConstraints constraints, Object data) { final List<? extends FeatureTypeConstraint> lst = constraints.constraints(); if(lst != null){ for(FeatureTypeConstraint ftc : lst){ data = ftc.accept(this, data); } } return data; } @Override public Object visit(final CoverageConstraint constraint, Object data) { final CoverageExtent extent = constraint.getCoverageExtent(); if(extent != null){ data = extent.accept(this, data); } return data; } @Override public Object visit(final FeatureTypeConstraint constraint, Object data) { final List<Extent> extents = constraint.getExtent(); if(extents != null){ for(Extent ext : extents){ data = ext.accept(this, data); } } final Filter filter = constraint.getFilter(); if(filter != null){ data = filter.accept(this, data); } return data; } @Override public Object visit(final CoverageExtent extent, Object data) { final List<RangeAxis> axis = extent.rangeAxis(); if(axis != null){ for(RangeAxis axi : axis){ data = axi.accept(this, data); } } return data; } @Override public Object visit(final Extent extent, final Object data) { return data; } @Override public Object visit(final RangeAxis axi, final Object data) { return data; } @Override public Object visit(final RemoteOWS ows, final Object data) { return data; } @Override public Object visit(final InlineFeature inline, final Object data) { return data; } }