Class DuplicatingStyleVisitor

  • All Implemented Interfaces:
    StyleVisitor
    Direct Known Subclasses:
    ChannelSelectionUpdateStyleVisitor, RenderingSelectorStyleVisitor, RescaleStyleVisitor, UomRescaleStyleVisitor

    public class DuplicatingStyleVisitor
    extends Object
    implements StyleVisitor
    Creates a deep copy of a Style, this class is *NOT THREAD SAFE*.

    This class makes use of an internal stack to story the copied result, retrieve with a call to getCopy() after visiting:

    
     DuplicatingStyleVisitor copyStyle = new DuplicatingStyleVisitor();
     rule.accepts( copyStyle );
     Rule rule = (Rule) copyStyle.getCopy();
     

    This class is often used as a base for an anoymous subclass where a style transformation is needed (such as removing PointSymbolizers or changing the scale - see RescaleStyleVisitor for an example).

    Author:
    Jesse Eichar
    • Field Detail

      • STRICT

        protected boolean STRICT
      • copyFilter

        protected final DuplicatingFilterVisitor copyFilter
        We are using aggregation here to contain our DuplicatingFilterVisitor.
      • pages

        protected Stack<Object> pages
        This is our internal stack; used to maintain state as we copy sub elements.
    • Constructor Detail

      • DuplicatingStyleVisitor

        public DuplicatingStyleVisitor()
      • DuplicatingStyleVisitor

        public DuplicatingStyleVisitor​(StyleFactory styleFactory)
      • DuplicatingStyleVisitor

        public DuplicatingStyleVisitor​(StyleFactory styleFactory,
                                       FilterFactory filterFactory,
                                       DuplicatingFilterVisitor filterCloner)
        Builds a new duplicating style visitor using a custom DuplicatingStyleVisitor
        Parameters:
        styleFactory - Creates new style objects during style duplication
        filterFactory - Creates new filters and expressions during style duplication
        filterCloner - Copies filters during style duplication
    • Method Detail

      • setStrict

        public void setStrict​(boolean strict)
        True if we should enforce equality after a copy.
      • getCopy

        public Object getCopy()
      • visit

        public void visit​(StyledLayerDescriptor sld)
        Description copied from interface: StyleVisitor
        Called when accept is called on a StyledLayerDescriptor.
        Specified by:
        visit in interface StyleVisitor
        Parameters:
        sld - The StyledLayerDescriptor to visit
      • visit

        public void visit​(NamedLayer layer)
        Description copied from interface: StyleVisitor
        Called when accept is called on a NamedLayer.
        Specified by:
        visit in interface StyleVisitor
        Parameters:
        layer - The NamedLayer to visit
      • visit

        public void visit​(UserLayer layer)
        Description copied from interface: StyleVisitor
        Called when accept is called on a UserLayer.
        Specified by:
        visit in interface StyleVisitor
        Parameters:
        layer - The UserLayer to visit
      • visit

        public void visit​(Style style)
        Description copied from interface: StyleVisitor
        Called when accept is called on a Style.
        Specified by:
        visit in interface StyleVisitor
        Parameters:
        style - The style to visit
      • visit

        public void visit​(Rule rule)
        Description copied from interface: StyleVisitor
        Called when accept is called on a rule
        Specified by:
        visit in interface StyleVisitor
        Parameters:
        rule - the rule to visit
      • visit

        public void visit​(FeatureTypeStyle fts)
        Description copied from interface: StyleVisitor
        Called when accept is called on a fetauretypestyle
        Specified by:
        visit in interface StyleVisitor
        Parameters:
        fts - the feature type styler to visit
      • copyExpressions

        protected List<Expression> copyExpressions​(List<Expression> expressions)
        Copy list of expressions.
        Returns:
        copy of expressions or null if list was null
      • copy

        protected Expression copy​(Expression expression)
        Null safe expression copy.

        This method will perform a null check, and save you some lines of code:

        
         copy.setBackgroundColor( copyExpr( fill.getColor()) );
         
        Returns:
        copy of expression or null if expression was null
      • copy

        protected Filter copy​(Filter filter)
        Null safe copy of filter.
      • copy

        protected Graphic copy​(Graphic graphic)
        Null safe graphic copy
        Returns:
        copy of graphic or null if not provided
      • copy

        protected Fill copy​(Fill fill)
        Null safe fill copy
        Returns:
        copy of graphic or null if not provided
      • copy

        protected float[] copy​(float[] array)
        Null safe copy of float array.
        Returns:
        copy of array or null if not provided
      • copy

        protected <K,​V> Map<K,​V> copy​(Map<K,​V> customProperties)
        Null safe map copy, used for external graphic custom properties.
        Returns:
        copy of map
      • copy

        protected Stroke copy​(Stroke stroke)
        Null safe copy of stroke.
        Returns:
        copy of stroke if provided
      • copy

        protected ShadedRelief copy​(ShadedRelief shaded)
        Null safe copy of shaded relief.
        Returns:
        copy of shaded or null if not provided
      • copy

        protected Description copy​(Description desc)
        Null safe copy of description
        Returns:
        copy of shaded or null if not provided
      • copy

        protected Mark copy​(Mark mark)
      • copyFonts

        protected List<Font> copyFonts​(List<Font> fonts)
        Null safe copy of font list.

        Right now style visitor does not let us visit fonts!

        Returns:
        copy of provided fonts
      • copy

        protected Font copy​(Font font)
        Null safe copy of a single font
      • copy

        protected Halo copy​(Halo halo)
        Null safe copy of halo.
        Returns:
        copy of halo if provided
      • copy

        protected Displacement copy​(Displacement displacement)
        Null safe copy of displacement.
        Returns:
        copy of displacement if provided
      • copy

        protected AnchorPoint copy​(AnchorPoint anchorPoint)
        Null safe copy of anchor point.
        Returns:
        copy of anchor point if provided
      • visit

        public void visit​(Fill fill)
        Description copied from interface: StyleVisitor
        Called when accept is called on a fill
        Specified by:
        visit in interface StyleVisitor
        Parameters:
        fill - the fill to be visited
      • visit

        public void visit​(Stroke stroke)
        Description copied from interface: StyleVisitor
        Called when accept is called on a stroke
        Specified by:
        visit in interface StyleVisitor
        Parameters:
        stroke - the stroke to visit
      • visit

        public void visit​(Symbolizer sym)
        Description copied from interface: StyleVisitor
        since it is impossible to create a Symbolizer this method should generate an exception or warning.
        Specified by:
        visit in interface StyleVisitor
        Parameters:
        sym - the symbolizer to visit
      • visit

        public void visit​(PointSymbolizer ps)
        Description copied from interface: StyleVisitor
        Called when accept is called on a pointsymbolizer
        Specified by:
        visit in interface StyleVisitor
        Parameters:
        ps - the point symbolizer to visit
      • visit

        public void visit​(LineSymbolizer line)
        Description copied from interface: StyleVisitor
        Called when accept is called on a linesymbolizer
        Specified by:
        visit in interface StyleVisitor
        Parameters:
        line - the line symbolizer to visit
      • visit

        public void visit​(PolygonSymbolizer poly)
        Description copied from interface: StyleVisitor
        Called when accept is called on a polygon symbolizer
        Specified by:
        visit in interface StyleVisitor
        Parameters:
        poly - the polygon symbolizer to visit
      • visit

        public void visit​(TextSymbolizer text)
        Description copied from interface: StyleVisitor
        Called when accept is called on a textsymbolizer
        Specified by:
        visit in interface StyleVisitor
        Parameters:
        text - the text symbolizer to visit
      • visit

        public void visit​(RasterSymbolizer raster)
        Description copied from interface: StyleVisitor
        Called when accept is called on a rastersymbolizer
        Specified by:
        visit in interface StyleVisitor
        Parameters:
        raster - the raster symbolizer to visit
      • visit

        public void visit​(Graphic gr)
        Description copied from interface: StyleVisitor
        Called when accept is called on a graphic
        Specified by:
        visit in interface StyleVisitor
        Parameters:
        gr - the graphic to visit
      • visit

        public void visit​(Mark mark)
        Description copied from interface: StyleVisitor
        Called when accept is called on a mark
        Specified by:
        visit in interface StyleVisitor
        Parameters:
        mark - the mark to visit
      • visit

        public void visit​(ExternalGraphic exgr)
        Description copied from interface: StyleVisitor
        Called when accept is called on an external graphic
        Specified by:
        visit in interface StyleVisitor
        Parameters:
        exgr - the external graphic to visit
      • visit

        public void visit​(PointPlacement pp)
        Description copied from interface: StyleVisitor
        Called when accept is called on a Point Placement
        Specified by:
        visit in interface StyleVisitor
        Parameters:
        pp - the point placement to visit
      • visit

        public void visit​(AnchorPoint ap)
        Description copied from interface: StyleVisitor
        Called when accept is called on an anchor point
        Specified by:
        visit in interface StyleVisitor
        Parameters:
        ap - the anchor point to visit
      • visit

        public void visit​(Displacement dis)
        Description copied from interface: StyleVisitor
        Called when accept is called on a displacement
        Specified by:
        visit in interface StyleVisitor
        Parameters:
        dis - the displacement to visit
      • visit

        public void visit​(LinePlacement lp)
        Description copied from interface: StyleVisitor
        Called when accept is called on a Line Placement
        Specified by:
        visit in interface StyleVisitor
        Parameters:
        lp - the line placement to visit
      • visit

        public void visit​(Halo halo)
        Description copied from interface: StyleVisitor
        Called when accept is called on a halo
        Specified by:
        visit in interface StyleVisitor
        Parameters:
        halo - the halo to visit
      • visit

        public void visit​(FeatureTypeConstraint ftc)
        Description copied from interface: StyleVisitor
        Called when accept is called on a FeatureTypeConstraint.
        Specified by:
        visit in interface StyleVisitor
        Parameters:
        ftc - The FeatureTypeConstraint to visit
      • visit

        public void visit​(ColorMap colorMap)
        Description copied from interface: StyleVisitor
        Called when accept is called on a raster color map
        Specified by:
        visit in interface StyleVisitor
        Parameters:
        colorMap - the color map to visit
      • visit

        public void visit​(ColorMapEntry colorMapEntry)
        Description copied from interface: StyleVisitor
        Called when accept is called on a raster color map entry
        Specified by:
        visit in interface StyleVisitor
        Parameters:
        colorMapEntry - the color map to visit