private Theme buildAutoTheme( Layer layer ) { LayerMetadata md = new LayerMetadata( null, null, null ); LayerMetadata lmd = layer.getMetadata(); md.merge( lmd ); md.setDimensions( new LinkedHashMap<String, Dimension<?>>( lmd.getDimensions() ) ); md.setStyles( new LinkedHashMap<String, Style>( lmd.getStyles() ) ); md.setLegendStyles( new LinkedHashMap<String, Style>( lmd.getLegendStyles() ) ); return new StandardTheme( md, Collections.<Theme> emptyList(), singletonList( layer ), metadata ); }
private Map<String, Layer> collectConfiguredRemoteLayers( Map<String, LayerMetadata> configured ) { Map<String, Layer> map = new LinkedHashMap<String, Layer>(); RequestOptionsType opts = cfg.getRequestOptions(); List<LayerMetadata> layers = client.getLayerTree().flattenDepthFirst(); for ( LayerMetadata md : layers ) { String name = md.getName(); LayerMetadata confMd = configured.get( name ); if ( confMd != null ) { confMd.merge( md ); confMd.setStyles( md.getStyles() ); confMd.setLegendStyles( md.getLegendStyles() ); map.put( confMd.getName(), new RemoteWMSLayer( name, confMd, client, opts ) ); } } return map; }
private void writeThemes( XMLStreamWriter writer, List<Theme> themes ) throws XMLStreamException { if ( themes.size() == 1 ) { themeWriter.writeTheme( writer, themes.get( 0 ) ); } else { // synthetic root layer needed writer.writeStartElement( "Layer" ); writeElement( writer, "Title", "Root" ); // TODO think about a push approach instead of a pull approach LayerMetadata lmd = null; for ( Theme t : themes ) { for ( org.deegree.layer.Layer l : Themes.getAllLayers( t ) ) { if ( lmd == null ) { lmd = l.getMetadata(); } else { lmd.merge( l.getMetadata() ); } } } if ( lmd != null ) { SpatialMetadata smd = lmd.getSpatialMetadata(); writeSrsAndEnvelope( writer, smd.getCoordinateSystems(), smd.getEnvelope() ); } for ( Theme t : themes ) { themeWriter.writeTheme( writer, t ); } writer.writeEndElement(); } }
/** * Returns the combined layer metadata for the given theme/sublayers. * * @see LayerMetadata#merge(LayerMetadata) * * @param theme * must not be <code>null</code> * @return combined layer metadata, never <code>null</code> */ LayerMetadata merge( final Theme theme ) { final LayerMetadata themeMetadata = theme.getLayerMetadata(); LayerMetadata layerMetadata = new LayerMetadata( null, null, null ); int queryable = 0; boolean opaque = false; int cascaded = 0; for ( final Layer l : Themes.getAllLayers( theme ) ) { queryable |= analyseQueryable( l.getMetadata() ); if ( checkIfOpaque( l.getMetadata() ) ) opaque = true; if ( checkIfLargerCascadedValue( cascaded, l.getMetadata() ) ) cascaded = l.getMetadata().getCascaded(); layerMetadata.merge( l.getMetadata() ); } themeMetadata.merge( layerMetadata ); adjustMapOptions( themeMetadata, queryable, opaque, cascaded ); return themeMetadata; }