Class DuplicatingStyleVisitor

Object
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 Details

    • sf

      protected final StyleFactory sf
    • ff

      protected final FilterFactory ff
    • 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 Details

    • DuplicatingStyleVisitor

      public DuplicatingStyleVisitor()
    • DuplicatingStyleVisitor

      public DuplicatingStyleVisitor(StyleFactory styleFactory)
    • DuplicatingStyleVisitor

      public DuplicatingStyleVisitor(StyleFactory styleFactory, FilterFactory filterFactory)
    • 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 Details

    • 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 ExternalGraphic copy(ExternalGraphic externalGraphic)
    • copy

      protected Mark copy(Mark mark)
    • copy

      protected ColorMapEntry copy(ColorMapEntry entry)
    • copy

      protected Symbolizer copy(Symbolizer symbolizer)
    • copy

      protected OverlapBehavior copy(OverlapBehavior ob)
    • copy

      protected ContrastEnhancement copy(ContrastEnhancement contrast)
    • copy

      protected ColorMap copy(ColorMap colorMap)
    • copy

      protected SelectedChannelType[] copy(SelectedChannelType... channels)
    • copy

      protected SelectedChannelType copy(SelectedChannelType selectedChannelType)
    • copy

      protected ChannelSelection copy(ChannelSelection channelSelection)
    • 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 LabelPlacement copy(LabelPlacement placement)
    • copy

      protected Symbol copy(Symbol symbol)
    • 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
    • copy

      protected Extent[] copy(Extent... extents)
    • copy

      protected Extent copy(Extent extent)
    • 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
    • visit

      public void visit(ContrastEnhancement contrastEnhancement)
      Description copied from interface: StyleVisitor
      Called when accept is called on a raster ContrastEnhancement element
      Specified by:
      visit in interface StyleVisitor
      Parameters:
      contrastEnhancement - the ContrastEnhancement to visit.
    • visit

      public void visit(ImageOutline outline)
      Description copied from interface: StyleVisitor
      Called when accept is called on a raster ImageOutline element
      Specified by:
      visit in interface StyleVisitor
      Parameters:
      outline - the ImageOutline to visit.
    • visit

      public void visit(ChannelSelection cs)
      Description copied from interface: StyleVisitor
      Called when accept is called on a raster ChannelSelection element
      Specified by:
      visit in interface StyleVisitor
      Parameters:
      cs - the ChannelSelection to visit.
    • visit

      public void visit(OverlapBehavior ob)
      Description copied from interface: StyleVisitor
      Called when accept is called on a raster OverlapBehaviorEnum element
      Specified by:
      visit in interface StyleVisitor
      Parameters:
      ob - the OverlapBehaviorEnum to visit.
    • visit

      public void visit(SelectedChannelType sct)
      Description copied from interface: StyleVisitor
      Called when accept is called on a raster SelectedChannelType element
      Specified by:
      visit in interface StyleVisitor
      Parameters:
      sct - the SelectedChannelType to visit.
    • visit

      public void visit(ShadedRelief sr)
      Description copied from interface: StyleVisitor
      Called when accept is called on a raster ShadedRelief element
      Specified by:
      visit in interface StyleVisitor
      Parameters:
      sr - the ShadedRelief to visit.