/** * Convenience method to pull a UserSyle from a StyledLayerDescriptor. * * <p>This method will return the first UserStyle it encounters in the StyledLayerDescriptor * tree. * * @param sld The StyledLayerDescriptor object. * @return The UserStyle, or <code>null</code> if no such style could be found. */ public static Style style(StyledLayerDescriptor sld) { for (int i = 0; i < sld.getStyledLayers().length; i++) { Style[] styles = null; if (sld.getStyledLayers()[i] instanceof NamedLayer) { NamedLayer layer = (NamedLayer) sld.getStyledLayers()[i]; styles = layer.getStyles(); } else if (sld.getStyledLayers()[i] instanceof UserLayer) { UserLayer layer = (UserLayer) sld.getStyledLayers()[i]; styles = layer.getUserStyles(); } if (styles != null) { for (int j = 0; j < styles.length; j++) { if (!(styles[j] instanceof NamedStyle)) { return styles[j]; } } } } return null; }
/** * Visit the SLD * * <p>Visit each layer. Construct temporary stores for inline features and remote OWS layers. * After visiting a layer, visit each style in that layer. In cases where the styled layer * references multiple layers, such as a named layer referencing a layer group, or remote OWS * user layer exposing multiple layers, visit each style for each of these sublayers instead. * * @param sld The sld the visitor is applied to * @throws UnsupportedOperationException, If the sld uses features not supported by GeoServer, * such as if an OWS service other than WFS is specified for a UserLayer * @throws IllegalStateException If the sld is somehow invalid, such as if there is a NamedLayer * without a name * @throws ServiceException if there was a problem accessing a remote OWS service * @throws UncheckedIOException if there is an underlying {@link IOException} when reading * {@link Style} objects from the catalog */ @Override public void visit(StyledLayerDescriptor sld) { if (sld.getStyledLayers().length == 0) { throw new IllegalStateException("SLD document contains no layers"); } super.visit(sld); }
StyledLayerDescriptor parse10( Object input, ResourceLocator resourceLocator, EntityResolver entityResolver) throws IOException { Reader reader = null; try { // we need to close the reader if we grab one, but if it's a file it has // to stay as such to allow relative resource resolution during the parse if (!(input instanceof File)) { reader = toReader(input); input = reader; } SLDParser p = createSld10Parser(input, resourceLocator, entityResolver); StyledLayerDescriptor sld = p.parseSLD(); if (sld.getStyledLayers().length == 0) { // most likely a style that is not a valid sld, try to actually parse out a // style and then wrap it in an sld Style[] style = p.readDOM(); if (style.length > 0) { NamedLayer l = styleFactory.createNamedLayer(); l.addStyle(style[0]); sld.addStyledLayer(l); } } return sld; } finally { IOUtils.closeQuietly(reader); } }
@Override public Void answer() throws Throwable { Object[] args = getCurrentArguments(); InputStream is = (InputStream) args[1]; byte[] input = IOUtils.toByteArray(is); SLDParser parser = new SLDParser(CommonFactoryFinder.getStyleFactory()); parser.setInput(new ByteArrayInputStream(input)); StyledLayerDescriptor sld = parser.parseSLD(); NamedLayer nl = (NamedLayer) sld.getStyledLayers()[0]; assertEquals("foo", nl.getName()); Style style = nl.getStyles()[0]; assertEquals( "A raster style", style.getDescription().getTitle().toString()); assertEquals(1, style.featureTypeStyles().size()); FeatureTypeStyle fts = style.featureTypeStyles().get(0); assertEquals(1, fts.rules().size()); assertThat( fts.rules().get(0).symbolizers().get(0), instanceOf(RasterSymbolizer.class)); // make sure it's valid SLDValidator validator = new SLDValidator(); List errors = validator.validateSLD(new ByteArrayInputStream(input)); assertEquals(0, errors.size()); return null; } });
StyledLayerDescriptor sld = parser.parseSLD(); NamedLayer nl = (NamedLayer) sld.getStyledLayers()[0]; assertEquals("foo", nl.getName()); Style style = nl.getStyles()[0];
/** * Get the Styles defined in the given StyledLayerDescriptor * * @param sld the StyledLayerDescriptor object * @return an array of Styles */ public static Style[] styles(StyledLayerDescriptor sld) { StyledLayer[] layers = sld.getStyledLayers(); List<Style> styles = new ArrayList<Style>(); for (int i = 0; i < layers.length; i++) { if (layers[i] instanceof UserLayer) { UserLayer layer = (UserLayer) layers[i]; styles.addAll(layer.userStyles()); } else if (layers[i] instanceof NamedLayer) { NamedLayer layer = (NamedLayer) layers[i]; styles.addAll(layer.styles()); } } return styles.toArray(new Style[0]); }
public void visit(StyledLayerDescriptor sld) { StyledLayer[] layers = sld.getStyledLayers(); for (int i = 0; i < layers.length; i++) { if (layers[i] instanceof NamedLayer) { ((NamedLayer) layers[i]).accept(this); } else if (layers[i] instanceof UserLayer) { ((UserLayer) layers[i]).accept(this); } } }
@Override public void visit(StyledLayerDescriptor sld) { for (StyledLayer sl : sld.getStyledLayers()) { if (sl instanceof UserLayer) { ((UserLayer) sl).accept(this); } else if (sl instanceof NamedLayer) { ((NamedLayer) sl).accept(this); } } }
public void visit(StyledLayerDescriptor sld) { StyledLayer[] layers = sld.getStyledLayers(); for (int i = 0; i < layers.length; i++) { if (layers[i] instanceof NamedLayer) { ((NamedLayer) layers[i]).accept(this); } else if (layers[i] instanceof UserLayer) { ((UserLayer) layers[i]).accept(this); } } }
assertNotNull(oldSld); assertEquals("Streams", oldSld.getStyledLayers()[0].getName()); assertEquals("Stream", newSld.getStyledLayers()[0].getName()); } finally {
public void visit(StyledLayerDescriptor sld) { StyledLayerDescriptor copy = null; StyledLayer[] layers = sld.getStyledLayers(); StyledLayer[] layersCopy = new StyledLayer[layers.length]; final int length = layers.length; for (int i = 0; i < length; i++) { if (layers[i] instanceof UserLayer) { ((UserLayer) layers[i]).accept(this); layersCopy[i] = (UserLayer) pages.pop(); } else if (layers[i] instanceof NamedLayer) { ((NamedLayer) layers[i]).accept(this); layersCopy[i] = (NamedLayer) pages.pop(); } } copy = sf.createStyledLayerDescriptor(); copy.setAbstract(sld.getAbstract()); copy.setName(sld.getName()); copy.setTitle(sld.getTitle()); copy.setStyledLayers(layersCopy); if (STRICT && !copy.equals(sld)) { throw new IllegalStateException("Was unable to duplicate provided SLD:" + sld); } pages.push(copy); }
/** * Reset builder to provided original stroke. * * @param stroke */ public StyledLayerDescriptorBuilder reset(StyledLayerDescriptor other) { if (other == null) { return unset(); } this.name = other.getName(); this.title = other.getTitle(); this.sldAbstract = other.getAbstract(); this.layers.clear(); for (StyledLayer layer : other.getStyledLayers()) { if (layer instanceof UserLayer) { layers.add(new UserLayerBuilder().reset((UserLayer) layer)); } else if (layer instanceof NamedLayer) { layers.add(new NamedLayerBuilder().reset((NamedLayer) layer)); } } unset = false; return this; }
for (int i = 0; i < sld.getStyledLayers().length; i++) { Style[] styles = null; if (sld.getStyledLayers()[i] instanceof NamedLayer) { NamedLayer layer = (NamedLayer) sld.getStyledLayers()[i]; styles = layer.getStyles(); } else if (sld.getStyledLayers()[i] instanceof UserLayer) { UserLayer layer = (UserLayer) sld.getStyledLayers()[i]; styles = layer.getUserStyles();
private static RasterSymbolizer extractRasterSymbolizer(StyledLayerDescriptor sld) { final UserLayer nl = (UserLayer) sld.getStyledLayers()[0]; final Style style = nl.getUserStyles()[0]; final FeatureTypeStyle fts = style.featureTypeStyles().get(0); final Rule rule = fts.rules().get(0); final RasterSymbolizer rs_1 = (RasterSymbolizer) rule.getSymbolizers()[0]; return rs_1; }
private static RasterSymbolizer extractRasterSymbolizer(StyledLayerDescriptor sld) { final UserLayer nl = (UserLayer) sld.getStyledLayers()[0]; final Style style = nl.getUserStyles()[0]; final FeatureTypeStyle fts = style.featureTypeStyles().get(0); final Rule rule = fts.rules().get(0); final RasterSymbolizer rs_1 = (RasterSymbolizer) rule.getSymbolizers()[0]; return rs_1; }
public void visit(StyledLayerDescriptor sld) { AttributesImpl atts = new AttributesImpl(); atts.addAttribute("", "version", "version", "", "1.0.0"); start("StyledLayerDescriptor", atts); if ((sld.getName() != null) && (sld.getName().length() > 0)) { element("Name", sld.getName()); // optional } if ((sld.getTitle() != null) && (sld.getTitle().length() > 0)) { element("Title", sld.getTitle()); // optional } if ((sld.getAbstract() != null) && (sld.getAbstract().length() > 0)) { element("Abstract", sld.getAbstract()); // optional } StyledLayer[] layers = sld.getStyledLayers(); for (int i = 0; i < layers.length; i++) { if (layers[i] instanceof NamedLayer) { visit((NamedLayer) layers[i]); } else if (layers[i] instanceof UserLayer) { visit((UserLayer) layers[i]); } else { throw new IllegalArgumentException( "StyledLayer '" + layers[i].getClass().toString() + "' not found"); } } end("StyledLayerDescriptor"); }
Style loadTestStyle() throws IOException { StyleFactory factory = CommonFactoryFinder.getStyleFactory(null); URL surl = TestData.getResource(this, "test-sld.xml"); SLDParser stylereader = new SLDParser(factory, surl); StyledLayerDescriptor sld = stylereader.parseSLD(); UserLayer layer = (UserLayer) sld.getStyledLayers()[0]; return layer.getUserStyles()[0]; }
((NamedLayer) style.getStyledLayers()[0]) .styles() .get(0)
final UserLayer nl = (UserLayer) sld.getStyledLayers()[0]; final Style style = nl.getUserStyles()[0]; final FeatureTypeStyle fts = style.getFeatureTypeStyles()[0];
private Style parseStyle(final String styleName) throws IOException { final SLDParser parser = new SLDParser(CommonFactoryFinder.getStyleFactory()); parser.setInput(RasterSymbolizerVisitorTest.class.getResource(styleName)); final StyledLayerDescriptor sld = parser.parseSLD(); final NamedLayer ul = (NamedLayer) sld.getStyledLayers()[0]; return ul.getStyles()[0]; } }