@Override public boolean equals( Object other ) { if ( !( other instanceof LayerRef ) ) { return false; } return name.equals( ( (LayerRef) other ).getName() ); }
private void cleanUpLayers( List<String> qlayers ) throws OWSException { ListIterator<LayerRef> lays = this.layers.listIterator(); ListIterator<StyleRef> stys = this.styles.listIterator(); while ( lays.hasNext() ) { String name = lays.next().getName(); stys.next(); if ( !qlayers.contains( name ) ) { lays.remove(); stys.remove(); } } if ( layers.isEmpty() ) { throw new OWSException( "An invalid combination of LAYERS and QUERY_LAYERS was specified.", "LayerNotDefined" ); } }
private Style findLegendStyle( LayerRef layer, StyleRef styleRef ) { Style style; style = service.themeMap.get( layer.getName() ).getLayerMetadata().getLegendStyles().get( styleRef.getName() ); if ( style == null ) { style = service.themeMap.get( layer.getName() ).getLayerMetadata().getStyles().get( styleRef.getName() ); } return style; }
if ( vals == null ) { for ( LayerRef l : layers ) { T val = defaults.getOption( l.getName() ); setter.setOption( l.getName(), val == null ? defaultVal : val ); if ( ss.length == layers.size() ) { for ( int i = 0; i < ss.length; ++i ) { T val = defaults.getOption( layers.get( i ).getName() ); try { setter.setOption( layers.get( i ).getName(), Enum.valueOf( enumType, ss[i].toUpperCase() ) ); } catch ( IllegalArgumentException e ) { setter.setOption( layers.get( i ).getName(), val == null ? defaultVal : val ); LOG.warn( "'{}' is not a valid value for '{}'. Using default value '{}' instead.", new Object[] { ss[i], enumType.getSimpleName(), val == null ? defaultVal : val } ); T val = defaults.getOption( layers.get( i ).getName() ); if ( ss.length <= i ) { setter.setOption( layers.get( i ).getName(), val == null ? defaultVal : val ); } else { try { setter.setOption( layers.get( i ).getName(), Enum.valueOf( enumType, ss[i].toUpperCase() ) ); } catch ( IllegalArgumentException e ) { setter.setOption( layers.get( i ).getName(), val == null ? defaultVal : val ); LOG.warn( "'{}' is not a valid value for '{}'. Using default value '{}' instead.", new Object[] { ss[i], enumType.getSimpleName(), val == null ? defaultVal : val } );
if ( maxFeatures == null ) { for ( LayerRef l : this.layers ) { Integer max = defaults.getMaxFeatures( l.getName() ); if ( max == null ) { max = 10000; LOG.debug( "Using global max features setting of {}.", max ); extensions.setMaxFeatures( l.getName(), max ); for ( int i = 0; i < mfs.length; ++i ) { LayerRef cur = this.layers.get( i ); Integer def = defaults.getMaxFeatures( cur.getName() ); try { Integer val = Integer.valueOf( mfs[i] ); extensions.setMaxFeatures( cur.getName(), def == null ? val : min( def, val ) ); } catch ( NumberFormatException e ) { LOG.info( "The value '{}' for MAX_FEATURES can not be parsed as a number.", mfs[i] ); extensions.setMaxFeatures( cur.getName(), def == null ? 10000 : def ); for ( int i = 0; i < mfs.length; ++i ) { LayerRef cur = this.layers.get( i ); Integer def = defaults.getMaxFeatures( cur.getName() ); if ( mfs.length <= i ) { try { Integer val = Integer.valueOf( mfs[i] ); extensions.setMaxFeatures( cur.getName(), def == null ? val : min( def, val ) ); } catch ( NumberFormatException e ) { LOG.info( "The value '{}' for MAX_FEATURES can not be parsed as a number.", mfs[i] ); extensions.setMaxFeatures( cur.getName(), def == null ? 10000 : def );
ft.remove(); } else { String name = lRef.getName(); LinkedList<Triple<LayerRef, StyleRef, OperatorFilter>> list = lays.get( name ); if ( list == null ) { LinkedList<Triple<LayerRef, StyleRef, OperatorFilter>> l = lays.get( lRef.getName() ); if ( l == null ) { throw new OWSException( "The SLD NamedLayer " + lRef.getName() + " is invalid.", "InvalidParameterValue", "layers" );
if ( layers.size() == 1 && layers.get( 0 ).getName().isEmpty() ) { layers.clear();
if ( layers.size() == 1 && layers.get( 0 ).getName().isEmpty() ) { layers.clear();
private List<LayerData> checkStyleValidAndBuildLayerDataList( org.deegree.protocol.wms.ops.GetMap gm, List<String> headers, double scale, ListIterator<LayerQuery> queryIter ) throws OWSException { List<LayerData> layerDataList = new ArrayList<LayerData>(); for ( LayerRef lr : gm.getLayers() ) { LayerQuery query = queryIter.next(); List<Layer> layers = getAllLayers( themeMap.get( lr.getName() ) ); assertStyleApplicableForAtLeastOneLayer( layers, query.getStyle(), lr.getName() ); for ( org.deegree.layer.Layer layer : layers ) { if ( layer.getMetadata().getScaleDenominators().first > scale || layer.getMetadata().getScaleDenominators().second < scale ) { continue; } if ( layer.isStyleApplicable( query.getStyle() ) ) { layerDataList.add( layer.mapQuery( query, headers ) ); } } } return layerDataList; }
List<String> layers = new ArrayList<String>(); for ( LayerRef layerRef : gm.getLayers() ) { layers.add( layerRef.getName() );
private void checkGetFeatureInfo( Version version, org.deegree.protocol.wms.ops.GetFeatureInfo gfi ) throws OWSException { if ( gfi.getInfoFormat() != null && !gfi.getInfoFormat().equals( "" ) && !featureInfoManager.getSupportedFormats().contains( gfi.getInfoFormat() ) ) { throw new OWSException( get( "WMS.INVALID_INFO_FORMAT", gfi.getInfoFormat() ), OWSException.INVALID_FORMAT ); } for ( LayerRef lr : gfi.getQueryLayers() ) { if ( !service.hasTheme( lr.getName() ) ) { throw new OWSException( "The layer with name " + lr.getName() + " is not defined.", "LayerNotDefined", "layers" ); } } for ( StyleRef sr : gfi.getStyles() ) { // TODO check style availability } try { if ( gfi.getCoordinateSystem() == null ) { // this can happen if some AUTO SRS id was invalid controllers.get( version ).throwSRSException( "automatic" ); } ICRS crs = gfi.getCoordinateSystem(); if ( crs instanceof CRSRef ) { ( (CRSRef) crs ).getReferencedObject(); } } catch ( ReferenceResolvingException e ) { // only throw an exception if a truly invalid srs is found // this makes it possible to request srs that are not advertised, which may be useful controllers.get( version ).throwSRSException( gfi.getCoordinateSystem().getAlias() ); } }
for ( LayerRef n : gfi.getQueryLayers() ) { LayerQuery query = queryIter.next(); for ( org.deegree.layer.Layer l : Themes.getAllLayers( themeMap.get( n.getName() ) ) ) { if ( l.getMetadata().getScaleDenominators().first > scale || l.getMetadata().getScaleDenominators().second < scale ) {
private LayerQuery buildQuery( StyleRef style, LayerRef lr, MapOptionsMaps options, List<MapOptions> mapOptions, OperatorFilter f, org.deegree.protocol.wms.ops.GetMap gm ) { for ( org.deegree.layer.Layer l : Themes.getAllLayers( themeMap.get( lr.getName() ) ) ) { insertMissingOptions( l.getMetadata().getName(), options, l.getMetadata().getMapOptions(), defaultLayerOptions ); mapOptions.add( options.get( l.getMetadata().getName() ) ); } LayerQuery query = new LayerQuery( gm.getBoundingBox(), gm.getWidth(), gm.getHeight(), style, f, gm.getParameterMap(), gm.getDimensions(), gm.getPixelSize(), options, gm.getQueryBox() ); return query; }